request對象、session對象

一、實驗目的

實驗3_1的目的是掌握怎樣在JSP中使用內置對象request。
實驗3_2的目的是掌握怎樣使用session對象存儲和用戶有關的數據。

二、實驗步驟

**實驗3_1:**編寫一個JSP頁面input.jsp,該頁面提供一個表單,用戶可以通過表單輸人兩個數和四則運算符號提交給該頁面。用戶提交表單後,JSP頁面input.jsp將計算任務交給另一個JSP頁面result.jsp去完成。
input.jsp的具體要求:
input.jsp頁面提供一一個表單,要求表單中提供兩個text輸人框,供用戶輸入數字;提
供一個下拉列表,該下拉列表有加、減、乘、除四個選項,供用戶選擇運算符號。用戶在表單中輸人的數字、選擇運算符號提交給result.jsp頁面。
result.jsp的具體要求:
要求result.jsp頁面獲取input.jsp提交的數據,並計算出相應的結果顯示給用戶。

**實驗3_2:**本實驗編寫3個JSP頁面login.jsp,show.jsp和exit.jsp。login.jsp頁面提供-一個表單,用戶可以通過表單輸人姓名提交給login.jsp頁面,login.jsp頁面將用戶的姓名存放到用戶的session(會話)中。如果用戶鏈接到show.jsp頁面,該頁面將檢查用戶的session中是否存放了姓名,否則就將用戶重新定向到login頁面;如果用戶鏈接到exit.jsp頁面,exit.jsp將銷燬用戶的session。

login.jsp的具體要求:
login.jsp頁面提供-一個表單,要求表單中提供一個text 輸入框,供用戶輸入名字提交給當前頁面,login.jsp頁面將用戶輸人的名字存放到用戶的session(會話)中。
show.jsp的具體要求:
要求show.jsp頁面可以顯示一幅圖像。但前提條件是,用戶事先必須在session中存放有名字,否則無法看到圖像,而且還會被重新定向到login.jsp頁面。
exit.jsp的具體要求:
用戶一旦訪問exit.jsp頁面,用戶的session對象將被銷燬,用戶必須重新訪問其他的頁面獲得新的session。

三、參考代碼

實驗3_1
input.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html ><body bgcolor =yellow > 
	<form action ="result.jsp" method =post name =form >
	    輸入運算符、選擇運算符號: <br > 
	 <input type =text name ="numberOne" size =6 >
 		<select name ="operator" > 
 			<Option value ="+" ><Option value ="-" ><Option value ="*" ><Option value ="/" ></select > 
	<input type =text name ="numberTwo" size =6 >
 	<br >< input type ="submit" value =" 提交" name ="submit" >
</form ></body ></html >

result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html ><body bgcolor =green >
<%
	String numberOne=request.getParameter( "numberOne" );
	String numberTwo=request.getParameter( "numberTwo" );
	String operator=request.getParameter( "operator" );
	if (numberOne== null ){
		numberOne= "0" ; 
	}
	if (numberTwo== null ){
	numberTwo= "0" ; 
	}
	try {
		double a=Double.parseDouble(numberOne);
		double b=Double.parseDouble(numberTwo);
		double r=0;
		if (operator.equals( "+" ))
			r=a+b;
		else if (operator.equals( "-" ))
			r=a-b;
		else if (operator.equals( "*" ))
			r=a*b;
		else if (operator.equals( "/" ))
			r=a/b;
		out.println(a+ "" +operator+ "" +b+ "=" +r);
		}
	catch (Exception e){
		out.println( " 請輸入數字字符! " );
	} 
%>
</body ></html >

實驗3_2:
login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
	<a href=login.jsp> 登錄</a>
	<a href=show.jsp> 看圖</a>
	<a href=exit.jsp> 退出</a>
</head>
<html><body bgcolor = yellow>
<form action="" method=post name=form>
	輸入名字就算登錄了:<br>
	<input type=text name="name" size=6>
	<br><input type="submit" value=" 提交" name="submit">
</form>
</body></html>
<% String name=request.getParameter("name");
	if(name==null)
		name="";
	session.setAttribute("login_name",name);
%>

Show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
	<a href=login.jsp> 登錄</a>
	<a href=show.jsp> 看圖</a>
	<a href=exit.jsp> 退出</a>
</head>
<html><body>
<%
	String name=(String)session.getAttribute("login_name");
	if(name==null||name.length()==0){
		response.sendRedirect("login.jsp");
	}
%>
<img src="image/back1.jpg"
width=200 height=178></img>
</body></html>

exit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<head>
	<a href=login.jsp> 登錄</a>
	<a href=show.jsp> 看圖</a>
	<a href=exit.jsp> 退出</a>
</head>
<html><body>
<%
	session.invalidate();
%>
  <b>session 會話失敗</b>
</body>
</html>

四、實驗結果

實驗3_1:
input.jsp 頁面:
在這裏插入圖片描述
驗證加法:
在這裏插入圖片描述

提交後結果:
在這裏插入圖片描述

驗證減法:
在這裏插入圖片描述
提交後結果:
在這裏插入圖片描述

驗證乘法:
在這裏插入圖片描述

提交後結果:
在這裏插入圖片描述

驗證除法:
在這裏插入圖片描述

提交後結果:
在這裏插入圖片描述

異常處理:
在這裏插入圖片描述
提交後結果:
在這裏插入圖片描述

實驗3_2:
Login.jsp頁面:
在這裏插入圖片描述

輸入姓名提交 :
在這裏插入圖片描述
提交後:
在這裏插入圖片描述
點擊看圖:
在這裏插入圖片描述
點擊退出:
在這裏插入圖片描述

五、討論

1.HTTP通信協議是用戶與服務器之間一種提交(請求)信息與響應信息(request/response)的通信協議。在JSP中,內置對象request封裝了用戶提交的信息,request對象獲取用戶提交信息的最常用的方法是getParameter(Strings);內置對象response對象對用戶的請求作出動態響應,向用戶端發送數據。
2.HTTP協議是一種無狀態協議。一個用戶向服務器發出請求(request),然後服務器返回響應(response) ,但不記憶連接的有關信息。所以,Tomcat 服務器必須使用內置session對象(會話)記錄有關連接的信息。同一個用戶在某個Web服務目錄中的session是相同的;同一個用戶在不同的Web服務目錄中的session是互不相同的;不同用戶的session是互不相同的。
3.一個用戶在某個Web服務目錄的session對象的生存期限依賴於用戶是否關閉瀏覽器、session對象是否調用invalidate()方法使得session無效或session對象是否達到了設置的最長的“發呆”狀態時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章