spring3mvc与struts2比较

合集下载

Struct2、Hibernate3、Spring3框架搭建实战

Struct2、Hibernate3、Spring3框架搭建实战

Struct2、Hibernate3、Spring3框架搭建实战采⽤⽬前最新的struts-2.3.1.2、hibernate3.6.10.Final、spring-framework-3.1.1.RELEASE开发包,以及eclipse-jee-indigo-SR2-win32、apache-tomcat-7.0.27服务器、JDK6和mysql5做开发环境,参考了前辈的⼀篇相关⽂章,改正了其中的错误和疏漏,克服了公司分配的“新”机器每⼩时⾃动重启三次的困难,终于把环境给搭好了。

整个过程中遵循的⼀个原则是,避免引⼊⽤不到的jar包,以求搭建⼀个最⼩的SSH 运⾏环境。

⾸先创建⼀个Dynamic web project 输⼊任意名字如SSHBase。

第⼀步:加载Spring环境我们需要引⼊的包有:org.springframework.asm-3.1.1.RELEASE.jarorg.springframework.beans-3.1.1.RELEASE.jarorg.springframework.context-3.1.1.RELEASE.jarorg.springframework.core-3.1.1.RELEASE.jarorg.springframework.expression-3.1.1.RELEASE.jarorg.springframework.jdbc-3.1.1.RELEASE.jarorg.springframework.web-3.1.1.RELEASE.jarorg.springframework.orm-3.1.1.RELEASE.jar由于spring默认开启了⽇志,还需要加⼊commons-logging的jar包,否则会报错。

建议不要⼀次性加⼊应该先加最核⼼的运⾏代码看缺少什么加什么,这样就不会加多余的包进来了,spring3已经把包按功能分开,不像以前⼀个包,这样更灵活,只要运⾏我们需要的功能,⽽没⽤到的就不⽤在硬性的添加进来。

Struts、Spring、Hibernate三大框架的原理和优点

Struts、Spring、Hibernate三大框架的原理和优点

Struts的原理和优点.Struts工作原理MVC即Model—View—Controller的缩写,是一种常用的设计模式。

MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。

MVC的工作原理,如下图1所示:Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。

Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展.Struts的工作原理,视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。

控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。

ActionServlet是一个通用的控制组件。

这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。

它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。

另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。

动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。

最后动作类把控制权传给后续的JSP 文件,后者生成视图。

所有这些控制逻辑利用Struts-config.xml文件来配置。

模型:模型以一个或多个java bean的形式存在。

这些bean分为三类:Action Form、Action、JavaBean or EJB.Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。

Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。

[原]MVC框架性能比较

[原]MVC框架性能比较

Java MVC框架性能比较- by zvane 现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到采用了struts2框架的项目访问速度,明显不如原来采用了struts1框架的项目快,带着这些疑惑,我对各类MVC框架的做了一个简单的性能分析比较,其结果应该说是基本符合预期的,可供大家参考。

测试环境:CPU:酷睿2 T5750,内存:DDR2-667 2G,Web容器:Tomcat6.0,最大线程数设置为1000,操作系统:WinXP-sp3测试步骤:搭建6个Web工程,如下:1.纯JSP:不包含任何MVC框架,只有一个测试用的JSP页面。

2.struts1:包含一个Action,不做任何逻辑处理,直接转发到一个JSP页面3.struts2 JSP:不包含Action,只包含测试JSP页面,直接访问该页面。

4.struts2 单例Action:采用Spring来管理Struts2的Action实例,并配置成单例模式。

5.struts2 多例Action:采用Spring来管理Struts2的Action实例,并配置成单例模式。

6.SpringMVC3:采用Spring来管理Controller实例,包含一个Controller,不做逻辑处理,收到请求后,直接返回到一个JSP页面。

测试结果:说明:以上测试虽不是非常的精确,但基本能说明一定的问题。

每个JSP页面和Action都不包含任何的业务逻辑代码,只是请求转发。

每轮测试取三次总时间的平均值。

所有工程的测试均全部完成并正常处理请求,没有请求拒绝情况发生。

结论:1.纯JSP的性能应该最高,这不难理解,JSP被编译成Servlet后,没有任何多余的功能,收到请求后直接处理。

(这也验证一句经典的话:越原始效率就越高。

)2.struts1的性能是仅次于纯JSP的,由于struts1采用单例Action模式,且本身的封装相比struts2应该说简单很多,虽然开发效率不如struts2,但已经过多年的实践考验,性能稳定高效。

对比分析Struts和Spring两种MVC框架

对比分析Struts和Spring两种MVC框架

对比分析Struts和Spring两种MVC框架2008年08月12日星期二17:26基于Web的MVC framework在J2EE的世界内已是空前繁荣。

TTS网站上几乎每隔一两个星期就会有新的MVC框架发布。

目前比较好的MVC,老牌的有Struts、Webwork。

新兴的MVC 框架有Spring MVC、Tapestry、JSF等。

这些大多是著名团队的作品,另外还有一些边缘团队的作品,也相当出色,如Dinamica、VRaptor等。

这些框架都提供了较好的层次分隔能力。

在实现良好的MVC 分隔的基础上,通过提供一些现成的辅助类库,同时也促进了生产效率的提高。

如何选择一个好的框架应用在你的项目中,将会对你的项目的效率和可重用是至关重要的。

本文将对目前最流行、最常用的两种framework进行介绍。

一)StrutsStruts是Apache软件基金下Jakarta项目的一部分。

Struts框架的主要架构设计和开发者是Craig R.McClanahan。

Struts 是目前Java Web MVC框架中不争的王者。

经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。

但是Struts某些技术特性上已经落后于新兴的MVC框架。

面对Spring MVC、Webwork2 这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。

但站在产品开发的角度而言,Struts仍然是最稳妥的选择。

Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。

基于struts构架的web 应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。

根据上面对framework的描述,我们很容易理解为什么说Struts是一个web framwork,而不仅仅是一些标记库的组合。

但Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。

Struts,Hibernate,Spring三框架的优缺点

Struts,Hibernate,Spring三框架的优缺点

上面回贴情绪有点激动,希望谅解,我不是因为有人批评Hibernate而感到不快,而是因为帖子里面的观点实在让我觉得荒谬。不管觉得Hibernate好也吧,不好也吧,我唯一觉得遗憾的是,在中文论坛里面找不到一个对Hibernate的真正高水平的评价。在TSS上有一个关于Hibernate的hot thread,跟了几百贴,其中包括Hibernate作者Gavin和LiDO JDO的CTO,对于JDO和Hibernate有过一些激烈的争论,我曾经耐心的看了一遍,仍然没有发现针对Hibernate真正有力的攻击,那些所谓的攻击无非针对Hibernate没有一个GUI的配置工具,没有商业公司支持,没有标准化等等这些站不住脚的理由。
6. 支持I18N
一、转到展示层时,需要配置forward,每一次转到展
示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。
使用Hibernate来提高上面架构的开发效率的架构:
3) Session Bean <-> DAO <-> Hibernate <-> DB
就上面3个架构来分析:
1、内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。
四、EB和Hibernate学习难度在哪里?

通过代码实例跟我学Struts2框架从入门到精通——Struts2框架和Spring3.X版相互整合的应用技术及实例

通过代码实例跟我学Struts2框架从入门到精通——Struts2框架和Spring3.X版相互整合的应用技术及实例

1.1通过代码实例跟我学Struts2框架从入门到精通——Struts2框架和Spring3.X版相互整合的应用技术及实例1.1.1Struts2和Spring3.X版系统整合的相关技术1、保证整合之前的Struts2项目是正确——先测试Struts2项目是否正确2、为什么要将Strut2与Spring进行整合(1)主要的目的能够在Struts2中应用Spring中的IoC和AoP,达到“相互利用”。

(2)在Struts2中也已经提供了struts2-spring-plugin-2.1.8.1.jar实现与Spring整合。

1.1.2构建整合两者的附加环境1、在Struts2的项目中添加与Spring整合的插件struts2-spring-plugin-2.3.1.2.jar因此,需要将struts2-spring-plugin-2.3.1.2.jar加到项目的WEB-INF/lib目录中。

2、在Struts2的Web项目中添加与Spring有关的系统包需要添加如下的Spring3.X版的系统库(共10个系统库文件),当然如果项目中已经存在有这些系统库,可以不需要重复地添加。

1)org.springframework.asm-3.0.0.RELEASE.jar2)org.springframework.beans-3.0.0.RELEASE.jar3)org.springframework.context-3.0.0.RELEASE.jar4)org.springframework.core-3.0.0.RELEASE.jar5)org.springframework.expression-3.0.0.RELEASE.jar6)org.springframework.jdbc-3.0.0.RELEASE.jar7)org.springframework.web-3.0.0.RELEASE.jar8)org.springframework.transaction-3.0.0.RELEASE.jar //Spring DAO或者与Hibernate相互整合9)aopalliance.jar10)org.springframework.aop-3.0.0.RELEASE.jar //Spring AOPSpring 3.2版本的系统包最后的结果如下:3、添加与log4J系统相关的系统库文件(1)log4J系统库log4j-1.2.12.jar和commons-logging.jar。

Struts2知识点总结

Struts2知识点总结

Struts2基础知识Struts2概述1.Struts2框架应用javaee三层结构中的web层框架。

2.Struts2框架在struts1和webwork基础之上发展的全新框架。

3.Struts2所解决的问题:在以往实现一个功能时,都需要写很多的servlet,从而造成后期维护上的不方便。

图解:4.现在比较稳定的Struts2版本struts-2.3.24-all.zip5.web层常见框架1.struts2.springMVCStruts2框架入门1.导入jar包1.在lib里面有jar包,但不能全部导入,因为里面含有一些spring包,是不能使用的,导入会导致程序不能运行。

2.到app目录里面复制案例的jar包是最好的方法。

2.创建action3.配置action类的访问路径1.创建struts2核心配置文件,该核心配置文件位置和名称是固定的,位置必须在src下面,名称为struts.xml 。

2.引入dtd约束,可以在案例文件中找到,复制在struts.xml文件中即可。

3.action的配置*注意访问路径:http://域名/端口号/项目名/action名.action注意:.action可以省略,但建议不要省略,为了兼容一些老版本的浏览器。

4.配置Struts2的过滤器,可以在案例中的web.xml文件中找到,复制粘贴即可。

Struts2执行过程图解:Struts2配置1.是一种常量标签2.修改Struts2的默认常量值1.常用方式在struts.xml中进行配置。

2.其它两种方式1.在src下面创建struts.properties文件并修改。

2.在web.xml文件中进行修改。

3.Struts2最常用的常量struts.il8n.encoding=UTF-8,解决表单在通过post方式提交中文时,中文乱码的问题。

Struts2笔记(一)可使用全局页面。

1、配置方法:在package标签下配置2、注意:该标签只能在一个package标签中使用,如果有多个标签,需要重新定义。

Java Web层框架比较:JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket

Java Web层框架比较:JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket

【译者按】这是Matt Raible在今年(2007年)6月24-27号召开的JA-SIG夏季会议上所作的主题演讲,Matt从众多方面对Java Web层框架做了一个全面、深入的比较。

笔者认为这是一份及时的文档,它对开发者如何判定一个Web层框架的好坏、如何选择适合自己项目的框架有极大的指导作用。

本文是对Matt Raible演讲稿的整理归纳。

【作者介绍】Matt Raible,开源框架AppFuse的发起者、主要开发者;《Professional JSP 2.0》、《Spring Live》等书的作者;众多会议的演讲者,MySQL User Conference, ApacheCon, ApacheCon EU等;现任Raible Designs的CEO。

首先,Matt以自己的实践经验,指出了Java Web层框架——JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket他们各自的优、缺点:JSF优点:Java EE标准,这意味着有很大的市场需求和更多的工作机会上手快速并且相对容易有大量可用的组件库缺点:大量的JSP标签对REST和安全支持不好没有一个统一的实现。

既有SUN的实现,又有Apache的实现——MyFaces。

Spring MVC优点:对覆盖绑定(overriding binding)、验证(validation)等提供生命周期管理与许多表示层技术/框架无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等便于测试——归功于IoC缺点:大量的XML配置文件太过灵活——没有公共的父控制器没有内置的Ajax支持Stripes优点:不需要书写XML配置文件良好的学习文档社区成员很热心缺点:社区比较小不如其他的项目活跃ActionBean里面的URL是硬编码的Struts 2优点:架构简单——易于扩展标记库很容易利用FreeMarker或者Velocity来定制基于控制器或者基于页面的导航缺点:文档组织得很差对新特征过分关注通过Google搜索到的大多是Struts 1.x的文档Tapestry优点:一旦学会它,将极大地提高生产率HTML模板——对页面设计师非常有利每出一个新版本,都会有大量的创新缺点:文档过于概念性,不够实用学习曲线陡峭发行周期长——每年都有较大的升级Wicket优点:对Java开发者有利(不是Web开发者)页面和显示绑定紧密社区活跃——有来自创建者的支持缺点:HTML模板和Java代码紧挨着需要对OO有较好的理解Wicket逻辑——什么都用Java搞定接着,Matt通过采访这些框架的作者,与他们讨论各种开源的Java Web框架,并且突出各个框架的长处、听取框架作者对其他框架的看法,希望借此了解这些框架的未来发展方向。

SpringSide3中的Struts2

SpringSide3中的Struts2

在SpringSide 3 中,使用的MVC框架是Struts 2。

Struts 2 向对于Struts 1 来说,具有相当多的优点,有很多人都说,用过Struts 2之后,再也不想看Struts 1了。

然而,任何东西都有它的复杂性,Struts 2也不例外,SpringSide 3做了很多工作来简化Struts 2 的使用。

先来说说Struts 2的特点:1、编写Action变得简单了,Action变成了简单的POJO,再也不用和ActionForm、ActionForward打交道了,返回的时候直接返回字符串即可。

如果要访问Servlet API,则直接使用ServletActionContext类的静态方法。

2、Struts 2提供了插件机制,允许我们自己为它编写插件,当然,要我自己写是不现实的,但是面对别人写的琳琅满目的插件,我一样会昏头。

再网上随便一搜,就可以发现40多种Struts 2插件。

SpringSide 3选择的CodeBehind,就是一种Struts 2插件,它的目的是为了简化配置。

3、Struts 2提供了拦截器机制,之所以编写Action的任务那么简单,靠的都是这些拦截器,比如它们可以自动解析Web表单和URL参数,把它们注入到Action中。

4、Struts 2提供了丰富的taglib,当然,丰富也代表着我们要化更多的时间去学习。

5、Struts 2依然提供了Validator和i18n支持。

等等...下面,我们来看看SpringSide 3是怎么使用Struts 2的吧。

SpringSide 3的主要目标是降低我们使用Struts 2的复杂性,所以,它选择了这些办法:1、没有使用Validator和i18n,对数据的验证交给了JQuery,这变成了表现层的任务,而且JQuery也可以使用AJAX从服务器端进行验证。

至于i18n,江南白衣说小网站用不上。

2、没有使用Struts 2的UI标签,当然也就没有使用FreeMaker或SiteMesh了。

Struts2是一个典型的MVC架构

Struts2是一个典型的MVC架构

Struts2+Spring+Hibernate设计模式一、Struts2技术Struts2是一个典型的MVC架构,给软件开发带来很大的方便。

MVC是一种设计模式,它强制性地使应用程序的输入、处理和输出分开。

使用MVC 模式,应用程序被分成三个核心部件:模型(Model,即M)、视图(View,即V)、控制器(Controller,即C)。

它们各自处理自己的任务。

在Struts2中,其中M(业务层)用Java程序(业务类)来实现,V(表示层)用JSP 来实现,C用Action类来实现。

客户端服务器1.浏览器发出的请求可以用下列方式:1)提交HTML网页form表单<form action="login" method="GET">name: <input type="text" name="name"><br>pass: <input type="password" name="pass"><br><input type="submit" value="submit"></form>2)直接在地址栏输入http://localhost:8080/login?name=abc&pass=1233)点击超链接<html><body><a href="login?name=abc&pass=123">test</a></body></html>在struts2编程中login只是请求的逻辑名字,而不是具体的jsp或servlet。

2.过滤器根据请求和Struts.xml配置文件去调用对应的ActionStrtuts2本质上是一个过滤器,所以需要在web.xml中配置一个Struts2的过滤器。

Spring3_MVC与Struts2.x比较

Spring3_MVC与Struts2.x比较

Spring MVCSpringMVC非常优秀的MVC框架, 由其是在3.0版本发布后, 现在有越来越多的团队选择了Spring3 MVC来作为MVC的框架.SpringMVC结构简单,灵活性较高,性能也很优秀。

核心类与接口:DispatcherServlet -- 前置控制器HandlerMapping接口-- 处理请求的映射HandlerMapping接口的实现类:SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上HandlerAdapter接口-- 处理请求的映射AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上Controller接口-- 控制器由于我们使用了@Controller注解,添加了@Controller注解注解的类就可以担任控制器(Action)的职责,所以我们并没有用到这个接口。

HandlerInterceptor 接口--拦截器我们自己实现这个接口,来完成拦截的器的工作。

ViewResolver接口的实现类UrlBasedViewResolver类通过配置文件,把一个视图名交给到一个View来处理InternalResourceViewResolver类,比上面的类,加入了JSTL的支持View接口JstlView类LocalResolver接口HandlerExceptionResolver接口--异常处理SimpleMappingExceptionResolver实现类ModelAndView类核心流程图DispatcherServlet说明使用Spring MVC,配置DispatcherServlet是第一步。

DispatcherServlet是一个Servlet,所以可以配置多个DispatcherServlet。

三大框架的优缺点

三大框架的优缺点

Struts,Spring,Hibernate优缺点1.strutsstruts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。

优点:Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。

使开发者能更深入的了解其内部实现机制。

除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。

Taglib是Struts的标记库,灵活动用,能大大提高开发效率。

另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。

关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。

通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。

尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

另外,struts是业界"标准"(很多成功案例),学习资源丰富,HTML标签非常优秀缺点:Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。

Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。

ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成)Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。

使开发者能更深入的了解其内部实现机制。

Struts开放源码框架的创建是为了使开发者在构建基于Java Servlet和JavaServer Pages(JSP)技术的Web应用时更加容易。

Struts框架为开放者提供了一个统一的标准框架,通过使用Struts作为基础,开发者能够更专注于应用程序的商业逻辑。

java开发框架面试题整理

java开发框架面试题整理

Java开发框架面试Struts2热点面试题?1. 简述Struts2 的工作流程:①. 请求发送给StrutsPrepareAndExecuteFilter②. StrutsPrepareAndExecuteFilter 判定该请求是否是一个Struts2 请求③. 若该请求是一个Struts2 请求,则StrutsPrepareAndExecuteFilter 把请求的处理交给ActionProxy④. ActionProxy 创建一个ActionInvocation 的实例,并进行初始化⑤. ActionInvocation 实例在调用Action 的过程前后,涉及到相关拦截器(Intercepter)的调用。

⑥. Action 执行完毕,ActionInvocation 负责根据struts.xml 中的配置找到对应的返回结果。

调用结果的execute 方法,渲染结果。

⑦. 执行各个拦截器invocation.invoke() 之后的代码⑧. 把结果发送到客户端2. Struts2 拦截器和过滤器的区别:①、过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器。

②、Struts2 拦截器只能对Action 请求起作用,而过滤器则可以对几乎所有请求起作用。

③、拦截器可以访问Action 上下文(ActionContext)、值栈里的对象(ValueStack),而过滤器不能.④、在Action 的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

3. 为什么要使用Struts2 & Struts2 的优点:①. 基于MVC 架构,框架结构清晰。

②. 使用OGNL: OGNL 可以快捷的访问值栈中的数据、调用值栈中对象的方法③. 拦截器: Struts2 的拦截器是一个Action 级别的AOP, Struts2 中的许多特性都是通过拦截器来实现的, 例如异常处理,文件上传,验证等。

springmvc3和4的区别

springmvc3和4的区别

springmvc3和4的区别springmvc3 和4的区别4.0主要是对Java 8的新函数式语法进行支持。

还有加强了对网络各种新技术比如-streaming, websocket的更好的支持。

具体可以看参考手册第一章。

98%和3.0保持了向下兼容性的..springmvc和servlet的区别Spring MVC和Struts2的区别:1.机制:spring mvc的入口servlet,而struts2是filter(这里要指出,filter和servlet是不同的。

以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter 的区别了。

2.2.性能:spring会稍微比struts快。

spring mvc是基于 ... 的设计而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于 ... ,粒度更细,但要小心把握像在servlet控制数据一样。

spring3 mvc是 ... 级别的拦截,拦截到 ... 后根据参数上的注解,把request数据注入进去,在spring3 mvc中,一个 ... 对应一个request上下文。

而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter ... 把request中的数据注入;struts2实际上是通过setter getter ... 与request打交道的;struts2中,一个Action对象对应一个request上下文。

3.3.参数传递:struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个 ... 共享的。

4.4.设计思想上:struts更加符合oop的编程思想,spring就比较谨慎,在servlet上扩展。

5.5.intercepter的实现机制:struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。

浅析struts2和springMVC的异同

浅析struts2和springMVC的异同
关键字 : W E B 框架 s t r u t s 2 s p r i n g M V C
1 s p r i n gMVC简介
s p r i n g MVC属于 S p r i n g Fr a me Wo r k的后 续产 品 ,已经融 合
在S p r i n g W e b F l o w里 面 S p r i n g 框 架 提供 了构建We b 应 用程 序
第五 , Ac t i o nP r o x y通过 C o n f i g u r a t i o n Ma n a g e r 询 问框 架 的
配 置文件 , 找 到需要 调用的A c t i o n 类;
第六 , Ac t i 0 n Pr o x y 创 建 一 个 Ac t i o n l n v o c a t i o n 的 实例 ;
经验交流
浅 析s t r u t s 2 和s p r i n g MV C 的异 同
陈张 成 都 师范 学 院
摘要: s t r u  ̄ s 2 和s p r i n g M V C 都是j a v a w e b 开发比较 主流的框架 , 目 前企业中使 ,  ̄ s p r i n g M v c 的比例已经远 远超  ̄s t r u t s 2 , 那么两者到底 有什么区别, 是很 多初学者 比较 关注的问题 。
Ht t p Me s s a g e Co n v e t e r : 将 请求 消息转 换 成一 个对 象 , 将对 象 转 换 为指定 的 响应信息 ; 第 五 ,Ha n dl e r 执 行完 成 后 ,向Di s p a t c he r Se r v l e t 返 回一 个
Mo d e l An d VJ e w对 象 ;

各种框架的优缺点

各种框架的优缺点

4) 异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理;
Spring框架的优点如下:
1) 无入侵性(在业务逻辑代码中感觉
3) 无需程序员自己实现singleton模式;
4) 通过AOP,可以实现事务管理和日志管理;
5) 整合其他的框架,如:struts框架和hibernate框架;
Hibernate框架(ORM框架)的优点如下:
1) 对象/关系数据库映射(ORM), 使用时只需操纵对象,使开发更加面向对象化;
Struts2框架(MVC框架)的优点如下:
1) 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现;
2) 丰富的标签库,大大提高了开发的效率;
3) Struts2提供丰富的拦截器实现
3) 通过配置文件,就可以掌握整个系统各个部分之间的关系;
2) 无入侵性;
3) 简洁的HQL语句,减少了JDBC与SQL操作数据库的代码量;
4) 移植性好;
缺点如下:
1) 对批量更新,删除的支持不好;
mybatis框架的优点如下:
1. 易于上手和掌握。
2. sql写在xml里,便于统一管理和优化。
3. 解除sql与程序代码的耦合。
4. 提供映射标签,支持对象与数据库的orm字段关系映射
5. 提供对象关系映射标签,支持对象关系组建维护
6. 提供xml标签,支持编写动态sql。

深入浅出的理解框架(Struts2、Hibernate、Spring)与 MVC 设计

深入浅出的理解框架(Struts2、Hibernate、Spring)与 MVC 设计

深入浅出的理解框架(Struts2、Hibernate、Spring)与MVC 设计现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Suts2,Spring,Hibernate。

似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和找工作的必备基础。

然而,假如在面试的时候问这些程序员,你们为什么要学习这些框架?这些框架的本质到底是什么?似乎很少很少有人能够给我十分惬意的答复。

由于他们都在为了学习而学习,为了工作而学习,而不是在真正去深化了解一个框架。

其实全部的人都应当思量这样的问题:为什么要学习框架?框架到底给我带来了什么?接下来,我们以登录作为一个最容易的例子,来看看不同的年月,我们是怎么写Web程序的。

后来,我们放弃了在页面上写规律后来,程序写得越来越多,我们发觉,这种在HTML代码中编写Java代码来完成规律的方式存在着不少问题:1. Java代码因为混杂在一个HTML环境中而显得混乱不堪,可读性十分差。

一个JSP文件有时候会变成几十K,甚至上百K。

要找一段规律,常常无法定位。

2. 编写代码时十分困窘,不知道代码到底应当写在哪里,也不知道别人是不是已经曾经实现过类似的功能,到哪里去引用。

3. 骤然之间,某个需求发生了变幻。

于是,每个人蒙头开头全程替换,还要当心翼翼的,生怕把别人的规律改了。

4. 规律处理程序需要自己来维护生命周期,对于类似数据库事务、日志等众多模块无法统一支持。

在这个时候,假如有一个产品,它能够将页面上的那些Java代码抽取出来,让页面上尽量少浮现Java代码,该有多好。

于是许多人开头用法servlet来处理那些业务规律。

public class LoginServlet tends HttpServlet { /* (non-Javadoc) * @see javax.servlet.http.HttpServletdoPost(javax.servlet.http.Http ServletRequest, javax.servlet.http.HttpServletResponse) */ @Overre protect void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException第1页共2页。

Spring、SpringMVC、Struts2之间的区别

Spring、SpringMVC、Struts2之间的区别

Spring、SpringMVC、Struts2之间的区别⼀、Spring与SpringMVC的区别:spring是⼀个开源框架,是为了解决企业应⽤程序开发,功能如下:功能:使⽤基本的JavaBean代替EJB,并提供了更多的企业应⽤功能范围:任何Java应⽤ Spring是⼀个轻量级的控制反转(IoC)和⾯向切⾯(AOP)的容器框架。

1、轻量——从⼤⼩与开销两⽅⾯⽽⾔Spring都是轻量的。

完整的Spring框架可以在⼀个⼤⼩只有1MB多的JAR⽂件⾥发布。

并且Spring所需的处理开销也是微不⾜道的。

此外, Spring是⾮侵⼊式的:典型地,Spring应⽤中的对象不依赖于Spring的特定类。

2、控制反转——Spring通过⼀种称作控制反转(IoC)的技术促进了松耦合。

当应⽤了IoC,⼀个对象依赖的其它对象会通过被动的⽅式传递进来,⽽不是这个对象⾃⼰创建或者查找依赖对象。

你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,⽽是容器在对象初始化时不等对象请求就主动将依赖传递给它。

3、⾯向切⾯——Spring提供了⾯向切⾯编程的丰富⽀持,允许通过分离应⽤的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进⾏内聚性的开发。

应⽤对象只实现它们应该做的——完成业务逻辑—— 仅此⽽已。

它们并不负责(甚⾄是意识)其它的系统级关注点,例如⽇志或事务⽀持。

4、容器——Spring包含并管理应⽤对象的配置和⽣命周期,在这个意义上它是⼀种容器,你可以配置你的每个bean如何被创建——基于⼀个可配置原型(prototype),你的bean可以创建⼀个单独的实例或者每次需要时都⽣成⼀个新的实例——以及它们是如何相互关联的。

然⽽,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞⼤与笨重的,难以使⽤。

5、框架——Spring可以将简单的组件配置、组合成为复杂的应⽤。

springMVC和struts2的区别有哪些?

springMVC和struts2的区别有哪些?

3struts采用值栈存储请求和响应的数据通过ognl存取数据springmvc通过参数解析器是将request请求内容解析并给方法形参赋值将数据和视图封装成modelandview对象最后又将modelandview中的模型数据通过reques域传输到页面
springMVC和 struts2的区别有哪些?
(1)springmvc的入是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器 (StrutsPrepareAndExecuteFilter)。
(2)springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类 开发,传递参数是通过类的属性,只能设计为多例。
(3)Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋 值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用 jstl。

MVC基础、Model2的MVC和Struts2的MVC

MVC基础、Model2的MVC和Struts2的MVC

MVC基础、Model2的MVC和Struts2的MVC 1、MVC模式基础1.1、MVC模式简介 MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而达到更好的开发和维护效率。

在MVC模式中,应用程序被划分成模型(Model)、视图(View)和控制器(Controller)三个部分。

其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的输出形式(页面、界面);而控制器部分负责协调模型和视图,根据用户请求来选择要调用哪个模型来处理业务,以及最终由哪个视图为用户做出应答。

MVC模式的这三个部分的职责非常明确,而且相互分离,每个部分都可以独立的改变而不影响其他部分,大大提高了应用的灵活性和重用性。

1.2、MVC模式基础 在MVC模式中,一个应用被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。

1.2.1、模型、视图、控制器各部分的作用 模型(Model):负责封装应用的状态,并实现应用的功能。

通常分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单信息、用户信息等;而业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等。

视图(View):用来将模型的内容展现给用户,用户可以通过视图来请求模型进行更新。

视图从模型获得要展示的数据,然后用自己的方式展现给用户,相当于提供界面来与用户进行人机交互;用户在界面上操作或者填写完成后,会点击提交按钮或是以其它触发事件的方式,来向控制器发出请求。

控制器(Controller):用来控制应用程序的流程和处理视图所发出的请求。

当控制器接收到用户的请求后,会将用户的数据和模型的更新相映射,也就是调用模型来实现用户请求的功能;然后控制器会选择用于响应的视图,把模型更新后的数据展示给用户。

1.2.2、模型和视图的关系 在MVC中,模型和视图是分离的,通常视图里面不会有任何逻辑实现;而模型也是不依赖于视图的,同一个模型可能会有多种不同的展示方式,即同一个模型可以对应多种不同的视图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置
spring3 mvc可以认为已经100%零配置了(除了配置springmvc-servlet.xml外)
比较了一下strus2与spring3 mvc的差别
==================================================================================
spring3mvc的方法之间基本上独立的,独享request response数据
请求数据通过参数获取,处理结果通过ModelMap交回给框架
方法之间不共享变量
而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的
这不会影响程序运行,却给我们编码 读程序时带来麻烦
return "/group/group-index" ;
Байду номын сангаас}
//@ResponseBody ajax响应
@RequestMapping(value="/whitelist/{whiteListId}/del")
@ResponseBody
struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入
struts2实际上是通过setter getter方法与request打交道的
struts2中,一个Action对象对应一个request上下文
spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
在spring3mvc中,一个方法对应一个request上下文
好了 我们来整理一下
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现restful url
public String delete(@PathVariable Integer whiteListId){
whiteListManager.deleteWhiteList(whiteListId) ;
return "success" ;
}
====================================
spring3 mvc的验证也是一个亮点,支持JSR303
处理ajax的请求更是方便 只需一个注解@ResponseBody ,然后直接返回响应文本即可
===========================================================================
@RequestMapping(value="/whitelists")
public String index(ModelMap map){
Account account = accountManager.getByDigitId(SecurityContextHolder.get().getDigitId()) ;
List<Group> groupList = groupManager.findAllGroup(account.getId()) ;
map.put("account", account);
map.put("groupList", groupList);
而struts2的架构实现起来要费劲
因为struts2 action的一个方法可以对应一个url
而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了
=================================================================================
相关文档
最新文档