jsp的內置對象

JSP內置對象即無需聲明就可以直接使用的對象實例,在實際的開發過程中,比較常用的JSP對象有request,response,session,out和application等,筆者在本文章中將簡單介紹一下以上幾種對象的使用。
request對象
request對象代表這是從用戶發送過來的請求,從這個對象中可以取出客戶端用戶提交的數據或者是參數,這個對象只有接受用戶請求的頁面纔可以訪問。
1.request對象使用場合
如果要與用戶互動,必須要知道用戶的需求,然後根據這個需求生成用戶期望看到的結果。這樣才能實現與用戶的互動。在Web應用中,用戶的需求就抽象成一個request對象,這個對象中間包括了用戶的需求。request正是用來收集類似這些用戶的輸入數據和參數的。
同時,request對象中還包括一些服務器的信息,例如端口、真實路徑、訪問協議等信息,通過request對象可以取得服務器的這些參數。
不多說直接上代碼
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>  
<html>  
  <head>     
    <title>request主要方法調用示例</title>  
  </head>   
  <body>  
  <font size="2">  
  request主要方法調用示例:<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對象取得表單數據
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>  
<html>  
  <head>     
    <title>request主要方法調用示例</title>  
  </head>   
  <body>  
  <font size="2">  
  request主要方法調用示例:<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>  

解釋:在上面這個程序當中,也可以把表單提交給其他頁面,那樣只需把接受參數的方法放在對應的頁面即可.在這裏只是爲了方便展示問題才提交給頁面自身。
2、使用request對象取得頁面傳遞參數
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>  
<html>  
  <head>   
    <title>request對象取得頁面傳遞參數示例</title>  
  </head>  
  <%  
       String param = request.getParameter("param");  

   %>  
  <body>  
      <font size="2">  
      <a href="URL.jsp?param=Hello">請點擊這個鏈接</a><br>  
      你提交的參數爲:<%=param%>  
      </font>  
  </body>  
</html>  

解釋:在這個例子中,通過一個超鏈接完成了一次單參數的請求,並且在服務器端獲取了這個參數。其中第8行代碼在服務端獲取客戶提交的參數。第12行代碼定義另一個帶參數的超連接。

response對象
response對象是服務器端向客戶端返回的數據,從這個對象中可以取出部分與服務器互動的數據和信息,只有接受這個對象的頁面纔可以訪問這個對象。
1.response對象使用場合
既然用戶可以對服務器發出請求,服務器就需要對用戶的請求作出反應。這裏服務器就可以使用response對象向用戶發送數據,response是對應request的一個對象。
如果需要獲取服務器返回的處理信息,就可以對response進行操作,同時當服務器需要對客戶端進行某些操作的時候也需要response對象,例如服務器要在客戶端生成Cookies,那麼這時候response對象就是一個很好的選擇。
2.response使用舉例,採用response實現頁面重定向。
<%@ 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對象維護者客戶端用戶和服務器端狀態,從這個對象中可以去除用戶和服務器交互過程中的數據和信息。這個對象在用戶關閉瀏覽器離開Web應用之前一直有效。
1.session對象使用場合
session對象中保存的內容是用戶與服務器整個交互過程中的信息,如果是想在整個交互的過程中都可以訪問到信息,就可以選擇存放在session對象中。
例如在用戶登錄的過程中,可以在session中記錄用戶的登錄狀態,這樣用戶就不必在每個頁面都重新登錄,只要用戶沒有離開當前的Web應用系統,就可以一直保存登錄的狀態。
2.session對象使用示例
模擬一個簡單的用戶登錄動作,在這個示例程序中不對提交的登錄信息做具體的驗證,只要用戶名和密碼都不爲空就可以登錄,這樣處理知識爲了方便展示session的使用方法,在具體的開發中必須要對登錄信息進行驗證。
<%@ 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的內容。
<%@ 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屬性,然後把用戶重定向到系統的主頁面,在主頁面中可以訪問session中的值。下面是Main頁面的具體代碼
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>  
<html>  
  <head>   
    <title>系統主界面</title>  
  </head>  
  <body>  
      <font size="2">  
          <%  
              Object status = session.getAttribute("status");  
              if(session.getAttribute("status")!=null)  
                  out.print("用戶已經登錄!");  
              else  
                  response.sendRedirect("Login.jsp");  
           %>  
      </font>  
  </body>  
</html>  

在上面這個頁面中,對用戶的狀態進行判斷,如果從session中可以取出對應的屬性值,說明用戶已經登錄,如果沒有渠道指定屬性值,說明用戶沒有登錄,這時就重定向到登錄頁面,讓用戶重新登錄。其中session的值在用戶離開系統之前的任何頁面都可以訪問。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章