Struts2

回过头来重温Struts2

  • Struts2是WebWork的升级!!!

工作原理图

Struts2

FilterDispatcher是控制器的核心,就是MVC的Struts 2实现中控制层(Controller)的核心。之后被StrustPrepareAndExecuteFilter替代,重点!这是一个过滤器!!!

  • 工作原理路径
    HttpServletRequest- -->过滤器(ActionContextCleanUp,OtherFilters,StrustPrepareAndExecuteFilter)顺序固定
    ---> ActionMaper,若以.action结尾的则再到StrustPrepareAndExecuteFilter --->ActionProxy(通过ConfigurationManager读取struts.xml找到具体的Action类,再通过ActionProxy代理来创建反向实例)--->ActionInvocation--->拦截器(Interceptor1,Interceptor2,Interceptor3···)--->Action--->Result--->Template(视图)---->拦截器(Interceptor3,Interceptor2,Interceptor1)---->HttpServletResponse--->用户实例

核心文件

  • web.xml
//web.xml中配置过滤器
   <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  • struts.xml
    -- 主要负责管理应用中的Action的映射,以及该Action包含的Results定义
  • 包含的内容
    -- 全局属性
    -- 用户请求和响应Action之间的对应关系
    -- Action可能用到的参数和返回结果
    -- 各种拦截器的配置
//可以用include标签去包含其他的文件
<include  file="A.xml" > </include>
<!--  定义常量,等同于再struts.properties中定义  -->

    
    <constant name="struts.devMode" value="true" /> 
<! --    
等同于写在struts.properties中的
struts.devMode = true
-->
        <constant name="struts.action.extension" value="html,do,action" />
    <constant name="struts.ognl.allowStaticMethodAccess" value="true" />
    <constant name="struts.configuration.xml.reload" value="true" />
    <constant name="struts.convention.default.parent.package"value="struts-default" />
    <constant name="struts.i18n.encoding" value="UTF-8" />
    
    

    <package name="struts-default-authority" extends="struts-default">
        <interceptors>
            
            //TODO
            
        </interceptors>
        <default-interceptor-ref name="mydefault" />
        <global-results>
            <result name="login">/index.jsp</result>
        </global-results>
    </package>
</struts>

Servlet API

  • 方式
    -- ActionContext
    -- 实现**Aware接口
    -- ServletActionContext
上一篇:无法通过JavaScript建立WebSocket连接


下一篇:java-如何在Struts 2中使用DispatcherListener