"struts2教程"
Struts2是一个基于MVC设计模式的Java Web应用程序框架。在客户端提交一个HttpServletRequest请求后,请求会被一系列过滤器(Filter)处理,这些过滤器通常包括ActionContextCleanUp、其他过滤器(如SiteMesh)以及核心的FilterDispatcher。FilterDispatcher在Struts2中扮演了控制器的角色,类似于Struts1.x中的ActionServlet。
FilterDispatcher会咨询ActionMapper,以确定是否需要调用特定的Action来处理请求。如果ActionMapper同意调用Action,FilterDispatcher会将控制权交给ActionProxy。ActionProxy通过Configuration Manager(即struts.xml配置文件)来找出需要执行的Action类。例如,如果用户尝试注册,ActionProxy可能会找到UserReg类来处理请求。
ActionProxy创建ActionInvocation实例,ActionInvocation采用代理模式调用Action。在Action执行之前,ActionInvocation会加载与Action相关的所有Interceptor(拦截器)。拦截器允许开发者在Action执行前后插入自定义逻辑,如身份验证、日志记录或事务管理。Action执行完毕后,ActionInvocation依据struts.xml中的配置找到相应的结果(Result)来呈现给用户。
Struts2框架的实现依赖于多个库,包括核心库struts2-core、模板引擎Freemarker、日志库commons-logging、对象图导航语言OGNL、xwork库、文件上传组件commons-fileupload等。在最新的2.1.6版本中,commons-fileupload.jar是必需的,因为它包含了RequestContext类,否则会导致运行时异常。
配置方面,有两个主要的XML文件:web.xml和struts.xml。web.xml文件配置了StrutsPrepareAndExecuteFilter过滤器,负责初始化框架并处理所有请求。ActionContextCleanUp过滤器则用于清理任务。而struts.xml是Struts2的核心配置文件,可包含多个子配置文件,每个子文件对应不同的应用模块,方便管理和维护。
在实际开发中,开发者通常会为每个模块定制自己的struts.xml配置,以便更好地组织和管理Action、Interceptor和Result。通过这种方式,Struts2提供了一种灵活且强大的方式来构建Java Web应用程序。