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}"与 <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、直接跳转,在页面的调用下面的方法实现跳转。
var username= "${user.userName }";
function subm(){
window.location.href="login.do?username="+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实现你的业务代码。

时间: 2024-12-20 00:47:21

JSP与Servlet传值及对比的相关文章

【jsp】Servlet与jsp之间的传值

Servlet与JSP 之间的传值有两种情况:JSP -> Servlet, Servlet -> JSP. 通过对象 request和 session (不考虑 application)完成传值. 一.JSP -> servlet JSP页面有3种方法向 servlet传值: form表单.URL <!-- JSP page --> ... <%...... session.setAttribute("testSession","Hell

Servlet与jsp间的传值问题

Servlet与JSP 之间的传值有两种情况:JSP -> Servlet, Servlet -> JSP.通过对象 request和 session (不考虑 application)完成传值. 一.JSP -> servlet JSP页面有3种方法向 servlet传值: form表单.URL .java片段代码 form表单: <form action="JspServlet?action=toServlet" method="post"

JSP,servlet和数据库之间传值出现乱码的问题

 最近困扰我很久的一个问题终于解决了,为他我头疼了好几天,问题是JSP通过servlet向数据库传值,查询显示在页面的时候出现了乱码,原先我数据库中有两行带有中文的数据,查询的时候倒是没有出现乱码,我debug一下,发现JSP和servlet中所有接受中文字符集的变量都没有出现乱码,我去数据库查看,所有添加的中文字符都是问号,问题发现了,我就百度什么原因,有人说改变tomcat字符集,通过更改server.xml文件的字符集来接受中文字符, 方法一: <Connector port="

jsp和servlet学习总结

一.Jsp与servlet的区别: jsp是java代码嵌入html中,用java代码控制来html. Servlet完全是JAVA程序代码构成,用来流程控制和事务处理 jsp更擅长表现于页面显示,servlet更擅长于逻辑控制. Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到. 二.如何配置一个servlet使它运行 1.servlet的名字,包类 <servle

jsp与后台传值

1.一般是在Action中定义一个成员变量,然后对这个成员变量提供get/set方法,在JSP页面就可以取到这个变量的值了. 1)在Action中定义成员变量//定义一个成员变量private String message; //提供get/set方法public String getMessage() { return message;}public void setMessage(String message) { this.message = message;} 2)在JSP页面中取值${

Jsp与servlet路径问题

Web开发中的路径问题 2012-01-23 01:43:54|  分类: JAVA |  标签:jsp  web  servlet  路径  javabean   |举报 |字号大中小 订阅 路径问题在Web开发中算是令人比较蛋疼的问题,尤其是用相对地址时,同样的代码,在不同的目录结构中竟然会出现有对有错的结果,让人茫然不知所措.这种错误,究其原因,还是对Web中路径的概念一知半解,为彻底避免这种错误,提高开发效率,这里对Web中路径问题稍作总结. 1. 服务器端的相对地址 是在服务器端解析的

jsp与servlet之间的参数传递【转】

JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP. 通过对象 request和 session (不考虑 application)完成传值. 一.JSP -> servlet JSP页面有3种方法向 servlet传值: form表单.URL .其他 <!-- JSP page --> ... <%...... session.setAttribute("testSession","

Jsp与servlet之间页面跳转及参数传递实例(转)

原网址:http://blog.csdn.net/ssy_shandong/article/details/9328985 11. jsp与servlet之间页面跳转及参数传递实例 分类: Java Web2013-07-17 16:24 16461人阅读 评论(12) 收藏 举报 jsp servlet传递参数 目录(?)[-] 1从一个jsp页面跳转到另一个jsp页面时的参数传递 2jsp页面传递参数给servlet 3从servlet到jsp页面中传递参数 4从一个servlet到另一个s

jsp、servlet一家亲

上个月写了<教你servlet入门>,今天来探究一下关于jsp的那些故事. § 回顾 1. 什么是Web应用程序? 2. 什么是Servlet,和一般Java程序有什么区别? 3. 什么是JSP,和Java是什么关系? 4. JSP和Servlet有哪些异同点? 5. JSP和Servlet的主要用途? § 一家亲 JSP:Java server  Pages,是由sun 公司倡导.许多公司参与一起建立的一种动态网页技术标准.它在HTML代码中插入JSP标记及Java程序(Scriptlet)