加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java 五大框架之间的比拟

发布时间:2019-08-27 02:52:43 所属栏目:建站 来源:Java程序员丶
导读:Spring 及其利益 大部门项目都少不了spring的身影,为什么各人对他云云青睐,并且对他的追捧丝毫没有减退之势呢? Spring是什么: Spring是一个轻量级的DI和AOP容器框架。 说它轻量级有一大部门缘故起因是相对与EJB的(固然本人从没有打仗过EJB的应用),重要的是

intercepter的实现机制:struts有以本身的interceptor机制,spring mvc用的是独立的AOP方法。这样导致struts的设置文件量照旧比spring mvc大,固然struts的设置能担任,以是我认为论行使上来讲,spring mvc行使越发简捷,开拓服从Spring MVC确实比struts2高。spring mvc是要领级此外拦截,一个要领对应一个request上下文,而要领同时又跟一个url对应,以是说从架构自己上spring3 mvc就轻易实现restful url。struts2是类级此外拦截,一个类对应一个request上下文;实现restful url要费劲,由于struts2 action的一个要领可以对应一个url;而其类属性却被全部要领共享,这也就无法用注解或其他方法标识其所属要领了。spring3 mvc的要领之间根基上独立的,独享request response数据,哀求数据通过参数获取,处理赏罚功效通过ModelMap交回给框架要领之间不共享变量,而struts2搞的就较量乱,固然要领之间也是独立的,但其全部Action变量是共享的,这不会影响措施运行,却给我们编码,读措施时带来贫困。

其它,spring3 mvc的验证也是一个亮点,支持JSR303,处理赏罚ajax的哀求更是利便,只需一个注解@ResponseBody ,然后直接返反相应文本即可。奉上一段代码:

[java] view plain copy

在CODE上查察代码片派生到我的代码片

  1. @RequestMapping(value=“/whitelists”)  
  2.  public String index(ModelMap map) {  
  3.  Account account = accountManager.getByDigitId(SecurityContextHolder.get().getDigitId());  
  4.  List groupList = groupManager.findAllGroup(account.getId());  
  5.  map.put(“account”, account);  
  6.  map.put(“groupList”, groupList);  
  7.  return “/group/group-index”;  
  8.  }  
  9.  // @ResponseBody ajax相应,处理赏罚Ajax哀求也很利便  
  10.  @RequestMapping(value=“/whitelist/{whiteListId}/del”)  
  11.  @ResponseBody  
  12.  public String delete(@PathVariable Integer whiteListId) {  
  13.  whiteListManager.deleteWhiteList(whiteListId);  
  14.  return “success”;  
  15.  }  

struts1与struts2本质区别

1 在Action实现类方面的比拟:Struts 1要求Action类继承一个抽象基类;Struts 1的一个详细题目是行使抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的处事成为也许。Struts 2提供一个ActionSupport基类去实现常用的接口。纵然Action接口不是必需实现的,只有一个包括execute要领的POJO类都可以用 作Struts 2的Action。

2 线程模式方面的比拟:Struts 1 Action是单例模式而且必需是线程安详的,由于仅有Action的一个实例来处理赏罚全部的哀求。单例计策限定了Struts 1 Action能做的事,而且要在开拓时不凡警惕。Action资源必需是线程安详的或同步的;Struts 2 Action工具为每一个哀求发生一个实例,因此没有线程安详题目。

3 Servlet依赖方面的比拟:Struts 1 Action依赖于Servlet API,由于Struts 1 Action的execute要领中有HttpServletRequest和HttpServletResponse要领。Struts 2 Action不再依赖于Serzvlet API,从而承诺Action离开Web容器运行,从而低落了测试Action的难度。 虽然,若是Action必要直接会见HttpServletRequest和HttpServletResponse参数,Struts 2 Action如故可以会见它们。可是,大部门时辰,Action都无需直接会见HttpServetRequest和 HttpServletResponse,从而给开拓者更多机动的选择。

4 可测性方面的比拟:测试Struts 1 Action的一个首要题目是execute要领依赖于Servlet API,这使得Action的测试要依赖于Web容器。为了离开Web容器测试Struts 1的Action,必需借助于第三方扩展:Struts TestCase,该扩展下包括了系列的Mock工具(模仿了HttpServetRequest和HttpServletResponse工具),从而 可以离开Web容器测试Struts 1的Action类。Struts 2 Action可以通过初始化、配置属性、挪用要领来测试。

5 封装哀求参数的比拟:Struts 1行使ActionForm工具封装用户的哀求参数,全部的ActionForm必需继承一个基类:ActionForm。平凡的JavaBean不能用 作ActionForm,因此,开拓者必需建设大量的ActionForm类封装用户哀求参数。固然Struts 1提供了动态ActionForm来简化ActionForm的开拓,但依然必要在设置文件中界说ActionForm;Struts 2直接行使Action属性来封装用户哀求属性,停止了开拓者必要大量开拓ActionForm类的啰嗦,现实上,这些属性还可所以包括子属性的Rich 工具范例。若是开拓者依然吊唁Struts 1 ActionForm的模式,Struts 2提供了ModelDriven模式,可以闪开拓者行使单独的Model工具来封装用户哀求参数,但该Model工具无需继承任何Struts 2基类,是一个POJO,从而低落了代码污染。

6 表达式说话方面的比拟:Struts 1整合了JSTL,因此可以行使JSTL表达式说话。这种表达式说话有根基工具图遍历,但在对荟萃和索引属性的支持上则成果不强;Struts 2可以行使JSTL,但它整合了一种更强盛和机动的表达式说话:OGNL(Object Graph Notation Language),因此,Struts 2下的表达式说话成果越发强盛。

7 绑定值到视图的比拟:Struts 1行使尺度JSP机制把工具绑定到视图页面;Struts 2行使“ValueStack”技能,使标签库可以或许会见值,而不必要把工具和视图页面绑定在一路。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读