真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

淺談JSP與Servlet傳值及對比(總結(jié))

JSP是Servlet技術(shù)的擴(kuò)展,本質(zhì)上是Servlet的簡易方式,更強(qiáng)調(diào)應(yīng)用的外表表達(dá)。 JSP編譯后是”類servlet”。

烏海海南ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

Servlet和JSP最主要的不同點在于,Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來。

而JSP的情況是Java和HTML可以組合成一個擴(kuò)展名為.jsp的文件。JSP側(cè)重于視圖,Servlet主要用于控制邏輯。

本篇從以下四個方面探討下JSP與Servlet的傳值問題:

一、JSP傳值給Servlet

JSP傳值給Servlet有幾種形式:Form表單傳值,url傳值,其他方式傳值,以下使用中默認(rèn)使用了EL表達(dá)式。

在使用的taocan.do,login.do需要在web.xml中進(jìn)行配置,代碼如下


taocan
(對應(yīng)包名+類名)TaocanServlet


taocan
/taocan.do

a、form表單傳值:

JSP頁面有:

Sevlet中,在程序中如下:

String username = request.getParameter("username");
String password = request.getParameter("password");

可獲取jsp傳的username,password

b、url傳值

比如這里的 標(biāo)簽的 href="login.do?number=${number}" rel="external nofollow" 與

標(biāo)簽的 action="login.do?number=${number}",在servlet同樣用 request.getParameter("number")獲??;

c、Java代碼傳值

java片段代碼,servlet只能接到 session.setAttribute("testSession","Hello session")的內(nèi)容,而接不到 request的內(nèi)容。在 servlet里用 request.getSession().getAttribute("testSession")獲取 session內(nèi)容。

但是實際中在頁面部分一般不直接寫java片段代碼,而是在javascipt代碼中來傳遞。

javascipt中傳遞的幾種形式如下:

1、直接跳轉(zhuǎn),在頁面的調(diào)用下面的方法實現(xiàn)跳轉(zhuǎn)。

var username= "${user.userName }";
function subm(){
window.location.href="login.do?username=" rel="external nofollow" +username;
}

2、頁面定義ID及方法動態(tài)傳值:

此處用到了jquery的語法,使用前請導(dǎo)入相應(yīng)的包(例如:jquery-3.1.1.js)

${cart.cartPrice }

jquery中接收:
var currentprice;
function add(id){
currentprice=$("#"+id).text();
}

另一種形態(tài),當(dāng)同一個循環(huán)體中需要調(diào)用不同的DOM對用ID對象,修改price名稱即可

${cart.cartPrice }


var currentprice;
function add(id){
currentprice=$("#"+id+"price").text();
}

二、Servlet傳值給Jsp

具體實現(xiàn)如下:

Servlet中java代碼:String username = req.getParameter("username");
req.setAttribute("num", num);
req.getSession().setAttribute("userphone", user.getUserPhone());
request.getRequestDispatcher( "網(wǎng)址/jsp頁面 ").forward(request,response);

jsp頁面:通常使用EL表達(dá)式接收

<%String s =(String)request.getAttribute( "num");%>
如${num},${sessionScope.userphone}等形式j(luò)sp頁面就可以取出Servlet的值。

三、Servlet傳值給Servlet

1、直接跳轉(zhuǎn)(假設(shè)變量num已經(jīng)定義)

resp.sendRedirect("taocan.do?username="+username);

2、通過Session傳遞,當(dāng)然Application也可以,此處省略。

req.getSession().setAttribute("userphone", user.getUserPhone());
String username = (String)req.getSession().getAttribute("username");

總結(jié)下forward和sendRedirect區(qū)別:

1.request.getRequestDispatcher()是請求轉(zhuǎn)發(fā),前后頁面共享一個request,是在服務(wù)器端運行 ;

Response.sendRedirect()是通過向客戶瀏覽器發(fā)送命令來完成,跳轉(zhuǎn)到另一個新的頁面. 所以RequestDispatcher.forward()對于瀏覽器來說是“透明的”; 而HttpServletResponse.sendRedirect()則不是。

四、JSP傳值給JSP

1、直接傳遞:

在第一個頁面中設(shè)置屬性:

<% 
request.setAttribute("name","username");
request.setAttribute("date","new Date()");
%>

在第二個頁面中獲?。?/p>

<%
String username = (String)request.getAttribute("name");
Date date = (Date)request.getAttribute("date");
%>

姓名:<%=username%>

日期:<%=date%>

2、一般在頁面中很少直接寫指令代碼,另一個方法為在JS中先傳值到中間Servlet中,然后再傳到另外一個頁面用EL表達(dá)式直接獲取。

小結(jié):兩者之間的聯(lián)系和區(qū)別

【1】JSP第一次運行的時候會編譯成Servlet,駐留在內(nèi)存中以供調(diào)用。

【2】JSP是web開發(fā)技術(shù),Servlet是服務(wù)器端運用的小程序,我們訪問一個JSP頁面時,服務(wù)器會將這個JSP頁面轉(zhuǎn)變成Servlet小程序運行得到結(jié)果后,反饋給用戶端的瀏覽器。

【3】Servlet相當(dāng)于一個控制層再去調(diào)用相應(yīng)的JavaBean處理數(shù)據(jù),最后把結(jié)果返回給JSP。

【4】Servlet主要用于轉(zhuǎn)向,將請求轉(zhuǎn)向到相應(yīng)的JSP頁面。

【5】JSP更多的是進(jìn)行頁面顯示,Servlet更多的是處理業(yè)務(wù),即JSP是頁面,Servlet是實現(xiàn)JSP的方法。

【6】Servlet可以實現(xiàn)JSP的所有功能,但由于美工使用Servlet做界面非常困難,后來開發(fā)了JSP。

【7】JSP技術(shù)開發(fā)網(wǎng)站的兩種模式:JSP + JavaBean;JSP + Servlet + JavaBean(一般在多層應(yīng)用中, JSP主要用作表現(xiàn)層,而Servlet則用作控制層,因為在JSP中放太多的代碼不利于維護(hù),而把這留給Servlet來實現(xiàn),而大量的重復(fù)代碼寫在JavaBean中)。

【8】二者之間的差別就是,開發(fā)界面是JSP直接可以編寫。比如在JSP中寫Table標(biāo)記:

[數(shù)據(jù)]
;Servlet需要加入:out.println(“[數(shù)據(jù)]
”)。JSP文件在被應(yīng)用服務(wù)器(例如:Tomcat、Resin、Weblogic和Websphere),調(diào)用過之后,就被編譯成為了Servlet文件。也就是說在網(wǎng)頁上顯示的其實是Servlet文件。Tomcat下面JSP文件編譯之后生成的Servlet文件被放在了work文件夾下,JSP中的HTML代碼在Servlet都被out出來,而JSP代碼按照標(biāo)簽的不同會放在不同的位置。

【9】JSP中嵌入HTML代碼,而Servlet中嵌入JAVA代碼。

【10】在一個標(biāo)準(zhǔn)的MVC架構(gòu)中,Servlet作為Controller接受用戶請求并轉(zhuǎn)發(fā)給相應(yīng)的Action處理,JSP作為View主要用來產(chǎn)生動態(tài)頁面,EJB作為Model實現(xiàn)你的業(yè)務(wù)代碼。

以上這篇淺談JSP與Servlet傳值及對比(總結(jié))就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。


當(dāng)前題目:淺談JSP與Servlet傳值及對比(總結(jié))
網(wǎng)站鏈接:http://weahome.cn/article/jseehe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部