java struts2入门学习拦截器学习.docx
- 文档编号:7580848
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:15
- 大小:189.18KB
java struts2入门学习拦截器学习.docx
《java struts2入门学习拦截器学习.docx》由会员分享,可在线阅读,更多相关《java struts2入门学习拦截器学习.docx(15页珍藏版)》请在冰豆网上搜索。
javastruts2入门学习拦截器学习
一、拦截器,拦截器栈
1、拦截器的作用
拦截器本质上和servlet的过滤器是一样的。
在struts2中,拦截器能够对Action前后进行拦截,拦截器是一个可插拨的,你可以选择使用拦截器,也可以卸载拦截器。
2、拦截器执行顺序
在struts.xml文件中,
如果某个拦截器出错或不允许通过,那么下一个拦截器是不允许执行的。
需要拦截哪个Action,就在哪个Action对应的
在部署web应用时,拦截器的空参构造方法和init()方法各执行一次,每次请求时intercept()方法都会执行一次。
3、自定义拦截器
1)声明一个拦截器
注意:
这里interceptors与action标签同级。
其中class对应拦截器的全路径。
name对应拦截器的名称,这个可以自己随便定义,建议与类名相同,此名称要唯一。
2)引用一个拦截器:
--引用自定义的拦截器-->
注意:
如何引用一个拦截器?
即在Action中
这里name名称与自定义的名称要一致。
4、自定义拦截器栈
1)声明一个拦截器栈
interceptor-stack标签中进行配置需要引用的拦截器,如下:
2)引用一个拦截器栈:
--引用自定义的拦截器栈-->
二、需求分析
如图所示,访问upload.jsp进行上传文件--》LoginInterceptor拦截器进行拦截---》
1、未登录,那么跳转页面到登录页面---》进行登录页面--》登录成功---》可以点击返回到上传文件页面;
2、已登录,登录直接开始上传文件。
三、代码分析:
upload.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@tagliburi="/struts-tags"prefix="s"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
formaction="UploadAction"enctype="multipart/form-data"method="POST"> textfieldlabel="上传用户"name="username"/> filelabel="上传文件"name="upload"/> filelabel="上传文件"name="upload"/> <%-- filelabel="上传文件"name="upload"/>--%> submitvalue="提交"/> form> ViewCode upload_success.jsp <%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <%@tagliburi="/struts-tags"prefix="s"%> DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http: //www.w3.org/TR/html4/loose.dtd"> formaction="UploadAction"enctype="multipart/form-data"method="POST"> textfieldlabel="上传用户"name="username"/> filelabel="上传文件"name="upload"/> filelabel="上传文件"name="upload"/> <%-- filelabel="上传文件"name="upload"/>--%> submitvalue="提交"/> form> ViewCode login.jsp <%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <%@tagliburi="/struts-tags"prefix="s"%> DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http: //www.w3.org/TR/html4/loose.dtd"> formaction="LoginAction"method="POST"> textfieldlabel="上传用户"name="username"/> submitvalue="登录"/> form> ViewCode login_success.jsp <%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http: //www.w3.org/TR/html4/loose.dtd"> 登录成功 <%--${pageContext.request.contextPath}--%> ViewCode sturts.xml xmlversion="1.0"encoding="UTF-8"? > DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN" "http: //struts.apache.org/dtds/struts-2.3.dtd"> -- --> --加载其他配置文件--> ViewCode upload-sturts.xml xmlversion="1.0"encoding="UTF-8"? > DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN" "http: //struts.apache.org/dtds/struts-2.3.dtd"> method="loginMethod"> /login_success.jsp /WEB-INF/upload_success.jsp upload.jsp login.jsp --对系统的拦截器进行设置--> --对单个上传文件的大小进行设置,5M--> --对允许的文件扩展名进行设置,这里以英文逗号隔开--> --对允许的文件类型进行设置,这里以英文逗号进行隔开--> --引用自定义的拦截器--> -- --显示引用默认的拦截器--> -- --引用自定义的拦截器栈--> ViewCode LoginAction.java packageinterceptor; importjava.util.Map; importcom.opensymphony.xwork2.ActionContext; importcom.opensymphony.xwork2.ActionSupport; /** *@ClassName: LoginAction *@Description: 用户登录 *@author: amosli *@email: amosli@ *@dateJan17,201412: 11: 35AM */ publicclassLoginActionextendsActionSupport{ privatestaticfinallongserialVersionUID=3514444221760688282L; privateStringusername; publicvoidsetUsername(Stringusername){ this.username=username; } publicStringloginMethod(){ //取得HTPPSession Map session.put("username",username); returnSUCCESS; } } ViewCode LoginInterceptor.java packageinterceptor; importjava.util.Map; importaction.UploadAction; importcom.opensymphony.xwork2.ActionContext; importcom.opensymphony.xwork2.ActionInvocation; importcom.opensymphony.xwork2.interceptor.Interceptor; /** *@ClassName: LoginInterceptor *@Description: 登录拦截器 *@author: amosli *@email: amosli@ *@dateJan17,201411: 42: 54PM */ publicclassLoginInterceptorimplementsInterceptor{ privatestaticfinallongserialVersionUID=8314579656513662711L; publicLoginInterceptor(){ System.out.println("LoginInterceptor(): "+this.hashCode()); } publicvoiddestroy(){ System.out.println("destroy()"); } publicvoidinit(){ System.out.println("init()"); } publicStringintercept(ActionInvocationinvocation)throwsException{ System.out.println("LoginInterceptor"); ////获取此拦截器将要拦截的action //Objectaction=invocation.getAction(); //System.out.println("action: "+action);//action: action.UploadAction@6522cf92 ////获取action的返回值 //StringresultValue=invocation.invoke(); //System.out.println("resultValue: "+resultValue);//resultValue: success //如果拦截器将要拦截的action为UploadAction,那么判断用户是否已经登录 if(invocation.getAction()instanceofUploadAction){ Map if(session.get("username")! =null){//判断用户是否已经登录 //如果返回值为"success"那么将会匹配到配置文件中为result属性为"success"的内容。 //如果返回值为invocation.invoke(),那么将会执行uploadaction方法 returninvocation.invoke(); }else{ return"toLoginJsp"; } } returnnull; } } ViewCode UploadAction.java packageaction; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.InputStream; importjava.io.OutputStream; importcom.opensymphony.xwork2.ActionSupport; /** *@ClassName: UploadAction *@Description: 文件上传 *@author: amosli *@email: amosli@ *@dateJan14,20141: 50: 28AM */ publicclassUploadActionextendsActionSupport{ privatestaticfinallongserialVersionUID=-8920466592471253212L; privateStringusername;//用户名 privateString[]uploadContentType;//上传文件的类型,(Fileupload拦截器传入的参数) privateFile[]upload;//上传的文件,(Fileupload拦截器传入的参数) privateString[]uploadFileName;//上传文件的真实文件名,(Fileupload拦截器传入的参数) privateStringuploadPath; publicvoidsetUploadPath(StringuploadPath){ this.uploadPath=uploadPath; } publicvoidsetUsername(Stringusername){ this.username=username; } publicString[]getUploadContentType(){ returnuploadContentType; } publicvoidsetUploadContentType(String[]uploadContentType){ this.uploadContentType=uploadContentType; } publicFile[]getUpload(){ returnupload; } publicvoidsetUpload(File[]upload){ this.upload=upload; } publicString[]getUploadFileName(){ returnuploadFileName; } publicvoidsetUploadFileName(String[]uploadFileName){ this.uploadFileName=uploadFileName; } publicStringgetUsername(){ returnusername; } publicStringuploadMethod()throwsException{ //ServletContextcontext=ServletAction
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java struts2入门学习拦截器学习 struts2 入门 学习 拦截