struts2是一种重量级的框架,位于MVC架构中的controller,可以分析出来,它是用于接受页面信息然后通过内部处理,将结果返回。

同时struts2也是一个web层的MVC框架,那么什么是struts2中的MVC呢?

我们可以联想一下struts2的使用流程,我们需要先通过过滤器,调用URL判断使用哪个Action,再由Action决定返回结果,继而 提交请求。那么这就构成了一个MVC架构,由过滤器(Controller)控制选择动作Action(Model),获得结果Result(View),向控制器提交请求。

所以从宏观架构的角度来讲,struts2就是联系了模型层和视图层,将用户要求按照业务逻辑执行并且返回结果。

简要概括一下它的作用,无非在于传递参数,将请求发送给合适的控制器,在控制器中调用业务接口,最后将业务接口返回的结果返回给指定的视图。

但是说了这么多,我们还没有看到struts2的优越之处,所以我们为什么要选择他作为控制层呢?这里我们需要了解一下,在struts2框架出现之前,我们是使用sevlet来进行操作的,也就是说struts2是淘汰掉了servlet,那么让我们来做一个对比。

我们主要从三方面来对比:

①配置:当我们配置servlet的时候,我们需要在web.xml中配置很多,也就是说一个servlet我们就需要配置一段代码,这样不仅会导致web.xml中的代码过于繁多,并且不利于分组开发,需要手动配置二级的URL-PATTERN。

而在使用struts2的时候就很好的解决了这个问题,我们引用专门的XML文件,配置package属性和action属性,大大增加了配置代码的可读性,而且结构层次清晰,提升了分组开发的效率。

②测试:当我们需要测试我们的代码的时候,使用servlet的我们必须要配置两个与容器相关的参数,HttpServletResponse和HttpServletRequest,这样就会增加我们的工作量,而struts2则可以很好的独立完成单元测试。

③传参:每次传参的时候,使用servlet我们就必须手动操作作用域,如果serlvet方法非常多的情况下,就会很大程度上影响开发,在struts2中,我们的默认过滤器栈中自带了自动收参的方法,极大的便利了我们的开发。

在其他的方面其实struts2也有很大的优势,比如全局异常的设置比如拦截器的配置比如...

简要概括使用流程:

①导入jar包

②配置核心过滤器

③创建Action,书写代码并配置返回值

④配置配置文件

总结一下struts2的好处:

struts2将应用分层,使产品结构清晰,能够减少代码的维护量,同时能够使开发人员分层实现,也就是说Java程序员可以只专注于业务逻辑的实现

项目开源,使用及扩展方便

提供了强大的全局异常处理机制;

Result方式的页面导航,通过 Result 标签很方便的实现重定向和页面跳转;

通过简单、集中的配置来调度业务类,使得配置和修改都非常容易;

提供简单、统一的表达式语言来访问所有可供访问的数据(OGNL);

提供标准、强大的验证框架和国际化框架;

提供多种表现层的技术支持和页面标签,大大简化开发;

拥有简单的插件,只需要放入响应的 jar 包,任何人都可以扩展 Struts2 框架,比如:

自定义拦截器、自定义结果类型、自定义标签等,为 Struts2 定制需要的功能,不需要什么特殊的配置,并且可以发布给其他人使用。
拥有智能的默认设置,不需要另外进行繁琐的设置。使用默认设置就可以完成大多数项目程序开发所需的功能。

此博客只是为了记忆相关知识点,大部分为网络上的文章,在此向各个文章的作者表示感谢!