1、在web.xml文件中定义核心Filter来拦截用户请求。
<!-- 定义Struts 2的核心Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- 让Struts 2 的核心Filter拦截所有请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、定义用户请求的Action类。
Action是MVC中的C,也就是控制器。说白了就是编写Java源文件来处理用户请求。
MVC框架的底层机制是:核心Servlet或Filter接收到用户请求后,通常会对用户请求进行简单处理,然后通过反射来创建Action实例,并调用Action的指定方法来处理用户请求。那么,如何知道创建哪个Action的实例呢? 有两个解决方法:
- 利用配置文件,指定Action对应使用的Action类。
- 利用约定,我们可以约定xxx.action总是对应XxxAction类。在Struts2中可以使用Convention插件来实现这一约定。
3、配置Action。在struts.xml中指定Action所对应的Action类。
<action name="login" class="org.crazyit.app.action.LoginAction">
……
</action>
上述的配置片段指定了如果用户请求URL为login时,使用org.crazyit.app.action.LoginAction来处理。
4、配置处理结果和物理视图资源之间的对应关系。
通常当Action处理用户请求结束后,会返回一个处理结果(一般使用简单的字符串表示),我们称之为逻辑视图名,这个逻辑视图名需要关联指定的物理视图资源才有价值。
<action name="login" class="org.crazyit.app.action.LoginAction">
<!-- 定义逻辑视图和物理资源之间的映射 -->
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>上述指定了两个处理结果和两个物理视图之间的映射关系。
5、编写视图资源。