全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

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

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

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

一、JSP传值给Servlet

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

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

<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页面有:

<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代码传值

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

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

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

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

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

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

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

<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名称即可

<td id="${cart.cartId}price">${cart.cartPrice }</td>

<input type="button" onClick="add(${cart.cartPrice })"/>
var currentprice;
function add(id){
currentprice=$("#"+id+"price").text();
}

二、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的值。

三、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()则不是。

四、JSP传值给JSP

1、直接传递:

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

<% 
request.setAttribute("name","username");
request.setAttribute("date","new Date()");
%>
<jsp:forward page="demo2.jsp"/>

在第二个页面中获取:

<%
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传值及对比(总结)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# servlet  # jsp  # 传值  # Servlet与JSP间的两种传值情况  # 是在  # 的是  # 跳转  # 放在  # 给大家  # 几种  # 表单  # 主要用于  # 太多  # 第一个  # 两种  # 希望能  # 第二个  # 然后再  # 可以实现  # 再去  # 另外一个  # 最主要  # 这篇  # 会将 


相关文章: 如何在阿里云购买域名并搭建网站?  5种Android数据存储方式汇总  建站之星好吗?新手能否轻松上手建站?  韩国服务器如何优化跨境访问实现高效连接?  如何制作网站标识牌,动态网站如何制作(教程)?  c++ stringstream用法详解_c++字符串与数字转换利器  如何在云主机快速搭建网站站点?  如何选择CMS系统实现快速建站与SEO优化?  如何制作算命网站,怎么注册算命网站?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  如何设计高效校园网站?  临沂网站制作企业,临沂第三中学官方网站?  如何配置FTP站点权限与安全设置?  如何在局域网内绑定自建网站域名?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  已有域名和空间如何快速搭建网站?  如何快速选择适合个人网站的云服务器配置?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  香港服务器选型指南:免备案配置与高效建站方案解析  如何通过老薛主机一键快速建站?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  建站之星如何保障用户数据免受黑客入侵?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  建站主机选购指南:核心配置优化与品牌推荐方案  如何快速搭建安全的FTP站点?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  建设网站制作价格,怎样建立自己的公司网站?  c# 服务器GC和工作站GC的区别和设置  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  网站制作知乎推荐,想做自己的网站用什么工具比较好?  如何用IIS7快速搭建并优化网站站点?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  简单实现Android文件上传  制作证书网站有哪些,全国城建培训中心证书查询官网?  广州营销型建站服务商推荐:技术优势与SEO优化解析  c# 在高并发场景下,委托和接口调用的性能对比  沈阳制作网站公司排名,沈阳装饰协会官方网站?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  建站VPS能否同时实现高效与安全翻墙?  宝塔新建站点报错如何解决?  宝塔新建站点为何无法访问?如何排查?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  C#怎么使用委托和事件 C# delegate与event编程方法  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  网站制作的方法有哪些,如何将自己制作的网站发布到网上? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。