Struts与jsp+javabean+servlet区别
采用Struts框架技术和直接使用jsp+javabean技术开发各有什么优势?各自的缺点又是什么?
在Javaweb开发领域存在2种开发模式, 模式一,jsp+javabean
模式二,jsp+javabean+servlet,即所谓的MVC设计,struts只不过是遵循MVC的一个开源框架.
在模式一中(jsp+javabean),这种设计模式适合,小规模web开发,体现在轻巧兴,也就是更轻量级一些(内存加载的类少,相对struts而言),但是jsp中会嵌入大量的html和Java脚本,规模小还好,如果大型企业web,随着规模的加大,太多的html和java脚本交织在一起,可读性差,而且修改一个jsp可能会牵连到其他的页面. 现在大规模的企业开发都选择struts,因为他成功的吧web分为三层,即模型,视图,控制器,在开发团队中更容易分工,而且逻辑部分和显示部分被分离到,module和jsp中去了,可读性也好了,但是struts在启动的时候要加载一些额外的类(struts的类),这对于小型企业用的低端服务器来说,会站内存,降低速度.
所以,本人在开发中得到的总结是小规模开发用jsp+javabean,大规模的用struts。
一.JSP和JavaBean模型
模型的结构如下图所示,称之为JSP和JavaBean模型。其工作原理是:当浏览器发出请求时,JSP接收请求并访问JavaBean。若需要访问数据库或后台服务器,则通过JavaBean连接数据库或后台服务器,执行相应的处理。JavaBean将处理的结果数据交给JSP。JSP提取结果并重新组织后,动态生成HTML页面,返回给浏览器。用户从浏览器显示的页面中得到交互的结果。
JSP和JavaBean模型充分利用了JSP技术易于开发动态网页的特点,页面显示层的任务由JSP(但它也含事物逻辑层的内容)承担,JavaBean主要负责事务逻辑层和数据层的工作。JSP和JavaBean模型依靠几个JavaBean组件实现具体的应用功能,生成动态内容,起最大的特点就是简单。
二.JSP和JavaBean+Servlet模型
JSP和JavaBean+Servlet模型的体系结构如下图所示,称之为JSP和JavaBean和Servlet模型。它是一种采用基于模型视图控制器(Model和View和Controller)的设计模型,即MVC模型。该模型将JSP程序的功能分为3个层次:Model(模型)层、View(视图)层、Controller(控制器层)。Model层实现业务逻辑,包括了Web应用程序功能的核心,负责存储与应用程序相关的数据;View层用于用户界面的显示,它可以访问Model层的数据,但不能更改这些数据;Controller层主要负责Model和View层之间的控制关系。
具体实现时,JavaBean作为模型层,Servlet作为控制层,JSP作为视图层。每层的作用如下:
1.JavaBean作为Model层,实现各个具体的应用逻辑和功能。
2.Servlet作为Controller层,负责处理HTTP请求,包括:
◆对输入数据的检查和转换。
◆通过JavaBean访问数据库。
◆初始化JSP页面中要用到的JavaBean或对象。
◆根据处理中不同的分支和结果,决定转向那个JSP等。
3.JSP作为View层,负责生成交互后返回的界面。它主要通过信息共享,获取Servlet生成的对象或JavaBean,从中取出数据,插入到HTML页面中。
该模型的工作原理是:所有的请求都被发送给作为控制器的Servlet。Servlet接收请求,并根据请求信息将它们分发给相应的JSP页面来响应;同时Servlet还根据JSP的需求生成相应的JavaBean对象并传输给JSP。JSP通过直接调用方法或利用UseBean的自定义标签,得到 JavaBean中的数据。
这种设计模式通过Servlet和JavaBean的合作来实现交互处理,很好的实现了表示层、事务逻辑层和数据的分离。
三.两种模型的比较
从以上对两种模型的说明来看,JSP和JavaBean模型和JSP和
JavaBean+Servlet模型的整体结构都比较清晰,易于实现。它们的基本思想都是实现表示层、事务逻辑层和数据层的分离。这样的分层设计便于系统的维护和修改。两种模型的主要区别表现在:
1.处理流程的主控部分不同。JSP和JavaBean模型利用JSP作为主控部分,将用户的请求、JavaBean和响应有效的链接起来。JSP和JavaBean+Servlet模型利用Servlet作为主控部分,将用户的请求、JavaBean和响应有效的链接起来。
2.实现表示层、事务逻辑层和数据层的分离程度不同。JSP和JavaBean+Servlet模型比JSP和JavaBean模型有更好的分离效果。当事务逻辑比较复杂、分支较多或需要涉及多个JavaBean组件时,JSP和JavaBean模型常常会导致JSP文件中嵌入大量的脚本或Java代码。特别是大型项目开发中,由于页面设计和逻辑处理分别由不同的专业人员承担,如果JSP 有相当一部分处理逻辑和页面描述混在一起,这就有可能引起分工不明确,不利于两个部分的独立开发和维护,影响项目的施工和管理。在JSP和JavaBean+Servlet模型中,由 Servlet处理HTTP请求,JavaBean承担事务逻辑处理,JSP仅负责生成网页的工作,所以表现层的混合问题比较轻,适合于不同专业的专业人员独立开发Web项目中的各层功能。
3.适应于动态交互处理的需求不同。当事务逻辑比较负责、分支较多或需要涉及很多JavaBean组件时,由于JSP和JavaBean+Servlet模型比JSP和JavaBean模型有更清晰的页面表现、更明确的开发模块的划分,所以使用JSP和JavaBean+Servlet模型比较适合。然而,JSP和JavaBean+Servlet模型需要编写Servlet程序,Servlet程序需要的工具是Java集成开发环境,编程工作量比较大。对于简单的交互处理,利用JSP和JavaBean模型,JSP主要是使用HTML工具开发,然后再插入少量的Java代码就可以实现动态交互。在这种情况下,使用JSP和JavaBean模型更加方便快捷。
JSP和JavaBean模型和JSP和JavaBean+Servlet模型这两种用于开发Web应用的方法都有很好的使用性。当然,实现动态交互的Web应用,不限于这两种模型。在实际Web应用的开发过程中,需要根据系统特点、客户需求及处理逻辑的特性,选择合适的模型,力求使整个应用的体系结果更加合理,从而实现不同的交互处理。
Struts与jsp+javabean+servlet区别的更多相关文章
- JSP+JavaBean+Servlet技术(MVC模型)
一,Servlet开发用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这种 ...
- JSP+JavaBean+Servlet工作原理实例…
JSP+JavaBean+Servlet工作原理实例讲解 首先,JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念.引用mz3226960提出的MVC的概念,即M-model ...
- JSP+JavaBean+Servlet实现各类列表分页功能
需求: 每页列表下都有一个分页的功能,显示总数量.当前页/总页数.首页.上一页.下一页.最后一页.GO到第几页 效果动态图: 实现思路: 因为每个列表页都需要,在每个出列表页数据的servlet中都要 ...
- 如何开发简单的javaweb项目,jsp+javabean+servlet
一.相关的软件下载和环境配置 1.下载并配置JDK. 2.下载eclipse. 3.下载并配置apache-tomcat(服务器). 4.下载MySQL(数据库). 5.下载Navicat for M ...
- JSP + JavaBean + Servlet实现MVC设计模式
1.流程图: 2.代码清单 数据库脚本: DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `userid` ) NOT NULL, `name` ...
- JSP+JavaBean+Servlet+Oracle新增功能中对Date类型的字段的处理
Oracle库中userinfo表borth字段是Date类型,age年纪字段是int类型.age字段要根据borth来自动计算 先说一下我遇到的问题: insert into的时候遇到日期转换类型错 ...
- JSP和Servlet及浏览器与tomcat交互过程
JSP与SERVLET区别 JSP在本质上就是Servlet,但是两者的创建方式不一样. JSP由HTML代码和JSP标签构成,可以方便地编写动态网页.因此在实际应用中采用Servlet来控制业务流程 ...
- jsp和servlet的问题收集.... 答案有部分是自己理解的,可能有点差异
如何创建一个动态工程? File ----> New ---->other ---->Web ---->Dynamic Web Project 选择动态WEB 项目工程 W ...
- Jsp与servlet的区别 1
Jsp与servlet的区别 2011-12-09 16:27:47 分类: Java 1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识 ...
随机推荐
- QQ空间说说如何批量删除
事件背景: 今天突发奇想,想把自己之前发的说说都删除了,结果就有了下面的代码 1.按F12 2.点击 Console,进入Console项 3.使用以下代码: var delay = 1000; fu ...
- OCM_第十六天课程:Section7 —》GI 及 ASM 安装配置 _安装 GRID 软件/创建和管理 ASM 磁盘组/创建和管理 ASM 实例
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- cf 1041C双指针
比赛的时候想着用单调队列做... 打完发现其实就是个双指针 /* 构造双指针解决即可 */ #include<iostream> #include<cstring> #incl ...
- python3笔记(一)初识Python
基础资料 什么是Python? Python官方网站 安装Python python的优点 完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行. pyth ...
- python 全栈开发,Day83(博客系统子评论,后台管理,富文本编辑器kindeditor,bs4模块)
一.子评论 必须点击回复,才是子评论!否则是根评论点击回复之后,定位到输入框,同时加入@评论者的用户名 定位输入框 focus focus:获取对象焦点触发事件 先做样式.点击回复之后,定位到输入框, ...
- 判断iframe加载完成、用于当ifame加载完成时执行一些操作
window.frames["iframec"].addEventListener( "load", function(){ window.frames[&qu ...
- Mac 下 Redis 5.0 的卸载与安装
卸载 停止 redis 服务器 redis-cli shutdown 检测 #检测后台进程是否存在 ps -ef |grep redis #检测6379端口是否在监听 netstat -lntp | ...
- 购物车的实现(jsp的session+Java的Map的结合)
1:电商如此发达的现在,作为一个web开发程序猿,如果不会写购物车,真是有点不好意思找工作.所以抓紧练习啊,从上篇博客中抽离出如何实现购物车的功能. 2:首先需要理解购物车实现的一些基本步骤. 2.1 ...
- Codeforces 605C Freelancer's Dreams 凸包 (看题解)
Freelancer's Dreams 我们把每个二元组看成是平面上的一个点, 那么两个点的线性组合是两点之间的连线, 即x * (a1, b1) + y * (a1, b1) && ...
- 第八章| 1. MySQL数据库|库操作|表操作
1.初识数据库 我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个 专门的处理软件,这就是mysql等数据库管理软件的 ...