原理:
Struts2框架本身大致可以分为三个部分:核心控制器FilterDispatcher、业务控制器Action、用户自定义的企业业务逻辑组件。
(1)核心控制器FilterDispatcher
FilterDispatcher是Struts2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件需要用户自己定义,用户在定义它们的时候,需要制定相应的配置文件,供FilterDispatcher来调用。
Struts2的工作原理要比Struts1的工作原理简单,和WebWork框架的原理基本相同。按照模块来分的话:可以分为:ServletFilter、Struts2核心模块、拦截器和用户实现部分。
结构图:
(1)客户端提交一个HttpServletRequest:localhost:8080/test/Reg.action
(2)请求被依次提交到过滤器:
上下文传送的内容为ActionContext,它是一个容器(map),包含包括valueStack在内的很多信息。
1.ActionContextCleanUp :
在ActionContext中定义一个值,延长Action中属性值的周期,当jsp中进行访问时,让actionContextCleanUp过滤器来清除属性,不让Action自行处理。
2.其他过滤器(SiteMesh等):
主要过滤HttpServletResponse,对整个项目返回到客户端的内容进行装饰,让页面的装饰相一致。
3.FilterDispatcher:
它是控制器的核心,也就是MVC模式struts2控制层的核心。
FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个HttpServletRequest(请求)。如果需要,则交给ActionProxy来处理。
ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类。
ActionProxy创建一个ActionInvocation实例,ActionInvocation通过代理模式调用Action,在调用Action之前,ActionInvocation会加载Action相关的所有Interceptor(拦截器)。一旦Action执行完毕,ActionInvocation负责通过struts.xml配置找到对应的返回结果result。
(3)FilterDispatcher过滤器主要有三个方法:destroy、doFilter、init
destroy:
doFilter:
调用Dispatcher.serviceAction,该方法如果找到相应的Action,将把用户请求交给ActionProxy。
init:
(4)简要流程:
1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被FilterDispatcher接收。
3、根据struts.xml配 置,找到需要调用的Action类和方法, 并通过IoC方式,将值 注入给Aciton。
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
6、返回HTTP响应到客户端浏览器。
应用:
(2)其中必需的六个压缩包:
1.选择菜单Window->Preferences->Java->Build Path->User Libraries。
2.新建Library后,将以上五个包全部添加进去。
3.开发第一个Struts2应用程序
a.新建一个WEB PROJECT,导入以上7个包。
b.在web.xml中注入struts2的过滤器:
d.项目排列:
Struts2的原理及应用
最新推荐文章于 2020-12-10 04:22:54 发布