Struts2的配置文件

加载:
当应用被tomcat加载的时候,struts2的配置文件就已经被加载

加载顺序

  1. default.properties
  2. struts-default.xml
  3. strtuts-plugin.xml
  4. struts.xml
  5. struts.properties
  6. web.xml

配置方式
properties 文件 key=value的方式配置
xml 文件 (推荐)
注:如果有多个配置文件,有相同的参数,后面的值会覆盖前面的值

常量

常量名常量值说明
struts.i18n.encodingUTF-8应用中使用的编码
struts.objectFactory.spring.autoWirenamespring框架整合有关
struts.multipart.parserjakarta指定文件上传用的组件
struts.multipart.maxSize2097152文件上传总文件大小限制:2M
struts.action.extensionaction,,Struts2框架内部的url地址后缀名。多个值用逗号分隔
struts.enable.DynamicMethodInvocationfalse是否允许动态方法调用
struts.devModefalse是否是开发模式
struts.ui.themexhtml页面展示用的主题

例:覆盖常量

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

struts.properties覆盖常量

struts.action.extension=html

web.xml 配置过滤器参数

<display-name>Struts Blank</display-name>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
        <param-name>struts.action.extension</param-name>
        <param-value>html</param-value>
        </init-param>
    </filter>

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

配置文件主要元素
package:
分包管理。易于管理动作类。便于模块化开发动作类。
name:包的名称。必须写。且必须唯一
extends:一般情况下需要继承struts-default包,但不是必须的。不过如果不继承的话,将无法使用struts2提供的核心功能。
struts-default.xml中定义着struts-default这个包。而struts-default.xml是在我们的struts.xml加载之前加载。
abstract:把包声明为抽象包,抽象包就是用来被继承的。只要是没有元素的包,就可以声明为抽象包。
namespace:名称空间。
访问路径= 名称空间 + 动作名称

<struts>
     <package name="xx" extends="struts-default" namespace="/">
     <action name="xx" class="xx.xx">
     <result>/index.jsp</result>
     </action>
     </package>
</struts>
action

作用:配置动作
属性: name 动作名称
class:动作类全名
默认的动作类:com.opensymphony.xwork2.ActionSupport
如果向替换默认动作类,在Struts.xml package中加入

package name="xx" extends="struts-default" namespace="/">
     <default-class-ref class="自定义动作类名"></default-class-ref>

动作类常量

SUCCESS                 正常
ERROR                   错误
INPUT                   回显
LOGIN                   登录
NONE                    不转向任何的视图

动作类路径
通配符 *

<struts>
     <package name="xx" extends="struts-default" namespace="/">
     <action name="xx_*" class="xx.xx" method="{1}">
     <result>/index.jsp</result>
     </action>
     </package>
</struts>

动态方法调用:

<a href="${pageContext.request.contentPath}/xx!username">xx</a>

允许动态方法调用:

<constant name="struts.enable.DynamicMethodInvocation" value="true"/>

result元素
为动作指定结果视图
name:逻辑视图的名称,对应着动作方法的返回值。默认值是success。
type:结果类型,指的就是用什么方式转到定义的页面。默认是dispatcher。

<struts>
     <package name="xx" extends="struts-default" namespace="/">
     <action name="xx_*" class="xx.xx" method="{1}">
     <result name="success" type="dispatcher">/index.jsp</result>
     </action>
     </package>
</struts>

type 取值

<result-types>
            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
            <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
            <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
            <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
            <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
            <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
            <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
            <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
            <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
            <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>

dispatcher:请求转发
redirect:重定向
redirectAction:
重定向到另一个相同名称空间的动作

<struts>
     <package name="xx" extends="struts-default" namespace="/">
     <action name="xx_*" class="xx.xx" method="{1}">
     <result name="success" type="redirectAction">xxx</result>
     </action>
     <action name="xxx" class="xxx.xxx" >
     <result>/go.jsp</result>
     </action>
     </package>
   </struts>

重定向到不同名称空间的动作

<struts>
     <package name="xx" extends="struts-default" namespace="/">
     <action name="xx" class="xx.xx" method="{1}">
     <result name="success" type="redirectAction">
     <param name="namespace">/xxx</param>
     <param name="actionName">x</param>
        </result>
     </action>
     <action name="xxx" class="xxx.xxx" >
     <result>/go.jsp</result>
     </action>
     </package>
     <package name="xxx" extends="struts-default" namespace="xxx">
     <action name="x" class="xxx" method="xxx">
   </struts>

chain:请求转发

<result name="success" type="chain">xxx</result>

param元素的作用:依赖注入(Dependence Injection)思想
我们通过struts-default.xml中的resultTypes元素中配置可以看出,每个结果类型视图其实都是靠一个类来实现的。而param元素就是将配置的参数,注入到该类中。
调用的是对应类的setter方法进行注入的。
redirectAction结果视图

<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>

该类中会有actionName和namespace属性的注入方法。

public void setActionNames(String actionName){
this.actionName=actionName;
}
public void setNamespace(String namespace){
this.namespace=namespace;
}

自定义结果类型
结果类型就是类,这些类都实现了com.opensymphony.xwork2.Result接口。
或者继承自该接口的实现类org.apache.struts2.dispatcher.StrutsResultSupport。
这些类都有一个doExecute方法,用于执行结果视图。

public class xx  extends StrutsResultSupport{
    protected void doExecute(String arg0, ActionInvocation arg1) throws Exception {
        System.out.println("xxx");
    }
}
   <result-types>
     <result-type name="xx" class="xx"></result-type>
     </result-types>
<result type="xx">go.jsp</result>

全局视图

<global-results>
     <result name="input" type="xx">/xxx.jsp</result>
 </global-results>

Servlet API

HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse()

引入其他配置文件

<include file="xx.xml"></include>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值