符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。 JSP编译后是”类servlet”。
乌海海南ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
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中进行配置,代码如下
taocan (对应包名+类名)TaocanServlet taocan /taocan.do
a、form表单传值:
JSP页面有:
Sevlet中,在程序中如下:
String username = request.getParameter("username");
String password = request.getParameter("password");
可获取jsp传的username,password
b、url传值
比如这里的 标签的 href="login.do?number=${number}" rel="external nofollow" 与
c、Java代码传值
java片段代码,servlet只能接到 session.setAttribute("testSession","Hello session")的内容,而接不到 request的内容。在 servlet里用 request.getSession().getAttribute("testSession")获取 session内容。
但是实际中在页面部分一般不直接写java片段代码,而是在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)
${cart.cartPrice } jquery中接收: var currentprice; function add(id){ currentprice=$("#"+id).text(); }
另一种形态,当同一个循环体中需要调用不同的DOM对用ID对象,修改price名称即可
${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()"); %>
在第二个页面中获取:
<% String username = (String)request.getAttribute("name"); Date date = (Date)request.getAttribute("date"); %>姓名:<%=username%>
日期:<%=date%>
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标记:
【9】JSP中嵌入HTML代码,而Servlet中嵌入JAVA代码。
【10】在一个标准的MVC架构中,Servlet作为Controller接受用户请求并转发给相应的Action处理,JSP作为View主要用来产生动态页面,EJB作为Model实现你的业务代码。
以上这篇浅谈JSP与Servlet传值及对比(总结)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持创新互联。