struts常用配置详解

1包相关配置

  • 包装标签称为包,这个包与Java的中的包的概念不一致。包为了更好管理行为的配置

1.1包标签的属性

  • name:包的名称,只有在一个项目中不重名即可。
  • extends          :继承哪个包,通常值为struts-default
  • namespace    :名称空间,与<action> 标签中的名称属性共同决定访问路径。
  • abstract:抽象的,用于其他包的继承。

1.2名称空间有三种写法

  • 带名称的名称空间:namespace =“/ aaa”
  • 跟名称空间:namespance =“/”
  • 默认名称空间:namespace =“”

2动的配置

行动标签配置动作类

2.1 action标签的属性

  • name          :与namespace 共同决定访问路径
  • class           Action 类的全路径
  • 方法       :执行动作中的哪个方法的方法名,默认值执行
  • converter:用于设置类型转换器

3常量的配置

在Struts2的框架中,提供了非常多的常量:( default.properties中

可以在struts.xml中,struts.properties,web.xml中配置常量

3.1 struts.xml

<constant name="struts.action.extension" value="action"/>

3.2 struts.properties

struts.action.extension=action

3.3 web.xml

在配置核心过滤器时,在过滤器中加上如下代码

<init-param>
    <param-name>struts.action.extension</param-name>
    <param-value>action</param-value>
</init-param>

4分模块开发

<include resource="com/itykd/web/action/struts-demo1.xml"/>

5 Action访问的配置

默认是访问action类中的public String execute(){}方法;

5.1通过方法设置

<action name="userFind" class="com.itykd.web.action.UserAction" method="find"></action>
<action name="userUpdate" class="com.itykd.web.action.UserAction" method="update"></action>

5.2通配符访问(最常用)

<action name="user_*" class="com.itykd.web.action.UserAction" method="{1}"></action>

5.3动态方法访问

  • 首先要开启动态方法访问,这里在struts.xml中中配置
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
  • 动态方法访问配置
<action name="user" class="com.itykd.web.action.UserAction"></action>
  •  编写访问路径
<a href="${pageContext.request.contextPath}/user!find.action">查询用户</a><br/>
<a href="${pageContext.request.contextPath}/user!update.action">更新用户</a><br/>

6结果页面的配置 

6.1全局结果页面

  • 全局结果页面:全局结果页面指的是,在包(包)中配置一次,其他的在这个包中的所有的动作只要返回了这个值,都可以跳转到这个页面。
<package>
    <global-results>
        <result name="error">/error.jsp</result>
    </global-results>
</package>

6.2局部结果页面(局部和全局都有返回相同值时,局部优先)

<action name="user_*" class="com.itykd.web.action.UserAction" method="{1}">
    <result name="success">/success.jsp</result>
</action>

6.3结果标签

结果用于标签配置页面的跳转在结果标签上有两个属性:

  • name属性:逻辑视图的名称。默认值:success
  • type属性:页面跳转的类型。默认值:dispatcher

6.3.1 name属性

  • 成功
  • 错误
  • 登录
  • INPUT                输入在某些拦截器中会使用。
  • 没有

6.3.2 type属性

  • dispatcher       :默认值,请求转发。(Action 转发JSP
  • stream:Struts2中提供文件下载的功能。
  • redirectAction:重定向。(Action重定向动作)
  • chain:转发。(动作转发动作)
  • redirect             :重定向。(Action 重定向JSP

7拦截器的配置

        在封装下定义拦截器,并将拦截器放入注意:一旦引入了自定义拦截器,默认拦截器栈的拦截器就不执行了

  • 定义拦截器
   <!-- 定义拦截器 -->
        <interceptors>
            <interceptor name="myInterceptor1" class="com.itykd.web.interceptor.MyInterceptor1"/>
        </interceptors>
        <action name="interceptorAction1" class="com.itykd.web.action.InterceptorAction1">
            <result name="success">/demo1.jsp</result>
            <!-- 引入拦截器栈 (一旦引入自定义拦截器,默认拦截器栈的拦截器就不执行了)-->
            <interceptor-ref name="defaultStack"/>
            <interceptor-ref name="myInterceptor1"/>
        </action>
  • 定义一个拦截器栈
<!-- 定义拦截器 -->
        <interceptors>
            <interceptor name="myInterceptor1" class="com.itykd.web.interceptor.MyInterceptor1"/>
            <!-- 定义拦截器栈 -->
            <interceptor-stack name="myStack">
                <interceptor-ref name="defaultStack"/>
                <interceptor-ref name="myInterceptor1"/>
            </interceptor-stack>
        </interceptors>
        <action name="interceptorAction1" class="com.itykd.web.action.InterceptorAction1">
            <result name="success">/demo1.jsp</result>
            <!-- 引入拦截器栈 (一旦引入自定义拦截器,默认拦截器栈的拦截器就不执行了)-->
            <interceptor-ref name="myStack"/>
        </action>
  • 权限拦截器的配置 
   <!-- 定义拦截器 -->
        <interceptors>
            <interceptor name="myInterceptor1" class="com.itykd.web.interceptor.MyInterceptor1"/>
        </interceptors>
        <action name="interceptorAction1" class="com.itykd.web.action.InterceptorAction1">
            <result name="success">/demo1.jsp</result>
            <!-- 引入拦截器栈 (一旦引入自定义拦截器,默认拦截器栈的拦截器就不执行了)-->
            <interceptor-ref name="myInterceptor1">
                <!-- InterceptorAction1的login方法将放行-->
                <param name="excludeMethods">login</param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"/>
        </action>
扫描二维码关注公众号,回复: 4623774 查看本文章

  

猜你喜欢

转载自blog.csdn.net/W2612888/article/details/85085111
今日推荐