Struts 2.x权威指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4.2 配置Action

上面定义了Struts 2的Action,但该Action还未配置在Web应用中,还不能处理用户请求。为了让该Action能处理用户请求,还需要将该Action配置在struts.xml文件中。

前面已经介绍过了,struts.xml文件应该放在classes路径下,该文件主要放置Struts 2的Action定义。定义Struts 2 Action时,除了需要指定该Action的实现类外,还需要定义Action处理结果和资源之间的映射关系。下面是该应用的struts.xml文件的代码。

程序清单:codes\02\struts2qs\WEB-INF\src\struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- 配置Struts 2配置文件的根元素 -->
<struts>
    <!-- Struts 2的Action必须放在指定的包空间下定义 -->
    <package name="struts2qs" extends="struts-default">
          <!-- 定义login的Action,该Action的实现类为
                org.crazyit.struts2qs.action.LoginAction类 -->
          <action name="login" class="org.crazyit.struts2qs.action.LoginAction">
                <!-- 定义处理结果和视图资源之间的映射关系 -->
                <result name="error">/error.jsp</result>
                <result name="success">/welcome.jsp</result>
          </action>
    </package>
</struts>

上面的映射文件定义了name为login的Action,即:该Action将负责处理向login请求的客户端请求。该Action将调用自身的execute方法处理用户请求,如果execute方法返回success字符串,请求将被转发到/welcome.jsp页面;如果execute方法返回error字符串,则请求被转发到/error.jsp页面。