- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
1、定义 设 \(u\) 和 \(v\) 为一张图上的任意两个节点。令 \(c(u, v)\) 为它们之间的边的容量, \(f(u, v)\) 为它们之间的流量,则需要满足以
1、前言 工作中涉及到文件系统,有时候需要判断文件和目录是否存在。我结合apue第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询。 2、stat系列函数 stat函数用来
并查集(Union-Find Set): 一种用于管理分组的数据结构。它具备两个操作:(1)查询元素a和元素b是否为同一组 (2) 将元素a和b合并为同一组。 注意:并查集不能将在同一组的元素拆
当下,注解非常流行,以前很长篇的代码,现在基本上一个注解就能搞定。 那,在Mybatis中又有哪些注解呢? Mybatis中的注解基本上都在org.apache.ibatis.annotat
指针操作数组,方法一是p+index,方法二是p[index],第二种方法跟数组访问方法是一样的。 数组引用返回的是数组的第一个元素的指针地址。 可以将指针指向数组的任意元素,然后从那里开始访问
通常部署完php环境后会进行一些安全设置,除了熟悉各种php漏洞外,还可以通过配置php.ini来加固PHP的运行环境,PHP官方也曾经多次修改php.ini的默认设置。 下面对php.ini中一
在JavaScript中,使用typeof可以检测基本数据类型,使用instanceof可以检测引用数据类型。在PHP中,也有检测数据类型的方法,具体如下: 1、输出变量的数据类型(gettype
把图片缓存到本地,在很多场景都会用到,如果只是存储文件信息,那建一个plist文件,或者数据库就能很方便的解决问题,但是如果存储图片到沙盒就没那么方便了。这里简单介绍两种保存图片到沙盒的方法。
(1)需要安装docker容器,在docker容器内安装jenkins,gogs,tomcat。 新建maven项目,添加findbugs plugin。 使用docker
今天主题是实现并发服务器,实现方法有多种版本,先从简单的单进程代码实现到多进程,多线程的实现,最终引入一些高级模块来实现并发TCP服务器。 说到TCP,想起吐槽大会有个段子提到三次握手,也只有程序
如下所示: Ctrl+1或F2快速修复 Ctrl+D快捷删除行 Shift+Enter 快速切换到下一行,在本行的任何位置都可 Ctrl+F11快速运行代码 Alt+上下键 快速移动行(可
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。 JSP编译后是”类servlet”。 Servlet和JSP最主要的不同点在于,Servlet的应用逻辑
Java中的Runable,Callable,Future,FutureTask,ExecutorService,Excetor,Excutors,ThreadPoolExcetor在这里对这些关键
读取Java文件到byte数组的三种方法(总结) ? 1
用java实现的数组创建二叉树以及递归先序遍历,递归中序遍历,递归后序遍历,非递归前序遍历,非递归中序遍历,非递归后序遍历,深度优先遍历,广度优先遍历8种遍历方式:
1、简明总结 ASCII(char) 返回字符的ASCII码值 BIT_LENGTH(str) 返回字符串的比特长度 CONCAT(s1,s2…,sn)
java应用服务器(web server),是指运行java程序的web应用服务器软件,不包括nginx、Apache等通用web服务器软件。 一、Tomcat Tomcat是Apache 软件基
事务作为抽象层,允许应用忽略DB 内部一些复杂并发问题和某些硬件、软件故障,简化应用层的处理逻辑:事务中止(transaction abort),而应用仅需重试。对复杂访问模式,事务可大大减少需要考虑
我们在本教程学习了如何描述 XML 文档的结构 我们学习到了如何使用 DTD 来定义一个 XML 文档的合法元素,以及如何在我们的 XML 内部或者作为一个外部引用来声明 DTD 我们学习了如何为
在这个XPath 基础教程中我们讲解了如何在 XML 文档中查找信息 我们可以使用 XPath 的元素和属性在 XML 文档中进行导航 我们也学习了如何使用 XPath 中内建的某些标准函数 如
我是一名优秀的程序员,十分优秀!