熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Servlet與JSP間的傳值問題

2013-11-15 12:05:19  來源: JSP教程 

  Servlet與JSP 之間的傳值有兩種情況JSP > Servlet Servlet > JSP

  通過對象 request和 session (不考慮 application)完成傳值

  一JSP > servlet

  JSP頁面有種方法向 servlet傳值 form表單URL

  

  1. <! JSP page >  
  2.  
  3. <%  
  4. sessionsetAttribute("testSession""Hello session");  
  5. reqeustsetAttribute("testRequest""Hello request");  
  6. %>  
  7. <a href="JspServlet?action=toServlet">點擊</a>  
  8. <form action="JspServlet?action=toServlet" method="post" name="form">  
  9. <input name="username" type="test" />  
  10. <input type="submit" value="submit">  
  11. </form>  
  12.  

  對於該JSP頁面 form表單的內容如 <input>標簽在 servlet可用 requestgetParameter("username");獲取

  URL比如這裡的 <a>標簽的 href屬性與 <form>標簽的 action屬性的值 "JspServlet?action=toServlet"在 servlet同樣用 requestgetParameter("action")獲取所要注意的是這裡的 url 要和 servlet在webxml裡的 <urlpattern>標簽的路徑所對應這部分後面會提到

  java片段代碼servlet只能接到 sessionsetAttribute("testSession""Hello session")的內容而接不到 request的內容在 servlet裡用 requestgetSession()getAttribute("testSession")獲取 session內容

  二Servlet

  關於 servlet首先要提到它在 webxml裡的注冊內容

  

  1. <servletname>JspServlet</servletname>  
  2. <servletclass>comdemoJspServletDemo</servletclass>  
  3. </servlet>  
  4. <servletmapping>  
  5. <servletname>JspServlet</servletname>  
  6. <urlpattern>/JspServlet</urlpattern>  
  7. </servletmapping>  
  8. <servletname>JspServlet</servletname>  
  9. <servletclass>comdemoJspServletDemo</servletclass>  
  10. </servlet>  
  11. <servletmapping>  
  12. <servletname>JspServlet</servletname>  
  13. <urlpattern>/admin/JspServlet</urlpattern>  
  14. </servletmapping> 

  假如 project name 是 jspservlet則該 project根目錄的 Context是 /jspservlet在地址欄裡顯示是 http://localhost:/jspservlet/

  在 project 根目錄下有 admin目錄對應的 Context是/admin/jspservlet在地址欄裡顯示是 http://localhost:/jspservlet/admin

  在這兩個目錄下的 jsp 都想轉到 comdemoJspServletDemo類做處理這時的 url需要在 webxml注冊兩次

  )在 http://localhost:/jspservlet/ 目錄下的 jsp 頁面 JspServlet

  
url應寫為 "JspServlet"

  )在 http://localhost:/jspservlet/admin/ 目錄下的 jsp 頁面訪問 JspServleturl應寫為 "admin/JspServlet"

  在 servlet直接用 request對象得到發送來的請求內容用 requestgetSession()得到 session對象從而得到會話內容
這裡的 requestgetSession()的參數為 boolean 類型該方法意思可理解為

  session可以認為是每一個IE進程對應一個會話(新開一個IE進程就可以對應兩個會話的)getSession都是返回當前用戶的會話對象參數的區別在於

  參數為true (默認)則如果“當前用戶的會話對象”為空(第一次訪問時)則創建一個新的會話對象返回

  參數為false則如果“當前用戶的會話對象”為空則返回 null (即不自動創建會話對象)

  利用這個方法可以判斷 session是否過期如下

  

  1. if(requestgetSession(false)==null)  
  2. Systemoutprintln("Session has been invalidated!");  
  3. else 
  4. Systemoutprintln("Session is active!"); 

  三Servlet > JSP

  從 servlet轉到 jsp不外乎兩種方法重定向 和 url轉發

  重定向 ( Redirect)是路徑的跳轉內容和 url都改變不允許帶 request參數( session參數可以)即不允許在 servlet裡給 request對象使用setAttribute方法傳給下一頁面在 servlet裡使用 responsesendRedirect(url) 方法注意這裡的 url前不帶斜線 /如 responsesendRedirect(”testjsp“)

  url轉發 ( Forward)是頁面的跳轉頁面內容發生改變url不變可以帶 request和 session參數在 servlet裡使用 getServletConfig()getServletContext()getRequestDispatcher(url)forward(request response)而這裡的 url前需要帶斜線 /如getServletConfig()getServletContext()getRequestDispatcher(”/testjsp“)forward(request response)

  

  1. String fr="good well";  
  2. requestsetAttribute("test" fr);  
  3. RequestDispatcher de=requestgetRequestDispatcher("/testjsp");  
  4. deforward(request response); 


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20260.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.