gpt4 book ai didi

浅谈JSP与Servlet传值及对比(总结)

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 34 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章浅谈JSP与Servlet传值及对比(总结)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。 JSP编译后是”类servlet”.

Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来.

而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑.

本篇从以下四个方面探讨下JSP与Servlet的传值问题:

1、JSP传值给Servlet 。

JSP传值给Servlet有几种形式:Form表单传值,url传值,其他方式传值,以下使用中默认使用了EL表达式.

在使用的taocan.do,login.do需要在web.xml中进行配置,代码如下 。

?
1
2
3
4
5
6
7
8
< servlet >
< servlet-name >taocan</ servlet-name >
< servlet-class >(对应包名+类名)TaocanServlet</ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name >taocan</ servlet-name >
< url-pattern >/taocan.do</ url-pattern >
</ servlet-mapping >

  。

a、form表单传值:

JSP页面有:

?
1
2
3
4
5
< form action = "login.do?number=${number}" method = "post" >
< input type = "text" placeholder = "用户名" name = "username" >
< input type = "password" placeholder = "密码" name = "password" >
< input type = "submit" value = "submit" >
</ form >

  。

Sevlet中,在程序中如下:

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

可获取jsp传的username,password 。

b、url传值 。

比如这里的 <a>标签的 href="login.do?number=${number}" rel="external nofollow" 与 <form>标签的 action="login.do?number=${number}",在servlet同样用 request.getParameter("number")获取; 。

c、Java代码传值 。

java片段代码,servlet只能接到 session.setAttribute("testSession","Hello session")的内容,而接不到 request的内容。在 servlet里用 request.getSession().getAttribute("testSession")获取 session内容.

但是实际中在页面部分一般不直接写java片段代码,而是在javascipt代码中来传递.

javascipt中传递的几种形式如下:

1、直接跳转,在页面的调用下面的方法实现跳转.

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

  。

2、页面定义ID及方法动态传值:

此处用到了jquery的语法,使用前请导入相应的包(例如:jquery-3.1.1.js) 。

?
1
2
3
4
5
6
7
< td id = "${cart.cartId}" >${cart.cartPrice }</ td >
< input type = "button" onClick = "add(${cart.cartPrice })" />
jquery中接收:
var currentprice;
function add(id){
currentprice=$("#"+id).text();
}

  。

另一种形态,当同一个循环体中需要调用不同的DOM对用ID对象,修改price名称即可 。

?
1
2
3
4
5
6
7
< td id = "${cart.cartId}price" >${cart.cartPrice }</ td >
 
< input type = "button" onClick = "add(${cart.cartPrice })" />
var currentprice;
function add(id){
currentprice=$("#"+id+"price").text();
}

2、Servlet传值给Jsp 。

具体实现如下:

Servlet中java代码:String username = req.getParameter("username"); req.setAttribute("num", num); req.getSession().setAttribute("userphone", user.getUserPhone()); request.getRequestDispatcher( "网址/jsp页面 ").forward(request,response),

jsp页面:通常使用EL表达式接收 。

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

3、Servlet传值给Servlet 。

1、直接跳转(假设变量num已经定义) 。

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

2、通过Session传递,当然Application也可以,此处省略.

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

总结下forward和sendRedirect区别:

1.request.getRequestDispatcher()是请求转发,前后页面共享一个request,是在服务器端运行 ,

Response.sendRedirect()是通过向客户浏览器发送命令来完成,跳转到另一个新的页面. 所以RequestDispatcher.forward()对于浏览器来说是“透明的”; 而HttpServletResponse.sendRedirect()则不是.

4、JSP传值给JSP 。

1、直接传递:

在第一个页面中设置属性:

?
1
2
3
4
5
<%
request.setAttribute("name","username");
request.setAttribute("date","new Date()");
%>
< jsp:forward page = "demo2.jsp" />

  。

在第二个页面中获取:

?
1
2
3
4
5
6
<%
String username = (String)request.getAttribute("name");
Date date = (Date)request.getAttribute("date");
%>
< h2 >姓名:<%=username%></ h2 >
< h2 >日期:<%=date%></ h2 >

  。

2、一般在页面中很少直接写指令代码,另一个方法为在JS中先传值到中间Servlet中,然后再传到另外一个页面用EL表达式直接获取.

小结:两者之间的联系和区别 。

【1】JSP第一次运行的时候会编译成Servlet,驻留在内存中以供调用.

【2】JSP是web开发技术,Servlet是服务器端运用的小程序,我们访问一个JSP页面时,服务器会将这个JSP页面转变成Servlet小程序运行得到结果后,反馈给用户端的浏览器.

【3】Servlet相当于一个控制层再去调用相应的JavaBean处理数据,最后把结果返回给JSP.

【4】Servlet主要用于转向,将请求转向到相应的JSP页面.

【5】JSP更多的是进行页面显示,Servlet更多的是处理业务,即JSP是页面,Servlet是实现JSP的方法.

【6】Servlet可以实现JSP的所有功能,但由于美工使用Servlet做界面非常困难,后来开发了JSP.

【7】JSP技术开发网站的两种模式:JSP + JavaBean;JSP + Servlet + JavaBean(一般在多层应用中, JSP主要用作表现层,而Servlet则用作控制层,因为在JSP中放太多的代码不利于维护,而把这留给Servlet来实现,而大量的重复代码写在JavaBean中).

【8】二者之间的差别就是,开发界面是JSP直接可以编写。比如在JSP中写Table标记:<table>[数据]</table>;Servlet需要加入:out.println(“<table>[数据]</table>”)。JSP文件在被应用服务器(例如:Tomcat、Resin、Weblogic和Websphere),调用过之后,就被编译成为了Servlet文件。也就是说在网页上显示的其实是Servlet文件。Tomcat下面JSP文件编译之后生成的Servlet文件被放在了work文件夹下,JSP中的HTML代码在Servlet都被out出来,而JSP代码按照标签的不同会放在不同的位置.

【9】JSP中嵌入HTML代码,而Servlet中嵌入JAVA代码.

【10】在一个标准的MVC架构中,Servlet作为Controller接受用户请求并转发给相应的Action处理,JSP作为View主要用来产生动态页面,EJB作为Model实现你的业务代码.

以上这篇浅谈JSP与Servlet传值及对比(总结)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

最后此篇关于浅谈JSP与Servlet传值及对比(总结)的文章就讲到这里了,如果你想了解更多关于浅谈JSP与Servlet传值及对比(总结)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com