4.Struts-2拦截器

4.Struts-2拦截器

ID:81927690

大小:1.70 MB

页数:42页

时间:2022-10-14

上传者:可爱的嘎嘎
4.Struts-2拦截器_第1页
4.Struts-2拦截器_第2页
4.Struts-2拦截器_第3页
4.Struts-2拦截器_第4页
4.Struts-2拦截器_第5页
4.Struts-2拦截器_第6页
4.Struts-2拦截器_第7页
4.Struts-2拦截器_第8页
4.Struts-2拦截器_第9页
4.Struts-2拦截器_第10页
资源描述:

《4.Struts-2拦截器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

Struts2拦截器

1线上线下平台预习2/42

2本章任务使用拦截器实现用户权限控制使用Struts2框架实现文件的上传和下载3/42

3本章目标掌握Struts2架构掌握Struts2拦截器掌握Struts2框架的文件上传和下载4/42

4Struts2架构剖析5/42

5Struts2核心接口和类核心接口和类6/42名称作用ActionMapper根据请求的URI查找是否存在对应Action调用ActionMapping保存调用Action的映射信息,如namespace、name等ActionProxy在XWork和真正的Action之间充当代理ActionInvocation表示Action的执行状态,保存拦截器、Action实例Interceptor在请求处理之前或者之后执行的Struts2组件

6Struts执行流程简图7/42HttpServletRequestHttpServletResponse核心控制器Interceptor1Interceptor2Interceptor3ActionResult

7为什么需要拦截器早期MVC框架将一些通用操作硬编码在核心控制器中,致使框架灵活性不足、可扩展性降低Struts2将核心功能放到多个拦截器中实现,拦截器可自由选择和组合,增强了灵活性,有利于系统的解耦8/42

8什么是拦截器Struts2大多数核心功能是通过拦截器实现的,每个拦截器完成某项功能拦截器方法在Action执行之前和之后执行拦截器栈从结构上看,拦截器栈相当于多个拦截器的组合在功能上看,拦截器栈也是拦截器拦截器与过滤器原理很相似9/42为Action提供附加功能时,无需修改Action代码,使用拦截器来提供经验

9拦截器工作原理拦截器的执行过程是一个递归的过程10/42三阶段执行周期:1、做一些Action执行前的预处理2、将控制交给后续拦截器或返回结果字符串3、做一些Action执行后的处理

10拦截器简单应用2-1拦截器示例11/42publicclassMyTimerInterceptorextendsAbstractInterceptor{publicStringintercept(ActionInvocationinvocation)throwsException{//预处理工作longstartTime=System.currentTimeMillis();//执行后续拦截器或ActionStringresult=invocation.invoke();//后续处理工作longexecTime=System.currentTimeMillis()-startTime;System.out.println("Theintervaltimeis"+execTime+"ms");//返回结果字符串returnresult;}}继承AbstractInterceptor类重写intercept()演示示例1-2:Action的执行时间

11拦截器简单应用2-2拦截器的简单配置12/42/index.jsp定义拦截器定义单个拦截器引用拦截器演示示例1-2:Action的执行时间

12配置多个拦截器13/42默认拦截器拦截器栈演示示例3:拦截器的详细配置

13Struts2自带拦截器params拦截器负责将请求参数设置为Action属性servletConfig拦截器将源于ServletAPI的各种对象注入到ActionfileUpload拦截器对文件上传提供支持exception拦截器捕获异常,并且将异常映射到用户自定义的错误页面validation拦截器调用验证框架进行数据验证workflow拦截器调用Action类的validate(),执行数据验证14/42

14Struts2默认拦截器栈struts-default.xml中定义一个defaultStack拦截器栈,并将其指定为默认拦截器只要在定义包的过程中继承struts-default包,那么defaultStack将是默认的拦截器15/42演示示例4:拦截器栈配置

15自定义拦截器实现Interceptor接口voidinit():初始化拦截器所需资源voiddestroy():释放在init()中分配的资源Stringintercept(ActionInvocationai)throwsException实现拦截器功能利用ActionInvocation参数获取Action状态返回结果码(result)字符串继承AbstractInterceptor类提供了init()和destroy()方法的空实现只需要实现intercept方法即可推荐使用16/42

16判断用户是否登录2-1权限验证拦截器17/42publicclassAuthorizationInterceptorextendsAbstractInterceptor{publicStringintercept(ActionInvocationinvocation)throwsException{//获取用户会话信息Mapsession=invocation.getInvocationContext().getSession();Useruser=(User)session.get("login");if(user==null){//终止执行,返回登录页面returnAction.LOGIN;}else{//继续执行剩余的拦截器和Actionreturninvocation.invoke();}}}

17判断用户是否登录2-2在配置文件中定义拦截器并引用它18/42…因为包含在默认拦截器内,所以Action中无需再引用权限拦截器演示示例5-6:实现权限控制

18学员操作—实现用户权限的访问控制需求说明:对租房网用户添加权限控制非登录用户不能访问信息管理页面编写拦截器,继承AbstractInterceptor类在struts.xml中配置拦截器在Action的配置中引用拦截器19/42完成时间:25分钟练习提示

19共性问题集中讲解常见问题及解决办法代码规范问题调试技巧20/42共性问题集中讲解

20文件上传Commons-FileUpload组件Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目Commons-FileUpload组件特点使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能能够全程控制上传内容能够对上传文件的大小、类型进行控制21/42

21环境准备环境要求commons-fileupload-xxx.jarcommons-io-xxx.jar获取方式http://commons.apache.org/fileupload下载Commons-FileUpload组件http://commons.apache.org/io下载Commons-IO组件22/42

22基于Struts2的文件上传3-1实现步骤设置表单提交属性编写文件上传处理Action配置Action23/42

23publicclassUploadActionextendsActionSupport{privateFileupload;privateStringuploadContentType;privateStringuploadFileName;privateStringsavePath;//…省略set和get方法publicStringexecute()throwsException{byte[]buffer=newbyte[1024];FileInputStreamfis=newFileInputStream(getUpload());FileOutputStreamfos=newFileOutputStream(getSavePath()+"\\”+this.getUploadFileName());…..}}基于Struts2的文件上传3-2文件上传Action24/42与表单的属性对应uploadContentType=控件名+ContentTypeuploadFileName=控件名+FileName

24基于Struts2的文件上传3-3配置Action25/42……/upload/upload_success.jsp……以参数方式指定保存路径演示示例7-10:实现文件上传

25多文件上传表单设置多个File控件name属性相同Action的修改将三个属性的类型修改成数组类型26/42//获取提交的多个文件privateFile[]upload;//封装上传文件的类型privateString[]uploadContentType;//封装上传文件名称privateString[]uploadFileName;演示示例11:实现多个文件上传

26学员操作—实现单个文件上传需求说明:在制作个人简历时,允许上传个人图片设置表单属性编写ActionAction属性的命名与File控件的名称要一致配置Action27/42完成时间:25分钟提示练习

27共性问题集中讲解常见问题及解决办法代码规范问题调试技巧28/42共性问题集中讲解

28学员操作—实现多个文件上传需求说明:模仿教学示例,实现多个文件的上传功能将File控件设置相同名称Action的属性设置为数组类型使用循环实现文件上传29/42练习提示完成时间:15分钟

29共性问题集中讲解常见问题及解决办法代码规范问题调试技巧30/42共性问题集中讲解

30stream结果类型stream结果类型将文件数据(通过InputStream获取)直接写入响应流相关参数的配置31/42名称作用contentType设置发送到浏览器的MIME类型contentLength设置文件的大小contentDisposition设置响应的HTTP头信息中的Content-Disposition参数的值inputName指定Action中提供的inputStream类型的属性名称bufferSize设置读取和下载文件时的缓冲区大小

31contentType类型设置指定文件下载的类型32/42文件类型类型设置Wordapplication/mswordExcelapplication/vnd.ms-excelPPTapplication/vnd.ms-powerpoint图片image/gif,image/bmp,image/jpeg文本文件text/plainhtml网页text/html任意二进制数据application/octet-stream

32文件下载3-1图片中的下载效果该如何实现实现步骤编写下载文件Action获取InputStream输入流配置Action指定下载文件的类型、下载形式等33/42问题分析

33文件下载3-2Action的编写34/42publicclassFileDownActionextendsActionSupport{//读取下载文件的目录privateStringinputPath;//下载文件的文件名privateStringfileName;//下载文件的类型privateStringconetntType;//创建InputStream输入流publicInputStreamgetInputStream()throwsFileNotFoundException{Stringpath=ServletActionContext.getServletContext().getRealPath(inputPath);returnnewBufferedInputStream(newFileInputStream(path+"\\"+fileName));}}以流的方式读取文件

34文件下载3-3配置Action35/42……/uploadapplication/octet-streaminputStreamattachment;filename="${fileName}"4096……指定类型为stream通用设置Attachement表示以附件形式下载Filename表示下载时显示的文件名称演示示例12-14:文件下载

35学员操作—实现文件的下载需求说明:模仿教学示例,实现将简历中上传的图片下载到本地保存在Action中获取InputStream输入流在配置文件中设置stream结果类型指定contentType参数指定inputName参数指定contentDisposition参数36/42完成时间:25分钟提示练习

36共性问题集中讲解常见问题及解决办法代码规范问题调试技巧37/42共性问题集中讲解

37总结3-1拦截器了解Struts2核心接口和类ActionMapperActionMappingActionProxyActionInvocationInterceptor拦截器工作原理递归拦截器栈(多个拦截器)38/42

38总结3-2拦截器内置拦截器Struts2自带的关键拦截器params拦截器servletConfig拦截器fileUpload拦截器exception拦截器validation拦截器workflow拦截器默认拦截器栈:defaultStack典型应用:文件上传commons-fileupload-x.x.x..jarcommons-io-x.x.x..jar39/42

39总结3-3拦截器自定义拦截器编写拦截器类实现Interceptor继承AbstractInterceptor配置拦截器:struts.xmlAction引用拦截器40/42

40问题及作业集中问题&课后作业41/42

41扫我有更多精彩课程呦

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭