基础配置:
创建web工程
将struts2-blank.war中的lib下的包导入工程
把struts2-blank里classes目录下的struts.xml配置文件拷贝到工程的src下
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>
struts.xml配置action
编写HelloAction类
WebContent中添加一个success.jsp页面
Tomcat运行Web工程成功访问:http://localhost:8080/hello 或 hello.action
Struts执行流程
- 客户端发送一个HTTP请求
- 该请求被struts2的核心过滤器StrutsPreparedAndExecuteFilter匹配(只要是在过滤器的url-pattern中配置了/*,那么任何请求都会进入该过滤器,无论该请求是否需要struts2来处理),当然,在进入这个过滤器之前会依次进入在web.xml中配置的位置在struts2过滤器之前的其他Filter或Servlet
- struts2的过滤器会询问(形象一点的说法,其实就是调用方法)ActionMapper该请求是否有与之对应的业务控制类,如果没有,则放行,如果有,进入下一步执行流程
- struts2通过ActionProxy实例化ActionInvocation,当然在这之前ActionProxy还会通过ConfigurationManager按序加载struts2的配置文件:default.properties, struts-default.xml, struts.properties, struts.xml…(先加载struts默认的,然后才是自己定义的),正是因为加载了这些配置文件所以struts才能找到相应的拦截器以及业务控制类。
- ActionProxy初始化一个ActionInvocation并通过它的invoke来正式执行一系列的拦截器以及Action,在执行完Action之后会根据使用的模板(jsp, velocity, freemarker…)组装结果集Result,渲染页面
- 返回给客户端响应
修改struts的访问后缀
第一种struts.xml的配置文件中添加 <constant name="struts.action.extension" value="do">
第二种web.xml中配置
配置struts的开发模式(显示更多错误信息)
struts.xml中配置
访问地址namespace
http://localhost:8080/user/hello
动作类action的写法
通配符优化struts.xml代码
result中type的取值
- dispatcher 转发到页面
- redirect 重定向到页面
- chain 转发到action
- redirectAction 重定向到action