02-Struts-2.x(二)(拦截器)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Version1.0周甫(zoofchow@hotmail.com)Struts2.x(二)拦截器PDF文件使用pdfFactoryPro试用版本创建周甫(zoofchow@hotmail.com)2课程介绍••本课程主要讲授本课程主要讲授Struts2.xStruts2.x拦截器拦截器知识知识••适用于适用于JavaJava开发工程师开发工程师••面向的学员是面向的学员是对对ServletServlet,,JSPJSP有基本了有基本了解的解的J2EEJ2EE开发工程师开发工程师••全部课程时间大约是全部课程时间大约是4040分钟分钟PDF文件使用pdfFactoryPro试用版本创建周甫(zoofchow@hotmail.com)3概要•什么是拦截器和拦截器链•拦截器在Struts2框架中的作用•编写简单的拦截器•了解Struts2内置拦截器及拦截器链PDF文件使用pdfFactoryPro试用版本创建什么是拦截器•拦截器,在AOP(Aspect-OrientedProgramming面向切面编程)中用于某个方法或者字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AOP的一种实现策略.•在Struts2中解释为-拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个Action执行的前后执行的代码,也可以在一个action执行前被中止.同时也是提供了一种可以提取action中可重用部份的方式.•Interceptor是Struts2的一个强有力工具,有许多功能(feature)都是构建于它之上,如国际化,转换器,校验等.周甫(zoofchow@hotmail.com)4PDF文件使用pdfFactoryPro试用版本创建拦截器:DomainAOP•首先初始化Action代理对象和Action对象•依次执行各个拦截器•返回逻辑视图•可添加用户自定义拦截器周甫(zoofchow@hotmail.com)5PDF文件使用pdfFactoryPro试用版本创建拦截器时序图周甫(zoofchow@hotmail.com)6PDF文件使用pdfFactoryPro试用版本创建拦截器链•拦截器链(InterceptorChain)或称为拦截器栈(InterceptorStack).拦截器链就是角年个拦截器按一定的顺序结成一条链.在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用.周甫(zoofchow@hotmail.com)7PDF文件使用pdfFactoryPro试用版本创建周甫(zoofchow@hotmail.com)8PDF文件使用pdfFactoryPro试用版本创建{voiddestory();voidinit();Stringintercept(ActionInvocationinvocation)throwsException;}周甫(zoofchow@hotmail.com)9PDF文件使用pdfFactoryPro试用版本创建•xwork-2.0.4.jar/com.opensymphony.xwork2周甫(zoofchow@hotmail.com)10PDF文件使用pdfFactoryPro试用版本创建•xwork-2.0.4.jar/com.opensymphony.xwork2周甫(zoofchow@hotmail.com)11PDF文件使用pdfFactoryPro试用版本创建开发拦截器:显示被执行的Action名称packagedemo.struts2.interceptor;importcom.opensymphony.xwork2.ActionInvocation;importcom.opensymphony.xwork2.interceptor.Interceptor;publicclassShowActionNameInterceptorimplementsInterceptor{……..//其他方法,略publicStringintercept(ActionInvocationinvocation)throwsException{System.out.println(Actionnameis:+invocation.getProxy().getActionName());returninvocation.invoke();}}周甫(zoofchow@hotmail.com)12PDF文件使用pdfFactoryPro试用版本创建配置拦截器(struts.xml)interceptorsinterceptorname=showActionNameclass=demo.interceptor.ShowActionNameInterceptor//interceptorsactionname=loginclass=demo.action.LoginActioninterceptor-refname=showActionName/resultname=succ/login_succ.jsp/resultresultname=input/login.jsp/result/action周甫(zoofchow@hotmail.com)13PDF文件使用pdfFactoryPro试用版本创建!周甫(zoofchow@hotmail.com)14PDF文件使用pdfFactoryPro试用版本创建=“timer”class=“..”/interceptorname=“logger”class=“..”/interceptor-stackname=“myStack”inteceptor-refname=“timer”/inteceptor-refname=“logger”/interceptor-stack//interceptorsactionname=“…”class=“…….”interceptor-refname=“myStack”/result…………//action周甫(zoofchow@hotmail.com)15PDF文件使用pdfFactoryPro试用版本创建带参数的拦截器•方式1actionname=“…”class=“….”interceptor-refname=“validation”paramname=“excludeMethods”myValidationExcludeMehtods/parminterceptor-ref……/action•方式2actionname=“…”class=“….”interceptor-refname=“defaultStack”paramname=“validation.excludeMethods”myValidationExcludeMehtods/parminterceptor-ref!—之前定义了一个默认拦截链à……/action周甫(zoofchow@hotmail.com)16PDF文件使用pdfFactoryPro试用版本创建默认拦截器链•每个package均可设置自己的默认拦截器链–default-interceptor-refname=“defalutStack”/•单个action也可以定义自己的拦截器引用actionname=“….”class=“….”result……./interceptor-refname=“……….”//action周甫(zoofchow@hotmail.com)17PDF文件使用pdfFactoryPro试用版本创建内置拦截器•Struts内置各种功能齐全的拦截器实现并作为默认拦截器配置.可以在struts2-core-2.1.6.jar和xwork-x.x.x.jar的struts-default.xml查看,其常用的有:周甫(zoofchow@hotmail.com)18Validation验证输入是否正确PropertyPopulation将输入表单参数转换并传递给对象Logging对每个Action进行日志记录Profiling计算action执行时的消耗,以便查找瓶颈问题Upload文件上传PDF文件使用pdfFactoryPro试用版本创建文件上传拦截器(重点)1.读取表单参数并设置文件名参数(一拖三)if(acceptFile(files[index],contentType[index],inputName,validation,ac,getLocale())){parameters.put(inputName,files);parameters.put(inputName+“ContentType”,contentType);parameters.put(inputName+“FileName”,fileName);2.执行actionStringresult=invocation.invoke();3.删除临时文件for(intindex=0;indexfile.length;index++){FilecurrentFile=file[index];if((currentFile!=null)&¤tFile.isFile()){currentFile.delete();……………………..周甫(zoofchow@hotmail.com)19PDF文件使用pdfFactoryPro试用版本创建常见问题•自定义拦截器覆盖默认拦截器interceptorname=“….”/……Action提交后发现表单参数获取不到,解决方法将Struts2默认拦截器加入即可:action….interceptorname=“defaultStack”/!—第一列àinteceptorname=“其他拦截器..”/……………..周甫(zoofchow@hotmail.com)20PDF文件使用pdfFactoryPro试用版本创建思考与练习•请说出Struts2表单参数填充的原理?•练习:publicinterfaceLoginedUserAware{voidsetLoginedUser(Useruser);}编写一个拦截器,实现以下功能:当Action实现上述接口,可以自动接收到登录用户变量,例如:publicclassUserLoginActionimplementsLoginedUserAware{privateUserloginedUser;publicvoidsetLoginedUser(Useruser){this.loginedUser=user;…………………….周甫(zoofchow@hotmail.com)2

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功