Struts框架的配置

Posted by Surflyan on 2017-09-27

1. Struts.xml 举例

Struts.xml 是 Struts2 框架的核心配置文件,主要用于配置核心控制器 Action 类,同时还可以配置作用于 Action 的拦截器、Action 的 result 映射等,在程序运行时 struts.xml 将被 Struts 2 框架自动加载。

下面是一个完整的 Struts.xml 配置文件,来源于 Struts 官方文档,做了部分修改,作为介绍的例子。

<!DOCTYPE struts PUBLIC
     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     "<http://struts.apache.org/dtds/struts-2.0.dtd>">
 <struts>
    <!-- 声明包-->
     <package name="tutorial" extends="struts-default">
         <!--定义Action,method指定方法,默认为exetute-->
         <action name="HelloWorld" class="tutorial.HelloWorld", method = "execute">
     <!--定义处理成功后的映射页面-->
             <result name = “SUCCESS”>/HelloWorld.jsp</result>
         </action>
         <!-- Add your actions here -->
     </package>
 </struts>

2. Package 配置元素

Package 配置元素用于声明一个包,通过一个必须的 name 属性作为他的标识,extedns 属性允许继承另外一个 Package 定义的配置,通常情况下生命的包需要继承于 struts-default 包。
Package 元素的 namespace 属性可以将 Package 中的 action 配置为不同的名称空间, Struts 2 使用 action 的名称和它所在的名称空间来标识一个 action 。


3. Action

3.1 认识 Action

Action 类是 Struts 2 的核心控制器,主要用于处理 HTTP 请求。通常在开发中的 Action 类,需要继承框架提供的 com.opensymphony.xwork2.ActionSupport 类,并重写该类的 execute()方法, 需按照 JavaBean 规范实现 setter 方法,请求参数才能注入

3.2 Action 的基本流程

在 web.xml 中配置了 Struts2 的过滤器,因此当浏览器向 Web 容器发送一个 HTTP 请求时,Web 容器就调用 Struts2 过滤器的 doFilter() 方法。此时 Struts2 接收到 HTTP 请求,判断这个请求是否与某个 Action 对象相匹配。如果找到匹配的 Action 就会调用该对象的 execute()方法,并根据结果返回相应的值。然后,Struts2 通过 Action 的返回值查找返回值所映射的页面,最后通过一定的视图返回给浏览器。

3.3 动态 Action

之前介绍的都是通过 Action 对象重写 execute()方法处理请求的。但是在多业务逻辑中,这样就不适用了。Struts 2 框架提供了 Dynamic Action,通过请求对象中特定的方法处理某一业务逻辑。这样控制的代码必须写在一个 返回类型为 String 的无参public 方法 中。

3.4 Action 的配置

       <action name="HelloWorld" class="tutorial.HelloWorld">
              <result  name = "SUCCESS">/HelloWorld.jsp</result>
        </action>

name 属性是必须配置的,用于指定匹配此 Action的 URL。class 属性是 Action 实现的完整类名。之前讲了动态 Action,动态 action 的调用主要有三种方法:

  1. method属性指定调用的 Action 类的方法,默认调用 execute()方法,如果想调用其他非 execute()方法,直接通过 method 属性更改。
  2. 请求 Action 的 URL 地址后加上”!” 和请求方法名。具体操作格式为: /actionName!methodName.action
  3. 使用通配符调用。

4. Result 配置元素

当 Action 类的方法执行完成后,返回一个字符串类型的结果码,框架根据这个结果码选择对应的 Result 元素给浏览器。 元素的两个属性为 name type ,其中 name 属性用于指定 Result 的逻辑名称,与 Action 对象的返回值相对应,name 属性的默认值为 “SUCCESS”。type 属性用于设置返回结果的类型,如请求转发和重定向等。


Reference

  1. Java Web 开发与实践
  2. Struts 官方文档

请多多指教!