action是struts2的应用核心,从而需要大量的action来完成业务逻辑,因此把action称为业务控制器。在Struts2中,一个Action类代表一次请求或调用,每个请求的动作都对应于一个相应的Action类,一个Action类是一个独立的工作单元。也就是,用户的每次请求,都会转到一个相应的Action类里面,由这个Action类来进行处理,因此一个Action类代表了用户的一次请求或调用。简单来说,Action就是用来处理一次用户请求的对象。
Action在Struts2的配置非常简单,基本的规则如下:
<action>元素是<package>元素的子元素,应该配置在<package>元素里面
<action>元素通常需要配置name和class属性,其中name是必须的
<action>元素可以包含其他的子元素:比如<param>、<result>、<interceptor-ref>、<exception-mapping >
通常也就是配置name和class属性,然后配置<result>子元素。
在struts2中必需要配置struts.xml才能使用action。而且Action应该配置成为<package>元素的子元素。
实例练习:
配置web.xml文件
<filter><!-- 加载核心库的控制标签filter-name -->
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- strust2过滤器生效的地址 -->
<filter-mapping>
<filter-name>struts2</filter-name><!-- 可以不必是Struts2但必需与上个相同 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
编写action类
package action;
//action就是一个普通的java类
public class Action {
public String hello(){
return"success";
}
}
配置struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="hello" class="action.action" method="hello">
<result name="success">success.jsp</result>
<result name="fail">fail.jsp</result>
</action>