- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Struts 2深入
第四章
回顾与作业点评
简述Struts 2的执行过程?
package元素与Java中的包有什么异同之处?
Result结果类型有哪些?有什么区别?
2/42
预习检查
Struts 2中为什么需要拦截器 ?
Struts 2中拦截器是如何工作的?
实现文件上传功能时,需要添加哪些jar文件 ?
3/42
本章任务
使用拦截器实现用户权限控制
使用Struts 2框架实现文件的上传下载
4/42
本章目标
掌握Struts 2架构
掌握Struts 2拦截器
掌握Struts 2框架的文件上传和下载
5/42
Struts 2架构剖析
6/42
Struts 2核心接口和类
核心接口和类
名称
作用
ActionMapper
根据请求的URI查找是否存在对应Action调用
ActionMapping
保存调用Action的映射信息,如namespace、name等
ActionProxy
在XWork和真正的Action之间充当代理
ActionInvocation
表示Action的执行状态,保存拦截器、Action实例
Interceptor
在请求处理之前或者之后执行的Struts 2组件
7/42
Struts执行流程简图
HttpServletRequest
HttpServletResponse
核心控制器
Interceptor1
Interceptor2
Interceptor3
Action
Result
8/42
为什么需要拦截器
早期MVC框架将一些通用操作写死在核心控制器中,致使框架灵活性不足、可扩展性降低
Struts 2将核心功能放到多个拦截器中实现,拦截器可自由选择和组合,增强了灵活性,有利于系统的解耦
9/42
什么是拦截器
Struts 2大多数核心功能是通过拦截器实现的,每个拦截器完成某项功能
拦截器方法在Action执行之前或者之后执行
拦截器栈
从结构上看,拦截器栈相当于多个拦截器的组合
在功能上看,拦截器栈也是拦截器
拦截器与过滤器原理很相似
为Action提供附加功能时,无需修改
Action代码,使用拦截器来提供
10/42
拦截器工作原理
拦截器的执行过程是一个递归的过程
三阶段执行周期:
1、做一些Action执行前的预处理
2、将控制交给后续拦截器或返回结果字符串
3、做一些Action执行后的处理
11/42
拦截器简单应用2-1
拦截器示例
public class MyTimerInterceptor extends AbstractInterceptor{
public String intercept(ActionInvocation invocation)
throws Exception {
//预处理工作
long startTime = System.currentTimeMillis();
//执行后续拦截器或Action
String result = invocation.invoke();
//后续处理工作
long execTime = System.currentTimeMillis() - startTime;
System.out.println("The interval time is "+execTime+" ms");
//返回结果字符串
return result;
}
}
继承AbstractInterceptor类
重写intercept()
12/42
拦截器简单应用2-2
拦截器的简单配置
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="myTimer"
class="erceptor.MyTimerInterceptor">
</interceptor>
</interceptors>
<action name="action" class="com.pb.action.MyTimerAction">
<result>/index.jsp</result>
<interceptor-ref name="myTimer"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
定义拦
截器
定义单个
文档评论(0)