第三章 Struts2配置详解

3.1 Struts2执行过程
    1、获取Struts2资源
    2、在应用程序中导入Struts2的类库
    3、在web.xml中配置StrutsPrepareAndExecuteFilter
    4、编写Action类进行配置
    5、配置返回结果与物理视图资源的关系
    6、编写结果视图
    
        web.xml
            

<filter>
                <filter-name>struts2</filter-name>
                <filter-class>
                    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
                </filter-class>
            </filter>

            <filter-mapping>
                <filter-name>struts2</filter-name>
                <url-pattern>/*</url-pattern>
            </filter-mapping> 

 

  
        Action类
            核心控制器(Filter):用于拦截用户的请求 ,对请求进行处理
            业务控制器(Action):调用相应的Model类实现业务吃了,返回结果
        Struts.xml
        

   <struts>
            <constant name="struts.ui.theme" value="simple"></constant>
            <package name="default" namespace="/" extends="struts-default">
            <action name="login" class="struts.LoginAction">
                <result name="success" type="dispatcher">guanli.jsp</result>
                <result name="input">login.jsp</result>
            </action>
            </package>
            </struts>

 


        Result
            1、当web容器接收到请求后,将请求交由在web中配置的Struts2框架的控制器StrutsPrepareAndExecuteFilter(控制器)
            2、由StrutsPrepareAndExecuteFilter确定请求对于的Action(业务控制器)
            3、框架根据Action返回的结果字符串,由StrutsPrepareAndExecuteFilter选择对于的result,将结果呈现给用户
            Action只负责返回结果,不与视图关联
            
    Struts2配置文件
        处理中文乱码:
            <constant name="struts.il8n.encoding" value="UTF-8"></constant>
        Struts2的包:
            <package name="default" namespace="/" extends="struts-default">
                name:必需且唯一,指定包的名称
                extends:指定要扩展的包
                namespace:可选,定义包中的Action的命名空间
        Struts-default.xml:Struts2的默认配置文件,提供默认值,自动加载
        struts-plugin.xml:Struts2插件使用的配置文件
3.2    Action的配置
    作用:
        1、封装工作单元
        2、数据转移场所
        3、返回结果字符串
    method属性:
        例:
       

<action name="login" class="struts.LoginAction" method="login">
            <result name="success" type="dispatcher">guanli.jsp</result>
            <result name="input">login.jsp</result>
            <result name="error">error.jsp</result>
 </action>

 


        调用login.action之后,执行login方法,根据返回结果字符串返回结果视图
    Action动态方法调用
      

 <action name="Struts" class="struts.StrutsAction">
            <result name="login">guanli.jsp</result>
            <result name="Guanli">guanli.jsp</result>
            <result name="Details">details.jsp</result>
            <result name="Fabu">guanli.jsp</result>
            <result name="Update">guanli.jsp</result>
            <result name="Register">login.jsp</result>
        </action>

 


            这种方法的使用可以减少xxxAction的数量,但是会带来安全隐患
                 使用方法:Struts!login.action
    通配符:
      

 <action name="*house" class="struts.StrutsAction" method="{1}">
            <result name="success">{1}.jsp</result>
            <result name="input">{1}.jsp</result>
            <result name="error">error.jsp</result>
        </action>

 


        调用方法:loginhouse.action,配置该action元素时,还指定了method属性
    默认的Action:
       

<default-action-ref name="defaultAction">
            <action>
                <result name="error">error.jsp</result>
            </action>
        </default-action-ref>

 


3.3 Result的配置
    常用结果类型
        dispatcher:result默认结果类型,以转发方式请求指定的视图资源,请求中包含的数据信息依然存在
        redirect:以重定向方式请求指定的视图资源,请求中包含的数据信息将丢失
        redirectAction:以重定向方式请求指定的视图资源,请求中包含的数据信息将丢失,主要重定向到另一个Action
    动态结果
        通过指定方法返回的值,指定执行哪一个Action(业务控制器)
    全局结果
       

<struts>
        <constant name="struts.ui.theme" value="simple"></constant>
        <package name="default" namespace="/" extends="struts-default">
            <global-result>
                <result name="error">error.jsp</result>
                <result name="login" type="redirect">login.jsp</result>
            </global-result>
        </package>
        </struts>

 

posted @ 2016-11-29 12:42  LuoBaiLin  阅读(205)  评论(0编辑  收藏  举报