欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Servlet與JSP間的兩種傳值情況

 更新時(shí)間:2012年12月15日 15:57:42   作者:  
Servlet與JSP 之間的傳值有兩種情況:JSP -> Servlet, Servlet -> JSP,需要的朋友可以了解下
Servlet與JSP 之間的傳值有兩種情況:JSP -> Servlet, Servlet -> JSP。
通過(guò)對(duì)象 request和 session (不考慮 application)完成傳值。

一、JSP -> servlet
JSP頁(yè)面有3種方法向 servlet傳值: form表單、URL
復(fù)制代碼 代碼如下:

<!-- JSP page -->
...
<%......
session.setAttribute("testSession","Hello session");
reqeust.setAttribute("testRequest","Hello request");
%>
<a href="JspServlet?action=toServlet">點(diǎn)擊</a>
<form action="JspServlet?action=toServlet" method="post" name="form">
<input name="username" type="test" />
<input type="submit" value="submit">
</form>
...

1、對(duì)于該JSP頁(yè)面 form表單的內(nèi)容,如 <input>標(biāo)簽,在 servlet可用 request.getParameter("username");獲取。
2、URL:比如這里的 <a>標(biāo)簽的 href屬性與 <form>標(biāo)簽的 action屬性的值 "JspServlet?action=toServlet",在 servlet同樣用 request.getParameter("action")獲??;所要注意的是這里的 url 要和 servlet在web.xml里的 <url-pattern>標(biāo)簽的路徑所對(duì)應(yīng)。這部分后面會(huì)提到。
3、java片段代碼,servlet只能接到 session.setAttribute("testSession","Hello session")的內(nèi)容,而接不到 request的內(nèi)容。在 servlet里用 request.getSession().getAttribute("testSession")獲取 session內(nèi)容。

二、Servlet
1、關(guān)于 servlet,首先要提到它在 web.xml里的注冊(cè)內(nèi)容,如
復(fù)制代碼 代碼如下:

<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目錄,對(duì)應(yīng)的 Context是/admin/jsp2servlet,在地址欄里顯示是 http://localhost:8080/jsp2servlet/admin,
在這兩個(gè)目錄下的 jsp 都想轉(zhuǎn)到 com.demo.JspServletDemo類(lèi)做處理,這時(shí)的 url需要在 web.xml注冊(cè)兩次。
1)在 http://localhost:8080/jsp2servlet/ 目錄下的 jsp 頁(yè)面 JspServlet1,url應(yīng)寫(xiě)為 "JspServlet"
2)在 http://localhost:8080/jsp2servlet/admin/ 目錄下的 jsp 頁(yè)面訪問(wèn) JspServlet2,url應(yīng)寫(xiě)為 "admin/JspServlet"
2、在 servlet直接用 request對(duì)象,得到發(fā)送來(lái)的請(qǐng)求內(nèi)容;用 request.getSession(),得到 session對(duì)象,從而得到會(huì)話(huà)內(nèi)容。
這里的 request.getSession()的參數(shù)為 boolean 類(lèi)型,該方法意思可理解為:
session可以認(rèn)為是每一個(gè)IE進(jìn)程對(duì)應(yīng)一個(gè)會(huì)話(huà)(新開(kāi)一個(gè)IE進(jìn)程就可以對(duì)應(yīng)兩個(gè)會(huì)話(huà)的),getSession都是返回當(dāng)前用戶(hù)的會(huì)話(huà)對(duì)象,參數(shù)的區(qū)別在于:
參數(shù)為true (默認(rèn)),則如果“當(dāng)前用戶(hù)的會(huì)話(huà)對(duì)象”為空(第一次訪問(wèn)時(shí))則創(chuàng)建一個(gè)新的會(huì)話(huà)對(duì)象返回;
參數(shù)為false,則如果“當(dāng)前用戶(hù)的會(huì)話(huà)對(duì)象”為空,則返回 null (即不自動(dòng)創(chuàng)建會(huì)話(huà)對(duì)象)。
利用這個(gè)方法可以判斷 session是否過(guò)期,如下:
復(fù)制代碼 代碼如下:

if(request.getSession(false)==null)
System.out.println("Session has been invalidated!");
else
System.out.println("Session is active!");

三、Servlet -> JSP
從 servlet轉(zhuǎn)到 jsp不外乎兩種方法,重定向 和 url轉(zhuǎn)發(fā)
1、重定向 ( Redirect):是路徑的跳轉(zhuǎn),內(nèi)容和 url都改變。不允許帶 request參數(shù)( session參數(shù)可以),即不允許在 servlet里給 request對(duì)象使用setAttribute方法傳給下一頁(yè)面。在 servlet里使用 response.sendRedirect(url) 方法。注意這里的 url前不帶斜線(xiàn) /,如 response.sendRedirect(”test.jsp“)
2、url轉(zhuǎn)發(fā) ( Forward):是頁(yè)面的跳轉(zhuǎn),頁(yè)面內(nèi)容發(fā)生改變,url不變。可以帶 request和 session參數(shù)。在 servlet里使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。而這里的 url前需要帶斜線(xiàn) /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response)
復(fù)制代碼 代碼如下:

String fr="good well";
request.setAttribute("test", fr);
RequestDispatcher de=request.getRequestDispatcher("/test.jsp");
de.forward(request, response);

相關(guān)文章

  • SpringCloud Feign 服務(wù)調(diào)用的實(shí)現(xiàn)

    SpringCloud Feign 服務(wù)調(diào)用的實(shí)現(xiàn)

    Feign是一個(gè)聲明性web服務(wù)客戶(hù)端。本文記錄多個(gè)服務(wù)之間使用Feign調(diào)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Java實(shí)現(xiàn)用戶(hù)管理系統(tǒng)

    Java實(shí)現(xiàn)用戶(hù)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)用戶(hù)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Idea2023創(chuàng)建springboot不能選擇java8的解決方法(最新推薦)

    Idea2023創(chuàng)建springboot不能選擇java8的解決方法(最新推薦)

    在idea2023版本創(chuàng)建springboot的過(guò)程中,選擇java版本時(shí)發(fā)現(xiàn)沒(méi)有java8版本,只有java17和java20,遇到這樣的問(wèn)題如何解決呢,下面小編給大家分享Idea2023創(chuàng)建springboot不能選擇java8的解決方法,感興趣的朋友一起看看吧
    2024-01-01
  • VSCode?配置?Spring?Boot?項(xiàng)目開(kāi)發(fā)環(huán)境的全過(guò)程

    VSCode?配置?Spring?Boot?項(xiàng)目開(kāi)發(fā)環(huán)境的全過(guò)程

    兩三年前曾經(jīng)試過(guò)配置Java環(huán)境, 存在不少問(wèn)題作罷. 最近搜了下相關(guān)的文章, 感覺(jué)VSCode對(duì)Java項(xiàng)目的支持比三年前完善了不少. 今天實(shí)際配置了一下環(huán)境, 把自己常用的功能過(guò)了一遍, 基本能跑通開(kāi)發(fā)流程, 做個(gè)筆記,需要的朋友可以參考下
    2024-03-03
  • Springboot通過(guò)url訪問(wèn)本地圖片代碼實(shí)例

    Springboot通過(guò)url訪問(wèn)本地圖片代碼實(shí)例

    這篇文章主要介紹了springboot通過(guò)url訪問(wèn)本地圖片代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 基于jdk動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理實(shí)現(xiàn)及區(qū)別說(shuō)明

    基于jdk動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理實(shí)現(xiàn)及區(qū)別說(shuō)明

    這篇文章主要介紹了基于jdk動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理實(shí)現(xiàn)及區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • java數(shù)據(jù)結(jié)構(gòu)與算法之奇偶排序算法完整示例

    java數(shù)據(jù)結(jié)構(gòu)與算法之奇偶排序算法完整示例

    這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之奇偶排序算法,較為詳細(xì)的分析了奇偶算法的原理并結(jié)合完整示例形式給出了實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-08-08
  • Java 抽象類(lèi)特點(diǎn)總結(jié)

    Java 抽象類(lèi)特點(diǎn)總結(jié)

    在面向?qū)ο蟮母拍钪?,所有的?duì)象都是通過(guò)類(lèi)來(lái)描繪的,但是反過(guò)來(lái),并不是所有的類(lèi)都是用來(lái)描繪對(duì)象的,如果一個(gè)類(lèi)中沒(méi)有包含足夠的信息來(lái)描繪一個(gè)具體的對(duì)象,這樣的類(lèi)就是抽象類(lèi)
    2021-10-10
  • Java中的CompletableFuture使用解析

    Java中的CompletableFuture使用解析

    這篇文章主要介紹了Java中的CompletableFuture使用解析,為什么CompletableFuture要定制化線(xiàn)程池,因?yàn)槟J(rèn)的線(xiàn)程池是ForkJoinPool,這個(gè)線(xiàn)程池的最大線(xiàn)程數(shù)默認(rèn)是你的電腦的線(xiàn)程數(shù)數(shù)減1,假如我線(xiàn)程電腦是4核8線(xiàn)程的,ForkJoinPool的最大線(xiàn)程數(shù)就是7,需要的朋友可以參考下
    2024-01-01
  • 解決JD-GUI for mac big sur打不開(kāi)問(wèn)題

    解決JD-GUI for mac big sur打不開(kāi)問(wèn)題

    這篇文章主要介紹了解決JD-GUI for mac big sur打不開(kāi)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評(píng)論