1.struts框架准备工作
1.导入包
在这个下面的WEB-INF/lib里的全部的包
2.书写Action类
public class HelloWord { public String hello() { System.out.println("Hello World"); return "success"; } }
3.书写src/strurs.xml的配置文件
<struts> <!-- package:分类 namespace:命名空间 extend:继承 --> <package name="hello" namespace="/test" extends="struts-default" > <!-- name:访问路径名,class:处理类的全类名 method:要这此类调用的方法 --> <action name="helloWorld" class="cn.test.deno.HelloWord" method="hello"> <!-- 处理结果集,默认是转发 --> <result name="success">/hello.jsp</result> </action> </package> </struts>
4.配置struts2核心过滤器到web.xml
<!-- 配置struts核心过滤器 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
5.测试
2.struts流程图
- 首先客服端游览器会发送一个请求
- 接着程序会调用StrutsPrepareAndExecuteFilter,然后访问ActionMapper这个请求是否需要调用某个Action
- 如果ActionManager决定需要调用某个Action,StrutsPrepareAndExecuteFilter会把请求交给ActionProxy
- ActionProxy会通过配置管理器(Configuration Manager) 从配置文件(struts.xml)中读取框架信息,从而找到需要调用的Action类
- ActionProxy会创建一个ActionInvcation的实例
- ActionInvcation使用命名模式调用Action,在调用Action之前会先依次调用拦截器(intercepter1,intercepter2..)
- 一旦执行完Action,则返回结果字符串,ActionInvcation就会负责查找字符串对应的Result,然后执行这个Result。通常情况下Result会调用一下模板jsp
- 产生的Result信息返回给ActionInvcation,在此过程中拦截器会被再次执行(顺序与之前的相反)
- 最后产生一个HttpServletResponse的响应行为,通过StrutsPrepareAndExecuteFilter返回给客户端游览器