



全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
總結(jié)JSP與servlet之間的傳值JSP與 servlet之間的傳值有兩種情況:JSP - servlet, servlet - JSP。通過對象 request和 session (不考慮 application)完成傳值。一、JSP - servletJSP頁面有3種方法向 servlet傳值: form表單、URL 、其他.click me .1、對于該JSP頁面 form表單的內(nèi)容,如 標(biāo)簽,在 servlet可用 request.getParameter(username);獲取。2、URL:比如這里的 標(biāo)簽的 href屬性與 標(biāo)簽的 action屬性的值 JspServlet?action=toServlet,在 servlet同樣用 request.getParameter(action)獲?。凰⒁獾氖沁@里的 url 要和 servlet在web.xml里的 標(biāo)簽的路徑所對應(yīng)。這部分后面會提到。3、java片段代碼,servlet只能接到 session.setAttribute(testSession,Hello session)的內(nèi)容,而接不到 request的內(nèi)容。在 servlet里用 request.getSession().getAttribute(testSession)獲取 session內(nèi)容。二、Servlet1、關(guān)于 servlet,首先要提到它在 web.xml里的注冊內(nèi)容,如 JspServlet1 com.demo.JspServletDemo JspServlet1 /JspServlet JspServlet2 com.demo.JspServletDemo JspServlet2 /admin/JspServlet 假如 project name 是 jsp2servlet,則該 project根目錄的 Context是 /jsp2servlet,在地址欄里顯示是 http:/localhost:8080/jsp2servlet/;在 project 根目錄下有 admin目錄,對應(yīng)的 Context是/admin/jsp2servlet,在地址欄里顯示是 http:/localhost:8080/jsp2servlet/admin,在這兩個(gè)目錄下的 jsp 都想轉(zhuǎn)到 com.demo.JspServletDemo類做處理,這時(shí)的 url需要在 web.xml注冊兩次。 1)在 http:/localhost:8080/jsp2servlet/ 目錄下的 jsp 頁面 JspServlet1,url應(yīng)寫為 JspServlet 2)在 http:/localhost:8080/jsp2servlet/admin/ 目錄下的 jsp 頁面訪問 JspServlet2,url應(yīng)寫為 admin/JspServlet2、在 servlet直接用 request對象,得到發(fā)送來的請求內(nèi)容;用 request.getSession(),得到 session對象,從而得到會話內(nèi)容。這里的 request.getSession()的參數(shù)為 boolean 類型,該方法意思可理解為:session可以認(rèn)為是每一個(gè)IE進(jìn)程對應(yīng)一個(gè)會話(新開一個(gè)IE進(jìn)程就可以對應(yīng)兩個(gè)會話的),getSession都是返回當(dāng)前用戶的會話對象,參數(shù)的區(qū)別在于:參數(shù)為true (默認(rèn)),則如果“當(dāng)前用戶的會話對象”為空(第一次訪問時(shí))則創(chuàng)建一個(gè)新的會話對象返回;參數(shù)為false,則如果“當(dāng)前用戶的會話對象”為空,則返回 null (即不自動創(chuàng)建會話對象)。利用這個(gè)方法可以判斷 session是否過期,如下: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對象使用setAttribute方法傳給下一頁面。在 servlet里使用 response.sendRedirect(url) 方法。注意這里的 url前不帶斜線 /,如 response.sendRedirect(”test.jsp“)2、url轉(zhuǎn)發(fā) ( Forward):是頁面的跳轉(zhuǎn),頁面內(nèi)容發(fā)生改變,url不變。可以帶 request和 session參數(shù)。在 servlet里使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。而這里的 url前需要帶斜線 /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response)servlet使用RequestDispatcher到j(luò)sp頁面 String url=/EShop.jsp; ServletContext sc = getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher(url); rd.forward(req, res); servlet重定向jsp,并將數(shù)據(jù)發(fā)送到別一個(gè)JSP中: request.setAttubute(messages,aaa); RequestDispatcher requestDispatcher=request.getRequestDispatcher(/jsp/testbean.jsp); requestDispatcher.forward(request,response);3.7、Servlet跳轉(zhuǎn)從JSP跳轉(zhuǎn)到Servlet可以實(shí)現(xiàn),通過表單提交或超鏈接可以做到,但是現(xiàn)在如果從一個(gè)Servlet跳轉(zhuǎn)到JSP呢? HttpServletResponse對象,此對象可以完成跳轉(zhuǎn):public void sendRedirect();JumpServlet.java:package org.lxh.demo ;import javax.servlet.* ;import javax.servlet.http.* ;import java.io.* ;public class JumpServlet extends HttpServletpublic void init() throws ServletExceptionpublic void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOExceptionresp.sendRedirect(jump.jsp) ;public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOExceptionthis.doGet(req,resp) ;public void destroy();web.xml:jumporg.lxh.demo.JumpServletjump/jump以上實(shí)現(xiàn)了跳轉(zhuǎn)的功能,但是跳轉(zhuǎn)之后,發(fā)現(xiàn)地址欄已經(jīng)改變了,所以此跳轉(zhuǎn)稱為客戶端跳轉(zhuǎn)。如果此時(shí)假設(shè)一個(gè)Servlet要向JSP中傳遞屬性,那么應(yīng)該使用session范圍。JumpServlet.java:public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOExceptionrequest.getSession().setAttribute(name,hello) ;resp.sendRedirect(jump.jsp) ;jump.jsp:此時(shí),發(fā)現(xiàn)可以通過session屬性范圍傳遞內(nèi)容,但是如果現(xiàn)在傳遞的內(nèi)容很多,而程序中使用session范圍的話則肯定會帶來額外的性能降低,但是此時(shí),這些值只使用一次顯示,那肯定沒有必要使用session對象,最好使用request范圍。如果request屬性范圍也有一個(gè)限制,必須是服務(wù)器端跳轉(zhuǎn),在JSP中使用語句完成,但是在servlet中呢?就只能使用RequestDsipatcher接口完成,實(shí)際上語句也是使用包裝了此種應(yīng)用,既然RequestDispatcher是一個(gè)接口,所以必須通過其他方式實(shí)例化,通過request對象完成。JumpServlet.java:public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOExceptionreq.setAttribute(name,hello) ;/ 準(zhǔn)備跳轉(zhuǎn)到此頁
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源汽車售后服務(wù)及零部件供應(yīng)合同
- 工業(yè)模具維修翻新與市場調(diào)研及預(yù)測合作協(xié)議
- 生物生物科技園開發(fā)建設(shè)股權(quán)投資合同
- 體育賽事志愿者培訓(xùn)與賽事運(yùn)營支持服務(wù)協(xié)議
- 基爾霍夫矩陣與教育智能系統(tǒng)的結(jié)合研究-洞察闡釋
- 企業(yè)稅收籌劃與稅務(wù)合規(guī)執(zhí)行合同
- 模塊化應(yīng)急醫(yī)院建造與醫(yī)療物資采購及配送服務(wù)協(xié)議
- 字符串池內(nèi)存管理-洞察闡釋
- 大數(shù)據(jù)環(huán)境下動態(tài)補(bǔ)償算法的創(chuàng)新方法-洞察闡釋
- 苗木短期采購合同
- 鯉科魚類八亞科檢索表(新)
- 烙鐵頭的壽命一般有多長
- GB∕T 37370-2019 中國常見色色名和色度特性
- 冀教英語六年級下冊作文范文
- Continual Improvement持續(xù)改進(jìn)程序(中英文)
- 10x2000對稱式三輥卷板機(jī)設(shè)計(jì)機(jī)械畢業(yè)設(shè)計(jì)論文
- RCA應(yīng)用于給藥錯(cuò)誤事情的分析結(jié)果匯報(bào)
- 申論答題紙-方格紙模板A4-可打印
- 土石方測量方案完整版
- 律師事務(wù)所勞動合同范本2(律師助理和實(shí)習(xí)律師參照適用
- 施工單位動火申請書內(nèi)容
評論
0/150
提交評論