Struts2配置文件

来源:互联网 发布:java缓存技术 redis 编辑:程序博客网 时间:2024/06/11 14:12

要使用Struts,首先要配置web.xml,这个文件放在WEB-INF目录下。下面配置示例:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns="http://java.sun.com/xml/ns/javaee"         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"         version="3.0">    <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></web-app>


上面这个例子中开头有一大堆网址,这些网址有什么用呢?它类似于Java中的import语句,目的是把标签的定义导入到当前的命名空间。


Struts的配置文件名是/WEB-INF/classes/struts.xml,有两种方式。

  • XML方式。这种方式将配置内容写入到struts.xml中。
  • Annotation方式。这种方式将Annotation加到Java类上。Annotation的内聚程度更高。注解模式需要在web.xml/filter中指定actionPackages,告诉Struts在哪里查找注解。


下面是一个XML方式配置的例子。定义了三个动作。

<struts>  <constant name="struts.devMode" value="true"/>  <package name="default" namespace="/" extends="struts-default">    <action name="Login" class="manning.Login">      <result>/AccountPage.jsp</result>      <result name="input">/Login.jsp</result>    </action>    <action name="Registration" class="manning.Registration">      <result>/Registration.jsp</result>    </action>    <action name="Register" class="manning.Register">      <result>/RegisterSuccess.jsp</result>      <result name="input">/Register.jsp</result>    </action>  </package></struts>



下面是常用标签的详细说明:

  • 默认action。如果需要给包设定一个默认的action,可以使用default-action-ref标签。
  • 隐藏action扩展名。设定<constant name="struts.action.extension" value=","/>,或者<constant name="struts.action.extension" value=""/>。有逗号表示如果找不到action,自动将请求转发给静态文件,没有逗号就是将所有的url都视为action,如果找不到action就报错。


下面是一种Annotation方式的配置。在Tomcat中修改Annotation之后要重启服务器才能见效。

@Results({    @Result(name="input",value="/RegistrationSuccess.jsp"),    @Result(value="/AccountPage.jsp")})public class Login implements Action {    public String execute() {        ...    }}



不管是哪一种配置方式,最后都会被转化成相同的运行时组件。下图是配置被转换成运行时组件的样子。







0 0