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>