JavaEE(1)——常用內建物件
阿新 • • 發佈:2018-12-13
1 實驗目的
- 掌握如何獲得
請求引數
; - 瞭解如何通過
請求物件
獲得客戶資訊; - 重點掌握
request
物件、session
物件、application
物件的用法; - 重點掌握使用請求物件
儲存資料
和請求轉發
。
2 實驗原理
2.1 request 物件
request物件封裝了伺服器資訊(如埠號、真實路徑及訪問協議等)、客戶端使用者請求資訊等。通過request物件可以獲取伺服器資訊
及客戶端請求資訊
等。
2.2 session 物件
在Web中,session
物件有兩個含義:
- 代表一種生命週期,指使用者在瀏覽某個網站時,從進入網站到瀏覽器關閉這段時間,也就是使用者瀏覽網站所花費的這段時間;
- 容器性的內建物件,有伺服器為使用者自動建立,為使用者都享,常用來存放session生命週期中的有關資訊。
2.3 application 物件
application物件儲存著Web應用執行期間的全域性資料和資訊,從Web應用開始執行,該物件就被建立,在整個Web應用執行期間可以在任何JSP頁面中訪問這個物件,如果要儲存整個Web應用執行期間都可以訪問的資料,就要用到application物件。
3 實驗內容與步驟
3.1 表單傳參
編寫使用者表單JSP程式,顯示使用者表單傳遞結果。
3.1.1 編寫 req_form.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'req_form.jsp' starting page</title>
</head>
<body>
<form action="req_recv.jsp" method="post">
<table border="1">
<tr><td>使用者名稱:</td><td><input type="text" name="name" ></td></tr>
<tr><td>密 碼:</td><td><input type="password" name="password"></td></tr>
<tr><td colspan="2">
<input type="checkbox" name="hobby" value="騎車">騎自行車
<input type="checkbox" name="hobby" value="駕車">駕駛小汽車
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交">
<input type="reset" value="取消">
</td>
</tr>
</table>
</form>
</body>
</html>
3.1.2 編寫req_recv.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.Enumeration" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>request物件測試</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String parameterName=null;
String[] parameterValue=null;
%>
<p>使用request.getParameter("name")獲取表單所有引數</p>
<%
out.println(request.getParameter("name"));
%>
<p>使用request.getParameterNames("name")獲取表單所有引數</p>
<%
Enumeration en=request.getParameterNames();
int j=0;
while(en.hasMoreElements()){
parameterName=(String)en.nextElement();
parameterValue=request.getParameterValues(parameterName);
out.println("表單引數名稱:" + parameterName + "=");
%>
<%
for(int i=0;i<parameterValue.length;i++){
%>
<%=parameterValue[i] %>
<%} %><br/>
<% } %>
</body>
</html>
3.1.3 使用類似下面的URL訪問之
將出現如圖2-1所示表單介面。
圖2-1 單擊提交按鈕,彈出圖2 -2所示介面。
圖2-2
3.2 模擬使用者登入
模擬一個使用者登入動作,在這個實驗中,不對使用者提交資訊作登入驗證,只要使用者名稱和密碼不為空即可登入。
登入時將使用者資訊儲存在session
物件中(這樣處理只是方便說明session物件的用法,具體開發中必須對登入資訊進行資料庫驗證)。
編寫3個JSP程式login.jsp
、loginCheck.jsp
、main.jsp
,程式功能分別是:
- 進行使用者登入
- 登入資訊處理
- 登入後工作頁面中獲取儲存在session中的使用者資訊。
3.2.1 編寫login.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>使用者登入介面</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<font size="2">
<form action="loginCheck.jsp" method="post">
使用者名稱:<input type="text" name="userName" size="10"/><br>
密 碼:<input type="password" name="passWord" size="10"/><br></font>
<font size="1">(提交後,使用者名稱將被存入session中)</font><br>
<input type="submit" value="提交">
</form>
</body>
</html>
3.2.2 編寫loginCheck.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>使用者登入驗證頁面</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<%
request.setCharacterEncoding("UTF-8");
String userName=request.getParameter("userName");
String passWord=request.getParameter("passWord");
if(userName.length()>0 && passWord.length()>0){
session.setAttribute("uname", userName);
response.sendRedirect("main.jsp");
}else{
response.sendRedirect("login.jsp");
}
%>
</head>
<body>
</body>
</html>
3.2.3 編寫main.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>系統主介面</title>
</head>
<body>
<font size="2">
<%
String uname=(String)session.getAttribute("uname");
if(uname!=null){
out.print("登入成功!歡迎" + uname + "瀏覽站點");
}else{
response.sendRedirect("login.jsp");
}
%><br>
<font size="1" color="green">上述名稱<%=uname %>是從session中取出的</font>
</font>
</body>
</html>
3.2.4 使用類似下面的URL訪問之
圖2-2
圖2-3
3.3 利用application物件實現網站訪問計數
3.3.1 編寫visitPageCount.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>application測試</title>
</head>
<body>
<font size="2">
<%
int count=0;
if(application.getAttribute("count")==null){
count=count+1;
application.setAttribute("count", count);
}else{
count=Integer.parseInt(application.getAttribute("count").toString());
count=count+1;
application.setAttribute("count", count);
}
out.println("您是本系統的第" + count + "個訪問者。");
%>
</font>
</body>
</html>
3.3.2 使用類似下面的URL訪問之
執行結果如圖2-4所示。
圖2-4
4 思考題
- 如何獲得請求引數?
- 如何在請求物件中共享資料?
5 實驗總結
這個實驗中,實現了request物件、session物件、application物件的用法,實現資料的傳遞和共享。