JSP實用教程 第三章 JSP內置對象

第3章 JSP內置對象

JSP的常用內置對象有resquest, response, session, applicationout。其中responserequest對象是JSP內置對象中比較重要的兩個,這兩個對象提供了對服務器和瀏覽器通信方法的控制。

3.1 request對象

在JSP中,內置對象request封裝了用戶提交的信息,調用對應方法可獲得封裝信息。

一般格式爲:

<form action="提交信息的目的地頁面" method=get|post>
    提交手段
</form>

<form>是表單標記,其中getpost方法區別主要在於,使用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. 處理漢字信息

  1. 對信息重新編碼
  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. reeponseHTTP頭文件

常用:

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 &nbsp <%=name%>
</HTML>

4. response的狀態行

一般不需要修改狀態行,在出現問題時服務器會自動響應,如果想要改變,可使用setStatus(int n)方法是指響應的狀態。

image-20191028143338590.png

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對象的常用方法:

  1. public void setAttribute(String key, Object obj)
  2. public Object getAttribute(String key)
  3. public Enumeration getAttributeNames()
  4. public void removeAttribute(String name)
  5. public String getServletInfo()

2. 用application製作留言板

  1. 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?
    
  2. 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>
    
  3. 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對象是一個輸出流,用來向用戶輸出數據。

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