第3章 JSP內置對象
文章目錄
文章目錄
JSP的常用內置對象有resquest
, response
, session
, application
和out
。其中response
和request
對象是JSP內置對象中比較重要的兩個,這兩個對象提供了對服務器和瀏覽器通信方法的控制。
3.1 request對象
在JSP中,內置對象request
封裝了用戶提交的信息,調用對應方法可獲得封裝信息。
一般格式爲:
<form action="提交信息的目的地頁面" method=get|post>
提交手段
</form>
<form>
是表單標記,其中get
與post
方法區別主要在於,使用get方法提交的信息會顯示在瀏覽器地址欄中,而post不會顯示。
<form action="tom.jsp" method="post">
<input type="text" name="boy" value="ok">
<input type="submit" name="submit" value="送出" >
</form>
request
對象可以使用getPartameter(String s)
方法獲取表單通過text提交的信息。
1. 獲取用戶提交信息
<%@page contentType="text/html;charset=utf8"%>
<HTML>
<form action="example3_1_com.jsp" method="post">
<input type="text" name="EA" value=1 size=6>
<input type="text" name="EB" value=1 size=6>
<input type="text" name="EC" value=1 size=6>
<input type="submit" name="submit" value="submit">
</form>
</HTML>
<%@page contentType="text/html;charset=utf8"%>
<HTML>
<%
String sa = request.getParameter("EA");
String sb = request.getParameter("EB");
String sc = request.getParameter("EC");
double a = Double.parseDouble(sa);
double b = Double.parseDouble(sb);
double c = Double.parseDouble(sc);
out.println(a+b+c);
%>
</HTML>
2. 處理漢字信息
- 對信息重新編碼
request
設置編碼
3. 常用方法舉例
無
4. 處理HTML標記
去給?學習HTML
!
5. 處理超鏈接
HTML
的超鏈接標記:
<a href=鏈接地址>文字說明</a>
3.2 response對象
1. 動態響應contentType
屬性
<%@page contentType="text/html;charset=utf8"%>
<HTML>
<form action="" method="get" name=form>
<input type="submit" value="yes" name="submit">
</form>
<%
String str = request.getParameter("submit");
if(str.equals("yes")==true )
response.setContentType("application/msword; charset=utf8");
%>
</HTML>
2. reeponse
的HTTP
頭文件
常用:
addHeader(String head, String value);
setHeader(String head, String value);
3. response
重定向
當需要將用戶重新引導之另一個頁面時,可以使用response
的``sendRedircet(URL URL)方法實現用戶的重定向。例子如下:
<%@page contentType="text/html;charset=utf8"%>
<HTML>
<form action="rec.jsp" method="post" name=form>
<input type="text" name="name">
<input type="submit" value="ok">
</form>
</HTML>
<%@page contentType="text/html;charset=utf8"%>
<HTML>
<%
String name = request.getParameter("name");
if(name==null || name.length()==0)
response.sendRedirect("test.jsp");
%>
Welcome   <%=name%>
</HTML>
4. response
的狀態行
一般不需要修改狀態行,在出現問題時服務器會自動響應,如果想要改變,可使用setStatus(int n)
方法是指響應的狀態。
3.3 session對象
Tomcat服務器內置session對象記錄有關連接的信息,是實現了HttpSession
的一個實例。
1. session對象的id
當一個用戶首次訪問Web服務的一個JSP頁面是,服務器會產生一個session
對象,對給對象分配一個String類型的id號,記錄用戶相關信息,直到最大生存時間或服務器關閉。
2. session對象與URL重寫
Session對象是否能和用戶創建對應關係依賴於是否支持Cookie
。如果用戶端不支持Cookie,JSP頁面可以通過URL重寫來實現Session的唯一性。
String str = response.encodeRedirectURL("second.jsp");
3. session對象存儲數據
session
對象使用下列方法處理數據
public void setAttribute(String key, Object obj)
public Object getAttribute(String key)
public Enumeration getAttributeNames()
public void removeAttribute(String name)
3.4. application對象
application
對象由服務器創建,每個Web服務目錄下的application對象被用戶共享。
1. application對象的常用方法:
public void setAttribute(String key, Object obj)
public Object getAttribute(String key)
public Enumeration getAttributeNames()
public void removeAttribute(String name)
public String getServletInfo()
2. 用application製作留言板
-
ex3_input.jsp
<%@page contentType="text/html;charset=utf8"%> <HTML> <body> <form action="ex3_mes.jsp" method="post" name="form"> 輸入您的名字:<input type="text" name="name"><br> 輸入留言標題:<input type="text" name="title"><br> 輸入您的留言:<br> <TEXTAREA name="messages" ROWS='10' COLS='36' WRAP="physical"></TEXTAREA><br> <input type="submit" value="提交" name="submit"> </form> <form action="ex3_show.jsp" method="post" name="form2"> <input type="submit" value="查看" name="look"> </form> </body> </HTML?
-
ex3_show.jsp
<%@page contentType="text/html;charset=utf8" %> <%@page import="java.util.*" %> <HTML> <body> <% Vector v = (Vector)application.getAttribute("Mess"); for(int i=0;i<v.size();++i) { String mes = (String)v.elementAt(i); out.println(mes); out.println("<br>---------------------------<br>"); } %> </body> </HTML>
-
ex3_mes.jsp
<%@page contentType="text/html;charset=utf8" %> <%@page import="java.util.*" %> <HTML> <body> <%! Vector v = new Vector(); int cnt = 0; ServletContext application; synchronized void leaveWord(String s) { application = getServletContext(); cnt++; v.add("No."+cnt+" ,"+s); application.setAttribute("Mess", v); } %> <% String name = request.getParameter("name"); String title = request.getParameter("title"); String messages = request.getParameter("messages"); if(name == null || name.length()==0) name = "Anomi"; if(title == null || title.length()==0) title = "No title"; if(messages == null || messages.length()==0) messages = "Nothing useful."; String s = name+"<BR>"+title+"<BR>"+messages+"<BR>"; leaveWord(s); out.println("留言成功!"); %> <a href ="ex3_input.jsp">返回</a> </body> </HTML>
3.5 out對象
out對象是一個輸出流,用來向用戶輸出數據。