strus2与spring3 mvc的差别

比较了一下strus2与spring3 mvc的差别:

  • spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3mvc中,一个方法对应一个request上下文。
  • 而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。

好了 我们来整理一下

  1. spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上 spring3 mvc就容易实现restful url。
    struts2是类级别的拦截, 一个类对应一个request上下文;实现restful url要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。
  2. spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量
    而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码 读程序时带来麻烦。
  3. spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便 只需一个注解@ResponseBody ,然后直接返回响应文本即可。

附上一段代码

view plaincopy to clipboardprint

    1. @RequestMapping(value="/whitelists")
    2. public String index(ModelMap map){
    3. Account account = accountManager.getByDigitId(SecurityContextHolder.get().getDigitId()) ;
    4. List<Group> groupList = groupManager.findAllGroup(account.getId()) ;
    5. map.put("account", account);
    6. map.put("groupList", groupList);
    7. return "/group/group-index" ;
    8. }
    9. //@ResponseBody ajax响应
    10. @RequestMapping(value="/whitelist/{whiteListId}/del")
    11. @ResponseBody
    12. public String delete(@PathVariable Integer whiteListId){
    13. whiteListManager.deleteWhiteList(whiteListId) ;
    14. return "success" ;
    15. }
时间: 2024-08-03 16:44:52

strus2与spring3 mvc的差别的相关文章

在Spring3 MVC中五步配置集成注解方式Hibernate3

最近在搞一个WEB项目,以前在公司做项目用的都是JPA做ORM持久层,这次这个项目是我自己接的,我决定改一下,用Hibernate3来做ORM持久层.于是我网上搜索了Hibernate3怎么配置集成到Spring3 MVC上,发现千奇百怪,而且很多都是不是基于注解方式配置,显然那些文字上面的配置方式已经跟如今的Hibernate3注解支持方式脱节了,于是我决定自己搞一把,首先说一下网上那些配置方式的不好的地方,很多文章都提到要jdbc.properties文件与Hibernate config文

Maven3路程(六)用Maven创建Spring3 MVC项目

一.      环境 spring-framework-3.2.4.RELEASE jdk1.7.0_11 Maven3.0.5 eclipse-jee-juno-SR2-win32 二.      创建Web项目 Eclipse中创建Web项目,见前边日志<Maven3路程(三)用Maven创建第一个web项目(1)> 三.      项目依赖,配置pom.xml文件 pom.xml文件如下: <project xmlns="http://maven.apache.org/P

Spring3 MVC 类型转换

1. Spring在进行类型转化都是基于java.beans.PropertyEditor接口. 2. 可以使用@InitBinder来进行对单个controller的类型进行操作,比如添加Date类型的转换器: @InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.se

解决spring3 mvc中乱码的问题(转)

今天搭建spring3 mvc框架的时候,发现居然又出现了乱码(万恶的iso编码啊),想起之前解决post提交乱码问题一般都是写一个filter,在filter中实现编码的转换,配置方法是是在web.xml中加入以下代码: [html] view plaincopy <filter> <filter-name>Character Encoding</filter-name> <filter-class>com.filter.CharacterEncoding

atitit.spring3 mvc url配置最佳实践

atitit.spring3 mvc url配置最佳实践 1. Url-pattern  bp 1 2. 通用星号url pattern的问题 1 3. Other code 1 4. 参考 2 1. Url-pattern  bp Default       <url-pattern>/</url-pattern> <url-pattern>/*</url-pattern> 中间容易的冲突....spr十为了restful风格,,才默认中配置的.. 跟个d

Spring3 MVC入门示例

Spring3 MVC 介绍: 1. Spring MVC 是Spring 框架的Web组件,能够开发WEB工程 2. 能与其它框架(Struts2)很好的集成 3.  Spring MVC 是以servlet为中心,通过DispatcherServlet把请求分发给控制器 4.  DispatcherServlet 是Spring IOC容器的完全集成,能使用Spring其他功能 5.  Spring3 MVC 支持注解技术 6. Spring3 能很好的支持JAP2.0 那接下来我们就写一个

Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释

一:配置web.xml 1)问题:spring项目中有多个配置文件mvc.xml   dao.xml 2)解决:在web.xml中 <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/xxx/*.xml</param-value> xxx表示xml文件路径    *.xml表示后缀名为xml的任意文件 </init-param&g

Spring3 MVC 拦截器拦截不到的问题

拦截器: com.zk.interceptors.MyInterceptor 实现了 HandlerInterceptor接口,可以拦截@RequestMapping注解的类和方法 第一种方式 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.zk.interceptors.MyInterceptor"><

Spring3 MVC 搭建

整个项目架构如下图所示: 1.去官网下载3.0.5所有jar包,所需jar包,见附件图片,每个jar包得用处如下: org.springframework.aop- 3.0.0.RELEASE--------------------Spring的面向切面编程,提供AOP(面向切面编程)实现 org.springframework.asm- 3.0.0.RELEASE--------------------Spring独立的asm程序,相遇Spring2.5.6的时候需要asmJar 包.3.0开