JSP中两种模式的总结
运用JSP/Servlet实现的Web动态交互,主要采用:
模式一:JSP+JavaBean
链接:http://wxmimperio.coding.io/?p=155
模式二;JSP+Servlet+JavaBean
链接:http://wxmimperio.coding.io/?p=189
JSP和Servlet的比较
从技术角度看,其实JSP和Servlet是一样的,因为所有的JSP都会编译成Servlet,并且在Servlet容器中执行。
JSP相对于Servlet的优势:
- JSP以显示为中心,它为Web前端开发提供了更方便的开发
- JSP可以将显示和内容分离,这样项目的显示和业务逻辑开发可以分开同时进行
- JSP由容器自动编译
在Web建站时,如果功能不是非常稳定,则不建议使用Servlet。因为Servlet比JSP更难于维护,它需要编译成.class,而修改JSP时只要修改它的源文件,容器就会自动对JSP的变化重新进行编译,这也就是我在IDEA里用Jrebel进行热部署的时候,JSP文件编辑即显示,而修改Servlet文件时想要看到变化必须重新启动服务器生成.class文件。
模式一和模式二的区别:
- 处理的主控部分不同。模式一利用JSP作为主控部分,将用户的请求、JavaBean和事件响应有效的连接起来。模式二利用Servlet作为主控部分。
- 实现表现层、业务逻辑层和数据层的分离程度不同。模式二比模式一有更好的分离效果。当业务逻辑比较复杂时,模式一会导致JSP文件中嵌入大量的Java代码,不利于独立的开发和维护。模式二中,Servlet处理HTTP请求、JavaBean承担业务逻辑的处理,JSP仅负责获取数据生成动态页面的工作,可以将前端和后台有效的分开,有利于开发。
- 适用于动态交互处理的需求不同。当业务逻辑比较复杂、涉及到很多的JavaBean组件时,模式二有更加清晰的页面显示、更明确的开发模块划分。然而模式二需要编写Servlet程序,需要运用Java的编程工作量较大。对于较小的项目用模式一是不错的选择,对于要求封装性、维护性、安全性的大项目可以考虑用模式二。
两种模式的技术特点:
JSP+JavaBean模型
工作原理是:当HTTP发出请求时,JSP接收请求并访问JavaBean,当需要访问数据库或者服务器时,则通过JavaBean做相应处理。JavaBean将处理的结果返回JSP,JSP生成动态html将结果传送到浏览器并显示,用户得到交互结果。JSP作为视图,同时也有部分控制器的功能,JavaBean组件作为模型和控制器组件。
模式一的传递关系图:

JSP+Servlet+JavaBean模型
是典型的MVC模型,将程序分为3个层次—Model(模型层)、View(视图层)、Controller(控制器层)。Model层实现业务逻辑,包含了Web应用程序的核心,负责储存与数据的相关操作;View层负责用户界面及交互结果的显示;Controller层主要负责Model和View层之间的控制关系。
具体实现:
- JavaBean作为Model层,实现各个具体功能的业务逻辑
- Servlet作为Controller层,处理HTTP请求
- JSP作为View层,将交互的结果显示到界面。用于信息的共享,获取Servlet生成的对象或JavaBean,从中获取数据,动态生成html页面用于显示。
工作原理是:用户请求首先发送到Servlet,Servlet通过JDBC连接数据库,执行数据库操作。操作完成后再用JavaBean封装执行的结果,然后把结果保存到请求对象中,最后把视图派发到用于显示的JSP页面中。JSP页面读取Servlet的执行结果并进行显示。这种模式中,个组件的分工关系明确,JSP用于显示,它充当了视图的角色;Servlet用于执行业务逻辑,它相当于控制器的角色;JavaBean组件用于表示数据,相当于模型的角色。
模式二的传递关系图:

参考:JSP应用开发详解(第三版)
JSP中两种模式的总结的更多相关文章
- jsp中两种include的区别【转】
引用文章:http://www.ibm.com/developerworks/cn/java/j-jsp04293/ http://www.cnblogs.com/lazycoding/archive ...
- JSP中两种include的区别
首先说明这两种都是什么: <%@ include file=”relativeURI”%> 可以叫作静态include(静态包含),是jsp指令中的一种,(JSP指令控制JSP编译器如何去 ...
- JSP中使用的模式——JSP+Servlet+JavaBean
上一篇博文写到模式一:JSP+JavaBean 链接地址:http://wxmimperio.coding.io/?p=155 JSP中两种模式的总结 链接地址:http://wxmimperio.c ...
- JSP中使用的模式——JSP+JavaBean
模式二:JSP+Servlet+JavaBean 链接地址:http://wxmimperio.coding.io/?p=189 JSP中两种模式的总结 链接地址:http://wxmimperio. ...
- 协议中UART的两种模式 【转】
转自:http://wjf88223.blog.163.com/blog/static/3516800120104179327286/ ^^…… 协议栈中UART有两种模式:1.中断2.DMA 对于这 ...
- LoadRunner中两种录制模式的区别
决定我们成为什么样人的,不是我们的能力,而是我们的选择. ——<哈利-波特与密室> 一.先看看两种模式的设置和录制脚本的区别 设置HTML录制模式: 设置URL录制模式: HTML脚本: ...
- Spark中的两种模式
两种模式 client-了解 cluster模式-开发使用 操作 1.需要Yarn集群 2.历史服务器 3.提交任务的的客户端工具-spark-submit命令 4.待提交的spark任务/程序的字节 ...
- Windows2003 IIS6.0支持32位和64位两种模式的设置方法
IIS 6.0 可支持 32 位和 64 位两种模式.但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式.ASP.NET 1.1 只在 32 位模式下运行.而 ASP ...
- 【转】Reactor与Proactor两种模式区别
转自:http://www.cnblogs.com/cbscan/articles/2107494.html 两种IO多路复用方案:Reactor and Proactor 一般情况下,I/O 复用机 ...
随机推荐
- 初识jQuery,八字真言“选择元素,对其操作”
jQuery在我印象中,就是很多类似$(),然后昨天开始接触了,觉得很和谐,获取元素比JavaScript简单很多,有意思. 一.开始学习jQuery,下载jQuery库的文件 http://jque ...
- mysql日志设置
mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数.如果在my.cnf里面修改,需增加如 ...
- 非常全面的java基础笔试题
下面是java基础笔试题,当时我去笔试,做了1个小时(80道选择题,后面的简答题就没时间做了),结果很吓人,太挫了,最后被面试官忽悠去培训去了,呵呵.我偷偷把面试题弄了下来,用来学习吧,也希望能对你们 ...
- hdu2030java
汉字统计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissio ...
- ASP.NET获取汉字首字母
/// <summary> /// 获取汉字首字母(可包含多个汉字) /// </summary> /// <param name="strText" ...
- return与finally
当return遇到了finally,先标记return的值,然后执行finally,当finally修改了return的值,那么执行finally后,传递最后一次return的值,若finally没有 ...
- SELECT [Code] ,[AlarmID] ,[ItemName] ,[isDeleted] ,[Remark] FROM [LjlData].[dbo].[T_BaseDetail] union select 0--
SELECT [id] ,[AlarmID] ,[ItemName] ,[isDeleted] ,[Remark] FROM [LjlData]. ...
- U3D 精灵的点击监听
U3D游戏中,可能会用到点击对象,完成某项操作, 方法一:可以通过接收Input对象的输入,进行利用 方法二:给对象绑定一个collier 组件,然后就能后使用内置方法 这里有点不同,方法一,是不管哪 ...
- WisDom.Net 框架设计(七) 验证框架
WisDom.Net-验证框架 1.分类 这里我们将数据验证分为以下几种 数据类型校验 主要用于确保数据类型输入的正确 比如年龄一项输入 A岁 ,显然不合法 域检查 ...
- ActionLink 的一些小问题
近日为群友解答问题时遇到一个问题 由于自己以前确实没碰到过 特此记录一下 起因是群友想要用htmlhelper实现这样一个效果 <a href="我是链接" class=&q ...