一、Struts2是什么
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。通过下图就很好理解了,Struts通过xml配置文件找到对应的action类,从而进行调用,最后将执行结果返回给用户。当然Struts中还有很多附加功能,这里暂时不加以讨论。
二、为什么要用Struts2
用过Servlet的都知道,Servlet的重复编码太多,而且全是硬编码,不能在配置文件中进行更改。
Struts2能通过配置文件大大的减少程序员的代码量,而且代码的可维护性也能大大增强。(虽然在学完以后,发现这个还没有servlet好用,还经常有bug,不过为了工作或者未来的新知识的学习,就好好学吧)
三、怎么写Struts2
3.1、导入jar包
3.2、在web.xml中配置过滤器
3.3、核心Action类。
Action类可以有三种不同的类型
1、普通类,POJO,什么接口也不实现,什么类也不继承
2、实现Action接口,重写excute方法,接口中就声明这一个方法
3、继承ActionSupport类,可以不必重写execute方法,只需要写自己想要的方法即可
3.4、配置struts.xml
3.5 最后写个测试方法进行测试就ok啦
------------------------------------------------------------------------------------------
补充:时序图
Struts2的架构图分析
第一步:请求action,那么就会经过StrutsPrepareAndExecuteFilter,这里会做两件事情,就是下面的两步
第二步:通过ActionMapping将请求中的各种数据封装起来,拿到请求中的各种参数数据,比如我们的action的名称DemoAction
第三步:给自己找一个代理对象ActionProxy,来帮助我们处理事情。注意,这个ActionProxy实际上不做任何实事的,而是指挥别人做。
第四步:ActionProxy叫ConfigManager获取struts.xml中的各种配置信息,其中struts.xml就有action的类全限定类名等信息,这样就可以通过action的名字找到其位置了。
第五步:有了actionMapping获取的请求数据和ConfigManager获取的struts.xml中的数据,就叫ActionInvacation来查找对应的action了
第六步:在找到action之前会经过一系列的拦截器,struts内部默认实现的。找到action后,就相当于我们的servlet,在其中执行一些业务代码,然后跳转到目标页面,响应回去。struts的整个过程即结束了。