Servlet與JSP間的兩種傳值情況
更新時間:2012年12月15日 15:57:42 作者:
Servlet與JSP 之間的傳值有兩種情況:JSP -> Servlet, Servlet -> JSP,需要的朋友可以了解下
Servlet與JSP 之間的傳值有兩種情況:JSP -> Servlet, Servlet -> JSP。
通過對象 request和 session (不考慮 application)完成傳值。
一、JSP -> servlet
JSP頁面有3種方法向 servlet傳值: form表單、URL
<!-- JSP page -->
...
<%......
session.setAttribute("testSession","Hello session");
reqeust.setAttribute("testRequest","Hello request");
%>
<a href="JspServlet?action=toServlet">點擊</a>
<form action="JspServlet?action=toServlet" method="post" name="form">
<input name="username" type="test" />
<input type="submit" value="submit">
</form>
...
1、對于該JSP頁面 form表單的內(nèi)容,如 <input>標簽,在 servlet可用 request.getParameter("username");獲取。
2、URL:比如這里的 <a>標簽的 href屬性與 <form>標簽的 action屬性的值 "JspServlet?action=toServlet",在 servlet同樣用 request.getParameter("action")獲?。凰⒁獾氖沁@里的 url 要和 servlet在web.xml里的 <url-pattern>標簽的路徑所對應。這部分后面會提到。
3、java片段代碼,servlet只能接到 session.setAttribute("testSession","Hello session")的內(nèi)容,而接不到 request的內(nèi)容。在 servlet里用 request.getSession().getAttribute("testSession")獲取 session內(nèi)容。
二、Servlet
1、關于 servlet,首先要提到它在 web.xml里的注冊內(nèi)容,如
<servlet-name>JspServlet1</servlet-name>
<servlet-class>com.demo.JspServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JspServlet1</servlet-name>
<url-pattern>/JspServlet</url-pattern>
</servlet-mapping>
<servlet-name>JspServlet2</servlet-name>
<servlet-class>com.demo.JspServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JspServlet2</servlet-name>
<url-pattern>/admin/JspServlet</url-pattern>
</servlet-mapping>
假如 project name 是 jsp2servlet,則該 project根目錄的 Context是 /jsp2servlet,在地址欄里顯示是 http://localhost:8080/jsp2servlet/;
在 project 根目錄下有 admin目錄,對應的 Context是/admin/jsp2servlet,在地址欄里顯示是 http://localhost:8080/jsp2servlet/admin,
在這兩個目錄下的 jsp 都想轉到 com.demo.JspServletDemo類做處理,這時的 url需要在 web.xml注冊兩次。
1)在 http://localhost:8080/jsp2servlet/ 目錄下的 jsp 頁面 JspServlet1,url應寫為 "JspServlet"
2)在 http://localhost:8080/jsp2servlet/admin/ 目錄下的 jsp 頁面訪問 JspServlet2,url應寫為 "admin/JspServlet"
2、在 servlet直接用 request對象,得到發(fā)送來的請求內(nèi)容;用 request.getSession(),得到 session對象,從而得到會話內(nèi)容。
這里的 request.getSession()的參數(shù)為 boolean 類型,該方法意思可理解為:
session可以認為是每一個IE進程對應一個會話(新開一個IE進程就可以對應兩個會話的),getSession都是返回當前用戶的會話對象,參數(shù)的區(qū)別在于:
參數(shù)為true (默認),則如果“當前用戶的會話對象”為空(第一次訪問時)則創(chuàng)建一個新的會話對象返回;
參數(shù)為false,則如果“當前用戶的會話對象”為空,則返回 null (即不自動創(chuàng)建會話對象)。
利用這個方法可以判斷 session是否過期,如下:
if(request.getSession(false)==null)
System.out.println("Session has been invalidated!");
else
System.out.println("Session is active!");
三、Servlet -> JSP
從 servlet轉到 jsp不外乎兩種方法,重定向 和 url轉發(fā)
1、重定向 ( Redirect):是路徑的跳轉,內(nèi)容和 url都改變。不允許帶 request參數(shù)( session參數(shù)可以),即不允許在 servlet里給 request對象使用setAttribute方法傳給下一頁面。在 servlet里使用 response.sendRedirect(url) 方法。注意這里的 url前不帶斜線 /,如 response.sendRedirect(”test.jsp“)
2、url轉發(fā) ( Forward):是頁面的跳轉,頁面內(nèi)容發(fā)生改變,url不變。可以帶 request和 session參數(shù)。在 servlet里使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。而這里的 url前需要帶斜線 /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response)
String fr="good well";
request.setAttribute("test", fr);
RequestDispatcher de=request.getRequestDispatcher("/test.jsp");
de.forward(request, response);
通過對象 request和 session (不考慮 application)完成傳值。
一、JSP -> servlet
JSP頁面有3種方法向 servlet傳值: form表單、URL
復制代碼 代碼如下:
<!-- JSP page -->
...
<%......
session.setAttribute("testSession","Hello session");
reqeust.setAttribute("testRequest","Hello request");
%>
<a href="JspServlet?action=toServlet">點擊</a>
<form action="JspServlet?action=toServlet" method="post" name="form">
<input name="username" type="test" />
<input type="submit" value="submit">
</form>
...
1、對于該JSP頁面 form表單的內(nèi)容,如 <input>標簽,在 servlet可用 request.getParameter("username");獲取。
2、URL:比如這里的 <a>標簽的 href屬性與 <form>標簽的 action屬性的值 "JspServlet?action=toServlet",在 servlet同樣用 request.getParameter("action")獲?。凰⒁獾氖沁@里的 url 要和 servlet在web.xml里的 <url-pattern>標簽的路徑所對應。這部分后面會提到。
3、java片段代碼,servlet只能接到 session.setAttribute("testSession","Hello session")的內(nèi)容,而接不到 request的內(nèi)容。在 servlet里用 request.getSession().getAttribute("testSession")獲取 session內(nèi)容。
二、Servlet
1、關于 servlet,首先要提到它在 web.xml里的注冊內(nèi)容,如
復制代碼 代碼如下:
<servlet-name>JspServlet1</servlet-name>
<servlet-class>com.demo.JspServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JspServlet1</servlet-name>
<url-pattern>/JspServlet</url-pattern>
</servlet-mapping>
<servlet-name>JspServlet2</servlet-name>
<servlet-class>com.demo.JspServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JspServlet2</servlet-name>
<url-pattern>/admin/JspServlet</url-pattern>
</servlet-mapping>
假如 project name 是 jsp2servlet,則該 project根目錄的 Context是 /jsp2servlet,在地址欄里顯示是 http://localhost:8080/jsp2servlet/;
在 project 根目錄下有 admin目錄,對應的 Context是/admin/jsp2servlet,在地址欄里顯示是 http://localhost:8080/jsp2servlet/admin,
在這兩個目錄下的 jsp 都想轉到 com.demo.JspServletDemo類做處理,這時的 url需要在 web.xml注冊兩次。
1)在 http://localhost:8080/jsp2servlet/ 目錄下的 jsp 頁面 JspServlet1,url應寫為 "JspServlet"
2)在 http://localhost:8080/jsp2servlet/admin/ 目錄下的 jsp 頁面訪問 JspServlet2,url應寫為 "admin/JspServlet"
2、在 servlet直接用 request對象,得到發(fā)送來的請求內(nèi)容;用 request.getSession(),得到 session對象,從而得到會話內(nèi)容。
這里的 request.getSession()的參數(shù)為 boolean 類型,該方法意思可理解為:
session可以認為是每一個IE進程對應一個會話(新開一個IE進程就可以對應兩個會話的),getSession都是返回當前用戶的會話對象,參數(shù)的區(qū)別在于:
參數(shù)為true (默認),則如果“當前用戶的會話對象”為空(第一次訪問時)則創(chuàng)建一個新的會話對象返回;
參數(shù)為false,則如果“當前用戶的會話對象”為空,則返回 null (即不自動創(chuàng)建會話對象)。
利用這個方法可以判斷 session是否過期,如下:
復制代碼 代碼如下:
if(request.getSession(false)==null)
System.out.println("Session has been invalidated!");
else
System.out.println("Session is active!");
三、Servlet -> JSP
從 servlet轉到 jsp不外乎兩種方法,重定向 和 url轉發(fā)
1、重定向 ( Redirect):是路徑的跳轉,內(nèi)容和 url都改變。不允許帶 request參數(shù)( session參數(shù)可以),即不允許在 servlet里給 request對象使用setAttribute方法傳給下一頁面。在 servlet里使用 response.sendRedirect(url) 方法。注意這里的 url前不帶斜線 /,如 response.sendRedirect(”test.jsp“)
2、url轉發(fā) ( Forward):是頁面的跳轉,頁面內(nèi)容發(fā)生改變,url不變。可以帶 request和 session參數(shù)。在 servlet里使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。而這里的 url前需要帶斜線 /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response)
復制代碼 代碼如下:
String fr="good well";
request.setAttribute("test", fr);
RequestDispatcher de=request.getRequestDispatcher("/test.jsp");
de.forward(request, response);
您可能感興趣的文章:
- jsp頁面中獲取servlet請求中的參數(shù)的辦法詳解
- JavaWeb實現(xiàn)用戶登錄注冊功能實例代碼(基于Servlet+JSP+JavaBean模式)
- Servlet+Jsp實現(xiàn)圖片或文件的上傳功能具體思路及代碼
- JSP+Servlet制作Java Web登錄功能的全流程解析
- JSP與Servlet的介紹說明
- jsp和servlet中實現(xiàn)頁面跳轉的方式實例總結
- JSP+Servlet+JavaBean實現(xiàn)登錄網(wǎng)頁實例詳解
- 基于JSP HttpServlet的詳細介紹
- JSP、Servlet中get請求和post請求的區(qū)別總結
- Servlet+JavaBean+JSP打造Java Web注冊與登錄功能
- 基于jsp+servlet實現(xiàn)的簡單博客系統(tǒng)實例(附源碼)
- jsp+servlet+javabean實現(xiàn)數(shù)據(jù)分頁方法完整實例
- jsp+servlet+jdbc實現(xiàn)對數(shù)據(jù)庫的增刪改查
- 在jsp中用bean和servlet聯(lián)合實現(xiàn)用戶注冊、登錄
- jsp和servlet操作mysql中文亂碼問題的解決辦法
- JSP使用Servlet作為控制器實現(xiàn)MVC模式實例詳解
- 訪問JSP文件或者Servlet文件時提示下載的解決方法
- jsp引用servlet生成的驗證碼代碼演示
- javascript與jsp發(fā)送請求到servlet的幾種方式實例
相關文章
java?SpringBoot?分布式事務的解決方案(JTA+Atomic+多數(shù)據(jù)源)
這篇文章主要介紹了java?SpringBoot?分布式事務的解決方案(JTA+Atomic+多數(shù)據(jù)源),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-08-08
詳解mybatis plus使用insert沒有返回主鍵的處理
這篇文章主要介紹了詳解mybatis plus使用insert沒有返回主鍵的處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
Java開發(fā)環(huán)境不再需要配置classpath問題
這篇文章主要介紹了Java開發(fā)環(huán)境不再需要配置classpath問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12

