Struts和SpringMVC对比学习

日期:2014-02-25点击次数:9810

       Struts  framework和spring  framework都是基于MVC设计模式的一种框架结构。
       Struts  framework是MVC模式的体现,下面我们主要从模型M、视图V和控制层C来分析一下Struts的体系结构
       M:主要表示一个系统的状态,由ActionForm Bean体现,一般情况下此状态是非持久性的,同时可以使用Struts本身提供的Utitle包将这些状态转化为持久性数据存储方便与数据库操作。
       V:Struts自身包含了一组可扩展性的自定义的标签库TagLib,主要用于web层界面的设计
       C:主要是Action Servlet,但是对于业务逻辑的操作则主要由action、actionMapping、actionForward三个组件协调完成,其中action主要扮演了业务逻辑的实现者。

       Struts 和 SpringMVC比较:
       1. 从性能上讲:spring 会稍微比struts快
       2. springmvc 是基于方法的的设计,而struts是基于类
Springmvc基于方法,粒度更细,拦截到方法后根据参数上的注解,把request数据注入进去,springmvc中一个方法对应一个request上下文;struts框架基于类,每次发送一个请求就创建一个action,然后调用setter getter方法把request中的数据注入;struts实际上是通过setter getter方法与request打交道的;struts2中一个action对象对应一个request上下文。
       3. springmvc 支持JSR303(数据验证规范),处理Ajax请求更方便(需引入jackson-core-asl-1.7.2.jar 和 jackson-mapper-asl-1.7.2.jar两个jar包,同时spring配置文件中要有这一行,才能使用到spring内置支持的json转换,但如果手工把POJO转成json就可以不需要使用spring内置支持的json转换),只需一个注解@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);
return "/group/group-index";
}

// @ResponseBody ajax响应,处理Ajax请求也很方便
@RequestMapping(value="/whitelist/{whiteListId}/del")

@ResponseBody
public String delete(@PathVariable Integer whiteListId) {
whiteListManager.deleteWhiteList(whiteListId);
return "success";
}

以上是个人对struts框架和springmvc框架的理解和总结。



 

软件部   王荣荣

上一篇:Snmp++简介下一篇:openlayers前端样例