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 复用机 ...
随机推荐
- 【转】Android Camera(五)使用Camera功能 AREA的理解
http://blog.csdn.net/think_soft/article/details/7998478 使用Camera功能 大多数的Camera功能都是使用Camera.Parameters ...
- FontCombobox 和FontSizeCombobox
附件:http://files.cnblogs.com/xe2011/WindowsFormsFontCombox.rar 自定义组件字体组合框 自定义组件字体组合框如何使用 自定义组件字体大小组合框 ...
- 经典SQL语句大全之数据开发
数据开发 1.按姓氏笔画排序:Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多 ...
- Linux下jvm、tomcat、mysql、log4j优化配置笔记[转]
小菜一直对操作系统心存畏惧,以前也很少接触,这次创业购买了Linux云主机,由于木有人帮忙,只能自己动手优化服务器了.... 小菜的云主机配置大致为:centeos6(32位),4核心cpu,4G内存 ...
- [Usaco2006 Nov]Corn Fields牧场的安排 壮压DP
看到第一眼就发觉是壮压DP 然后就三进制枚举子集吧. 这题真是壮压入门好题... 对于dp[i][j] 表示第i行,j状态下前i行的分配方案数. 那么dp[i][j]肯定是从i-1行转过来的 那么由于 ...
- android开发之SwipeListView的使用
实现一种类似于qq中滑动列表的功能: 向左或者向右滑动,然后执行相关操作. 这里用到的是GitHub上的开源控件SwipeListView,下载地址https://github.com/47deg/a ...
- 在iis中mantisbt配置过程
最近需要安装个mantisbt,由于不想再安装个apache服务器,因此直接使用iis作为php解析服务器.同时为了方便管理安装包,将php安装包和扩展包能够独立存放在D:\Program Files ...
- codeforces 505C Mr. Kitayuta, the Treasure Hunter(dp)
题意:有30001个岛,在一条线上,从左到右编号一次为0到30000.某些岛屿上有些宝石.初始的时候有个人在岛屿0,他将跳到岛屿d,他跳跃的距离为d.如果当前他跳跃的距离为L,他下一次跳跃的距离只能为 ...
- Linq扩展方法之Aggregate 对序列应用累加器函数
Linq扩展方法之Aggregate 对序列应用累加器函数; 函数模板:// 函数名:对序列应用累加器函数. // Parameters:参数要求 // source:要聚合的 System.Col ...
- ios应用,今年最蛋疼的6月,IPV6!!
刚刚苹果大会结束,你是不是后悔没去听他的发布会,!!有钱么你? iPV6 国人蒙蔽了,介是什么鬼,经过两三次的残忍拒绝,我认真去研究了iPV6, 2.2 Details We discovered ...