上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页面。