JSP內(nèi)置對象即無需聲明就可以直接使用的對象實例,在實際的開發(fā)過程中,比較常用的JSP對象有request,response,session,out和application等,筆者在本文章中將簡單介紹一下以上幾種對象的使用。
request對象
request對象代表這是從用戶發(fā)送過來的請求,從這個對象中可以取出客戶端用戶提交的數(shù)據(jù)或者是參數(shù),這個對象只有接受用戶請求的頁面才可以訪問。
1.request對象使用場合
如果要與用戶互動,必須要知道用戶的需求,然后根據(jù)這個需求生成用戶期望看到的結(jié)果。這樣才能實現(xiàn)與用戶的互動。在Web應用中,用戶的需求就抽象成一個request對象,這個對象中間包括了用戶的需求。request正是用來收集類似這些用戶的輸入數(shù)據(jù)和參數(shù)的。
同時,request對象中還包括一些服務器的信息,例如端口、真實路徑、訪問協(xié)議等信息,通過request對象可以取得服務器的這些參數(shù)。
不多說直接上代碼
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>request主要方法調(diào)用示例</title>
</head>
<body>
<font size="2">
request主要方法調(diào)用示例:<br>
<%
request.setAttribute("attr","Hello!");
out.println("attr屬性的值為:"+request.getAttribute("attr")+"<br>");
out.println("上下文路徑為:"+request.getContextPath()+"<br>");
out.println("Cookies:"+request.getCookies()+"<br>");
out.println("Host:"+request.getHeader("Host")+"<br>");
out.println("ServerName:"+request.getServerName()+"<br>");
out.println("ServerPort:"+request.getServerPort()+"<br>");
out.println("RemoteAddr:"+request.getRemoteAddr()+"<br>");
request.removeAttribute("attr");
out.println("屬性移除操作以后attr屬性的值為:"+request.getAttribute("attr")+"<br>");
%>
</font>
</body>
</html>
第11行代碼設置了一個名為“attr”的屬性值
第12~18行這段代碼向客戶端返回來request域的屬性值
第19行代碼刪除了名為“attr”的屬性
2.request對象使用示例
1、使用request對象取得表單數(shù)據(jù)
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>request主要方法調(diào)用示例</title>
</head>
<body>
<font size="2">
request主要方法調(diào)用示例:<br>
<%
request.setAttribute("attr","Hello!");
out.println("attr屬性的值為:"+request.getAttribute("attr")+"<br>");
out.println("上下文路徑為:"+request.getContextPath()+"<br>");
out.println("Cookies:"+request.getCookies()+"<br>");
out.println("Host:"+request.getHeader("Host")+"<br>");
out.println("ServerName:"+request.getServerName()+"<br>");
out.println("ServerPort:"+request.getServerPort()+"<br>");
out.println("RemoteAddr:"+request.getRemoteAddr()+"<br>");
request.removeAttribute("attr");
out.println("屬性移除操作以后attr屬性的值為:"+request.getAttribute("attr")+"<br>");
%>
</font>
</body>
</html>
解釋:在上面這個程序當中,也可以把表單提交給其他頁面,那樣只需把接受參數(shù)的方法放在對應的頁面即可.在這里只是為了方便展示問題才提交給頁面自身。
2、使用request對象取得頁面?zhèn)鬟f參數(shù)
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>request對象取得頁面?zhèn)鬟f參數(shù)示例</title>
</head>
<%
String param = request.getParameter("param");
%>
<body>
<font size="2">
<a href="URL.jsp?param=Hello">請點擊這個鏈接</a><br>
你提交的參數(shù)為:<%=param%>
</font>
</body>
</html>
解釋:在這個例子中,通過一個超鏈接完成了一次單參數(shù)的請求,并且在服務器端獲取了這個參數(shù)。其中第8行代碼在服務端獲取客戶提交的參數(shù)。第12行代碼定義另一個帶參數(shù)的超連接。
response對象
response對象是服務器端向客戶端返回的數(shù)據(jù),從這個對象中可以取出部分與服務器互動的數(shù)據(jù)和信息,只有接受這個對象的頁面才可以訪問這個對象。
1.response對象使用場合
既然用戶可以對服務器發(fā)出請求,服務器就需要對用戶的請求作出反應。這里服務器就可以使用response對象向用戶發(fā)送數(shù)據(jù),response是對應request的一個對象。
如果需要獲取服務器返回的處理信息,就可以對response進行操作,同時當服務器需要對客戶端進行某些操作的時候也需要response對象,例如服務器要在客戶端生成Cookies,那么這時候response對象就是一個很好的選擇。
2.response使用舉例,采用response實現(xiàn)頁面重定向。
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>response對象頁面重定向示例</title>
</head>
<body>
<%
response.sendRedirect("http://www.sohu.com");
%>
</body>
</html>
上面這個頁面運行的時候直接重定向到搜狐的首頁。
session對象
session對象維護者客戶端用戶和服務器端狀態(tài),從這個對象中可以去除用戶和服務器交互過程中的數(shù)據(jù)和信息。這個對象在用戶關閉瀏覽器離開Web應用之前一直有效。
1.session對象使用場合
session對象中保存的內(nèi)容是用戶與服務器整個交互過程中的信息,如果是想在整個交互的過程中都可以訪問到信息,就可以選擇存放在session對象中。
例如在用戶登錄的過程中,可以在session中記錄用戶的登錄狀態(tài),這樣用戶就不必在每個頁面都重新登錄,只要用戶沒有離開當前的Web應用系統(tǒng),就可以一直保存登錄的狀態(tài)。
2.session對象使用示例
模擬一個簡單的用戶登錄動作,在這個示例程序中不對提交的登錄信息做具體的驗證,只要用戶名和密碼都不為空就可以登錄,這樣處理知識為了方便展示session的使用方法,在具體的開發(fā)中必須要對登錄信息進行驗證。
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>用戶登錄界面</title>
</head>
<body>
<font size="2">
<form action="LoginCheck.jsp" method="post">
用戶名:<input type="text" name="userName" size="10"/>
密 碼:<input type="password" name="password" size="10"/>
<input type="submit" value="提交">
</form>
</font>
</body>
</html>
上面這個JSP頁面想LoginCheck提交了一個登錄表單,表單中有用戶名和密碼。下面是LoginCheck的內(nèi)容。
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>用戶登錄驗證頁面</title>
</head>
<%
String userName = request.getParameter("userName");
String password = request.getParameter("password");
if(userName.length()>0&&password.length()>0)
{
session.setAttribute("status","Login");
response.sendRedirect("Main.jsp");
}else
response.sendRedirect("Login.jsp");
%>
<body>
</body>
</html>
在上面這個頁面中,從變淡中取出用戶名和密碼,如果用戶名和密碼都不為空就允許登錄,否則就重定向到登錄頁面,讓用戶重新登錄。如果用戶登錄成功,就在session中設置一個status屬性,然后把用戶重定向到系統(tǒng)的主頁面,在主頁面中可以訪問session中的值。下面是Main頁面的具體代碼
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>系統(tǒng)主界面</title>
</head>
<body>
<font size="2">
<%
Object status = session.getAttribute("status");
if(session.getAttribute("status")!=null)
out.print("用戶已經(jīng)登錄!");
else
response.sendRedirect("Login.jsp");
%>
</font>
</body>
</html>
在上面這個頁面中,對用戶的狀態(tài)進行判斷,如果從session中可以取出對應的屬性值,說明用戶已經(jīng)登錄,如果沒有渠道指定屬性值,說明用戶沒有登錄,這時就重定向到登錄頁面,讓用戶重新登錄。其中session的值在用戶離開系統(tǒng)之前的任何頁面都可以訪問。
作者:beijiguangyong 發(fā)表于2012-3-31 23:22:18
原文鏈接