dayjavaweb之过滤器课件so easy系列教程_第1页
dayjavaweb之过滤器课件so easy系列教程_第2页
dayjavaweb之过滤器课件so easy系列教程_第3页
dayjavaweb之过滤器课件so easy系列教程_第4页
dayjavaweb之过滤器课件so easy系列教程_第5页
已阅读5页,还剩21页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SoEasy越强大。2000年,SunServlet2.3FilterServlet2.4Filter进行了Servlet2.5Filter。Servlet是服务器端用于处理客户端的请求与响应的,而Filter就是介于客户端与服务器端客ServletServletServletAPIFilterFilterMethodCalledbythewebcontainertoindicatetoafilterthatitisbeingtakenoutofdoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainThedoFiltermethodoftheFilteriscalledbythecontainereachtimearequest/responsepairispassedthroughthechainduetoarequestforaresourceattheendofthechain.init(FilterConfigCalledbythewebcontainertoindicatetoafilterthatitisbeingcedintoJavaFilterpublicpublicclassMyFitlerimplementsFilter*init()方法用于Filterpublicvoidinit(FilterConfigfilterConfig)throws{}publicvoiddoFilter(ServletRequestrequest,ServletResponseFilterChainchainthrowsIOExceptionServletException}publicvoiddestroy()}}Webweb.xml<?<?xmlversion="1.0"encoding="UTF-<web-apph 路径-- 的路径-- WebServletpublicpublicoServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter(); oServlet.</h1>");}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,}}Webweb.xmlServlet<?<?xmlversion="1.0"encoding="UTF-<web-apph >>WebJSPWebServletJSPServletJSP<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01 <metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires" oServletJSPdoFilter()FilterChaindoFilter()方法publicclassMyFitlerimplementsFilterpublicvoidinit(FilterConfigfilterConfig)throws{}publicvoiddoFilter(ServletRequestrequest,ServletResponseFilterChainchainthrowsIOExceptionServletExceptionchain.doFilter(request,response);}publicvoiddestroy()}}Filter的生命周期方法。FilterFilterFilterFilter在每次时执行Filter用于Filter的处理工作FilterFilterJavaFilterpublicpublicclassMyFitler1implementsFilterpublicvoidinit(FilterConfigfilterConfig)throws{}publicvoiddoFilter(ServletRequestrequest,ServletResponseFilterChainchainthrowsIOExceptionServletException}publicvoiddestroy()}}JavaFilterpublicpublicclassMyFilter2implementsFilterpublicvoidinit(FilterConfigfilterConfig)throws{}publicvoiddoFilter(ServletRequestrequest,ServletResponseFilterChainchainthrowsIOExceptionServletException}publicvoiddestroy()}}Webweb.xml<?<?xmlversion="1.0"encoding="UTF-<web-apph 路径-- 的路径-- 发布Web工程并需要注意的是,FilterChain的doFilter()方法执行时,如果只有一个过滤器的话,执行该方将请求发送给服方法时,才会将请求发送给服务器端的动态或静态资源。如果不是在过滤器链的最后一个过滤器的FilterChain的Webweb.xmlMethodReturnsthefilter-nameofthisMethodReturnsthefilter-nameofthisfilterasdefinedinthedeploymentgetInitParameter(StringReturnsaStringcontainingthevalueofthenamedinitializationparameter,ornulliftheparameterdoesnotexist.Returnsthenamesofthefilter'sinitializationparametersasanEnumerationofStringobjects,oranemptyEnumerationifthefilterhasnoinitializationparameters.ReturnsareferencetotheServletContextinwhichthecallerisJavaFilterpublicpublicclassMyFitlerimplementsFilterpublicvoidinit(FilterConfigfilterConfig)throws{}publicvoiddoFilter(ServletRequestrequest,ServletResponseFilterChainchainthrowsIOExceptionServletException}publicvoiddestroy()}}Webweb.xml<?<?xmlversion="1.0"encoding="UTF-<web-apph publicpublicclassMyFitlerimplementsFilterpublicvoidinit(FilterConfigfilterConfig)throws{}publicvoiddoFilter(ServletRequestrequest,ServletResponseFilterChainchainthrowsIOExceptionServletException}publicvoiddestroy()}}需要注意的是,通过ServletContext对象获取。Filter过滤器需要配置在web.xml中才能生效。一个过滤器需要配置<filter>和<filter-map>,例<?<?xmlversion="1.0"encoding="UTF-<web-apph 路径-- 的路径-- <filter>配置过滤器的名称实现类以及初始化参数<filter-map>配置当前过滤器的路径<filter-map>中的<url-pattern>用于配置当前过滤器的路径,配置方式与Servlet的<url-如果需要的是Servlet的话,有两种方式配置路径 可以同时配置多个<dispatcher>,如果没有配置<dispatcher>,默认为REQUEST。这四种取值REQUESTServletFORWARDServletFORWARDServletINCLUDEJSP中可以通过<jsp:include>请求某Servlet或调用RequestDispatcher的ERROR:JSP中可以通过<%@pageerrorPage=”error.jsp”>指定错误处理页面,仅这种情况WebWeb应用程序的中文乱码问题,可JavaHttpServletRequestWrapperHttpServletRequest,解决GET方式的中文乱码问题。publicpublicclassMyRequestextendsHttpServletRequestWrapperpublicMyRequest(HttpServletRequestrequest)}publicStringgetParameter(Stringname){Stringvalue=super.getParameter(name);if(getMethod().equalsIgnoreCase("GET")){tryvalue=newString(value.getBytes("ISO-8859-1"),"utf-}catch(UnsupportedEncodingExceptione){}}return}}WebpublicpublicclassEncodingFilterimplementsFilterpublicvoidinit(FilterConfigfilterConfig)throwspublicvoiddoFilter(ServletRequestrequest,ServletResponseFilterChainchain)throwsIOException,ServletException{MyRequestreq=newMyRequest((HttpServletRequest)request);MyRequestreq=newMyRequest((HttpServletRequest)request);chain.doFilter(req,response);}publicvoiddestroy()}Webweb.xml<?<?xmlversion="1.0"encoding="UTF-<web-apph JSP<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'login.jsp'starting<formid="userinfo"action="encoding"用户名:<inputtype="text:<inputtype="password"<inputtype="submitvalue="登录<a ServletpublicpublicclassEncodingServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringusername=request.getParameter("username");response.getWriter().println("<h1>username:}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,}}Webweb.xml<?<?xmlversion="1.0"encoding="UTF-<web-apph 所谓自动登录就是当用户第一次登录后,并且选择“自动登录”选项,用户从第二次开始,JSP<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'login.jsp'starting<h3style="color:red;">${msg<formid="userinfo"action="login"用户名:<inputtype="text:<inputtype="password"<inputtype="checkboxname="autologinvalue="true">自动登录<inputtype="submitvalue="登录JavaBeanpublicpublicclassUser{privateStringusername;privateStringpublicStringgetUsername()return}publicvoidsetUsername(Stringusername)this.username=}publicStringgetPassword()return}publicvoidsetPassword(Stringpassword)this.password=}}ServletpublicclassLoginServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doPost(request,}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");Useruser=newUser();HttpSessionsession=request.getSession();session.setAttribute("user",user);= .setMaxAge(60*60*24*90); }request.setAttribute("msg","用户名 }}}Webweb.xml<?<?xmlversion="1.0"encoding="UTF-<web-apph JSP<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'index.jsp'starting<c:iftest="${emptyuser<c:iftest="${notemptyuser ,${user.usernamepublicpublicclassAutoLoginFilterimplementsFilterpublicvoidinit(FilterConfigfilterConfig)throwspublicvoiddoFilter(ServletRequestrequest,ServletResponseFilterChainchain)throwsIOException,ServletExceptionHttpServletRequestreq=if(req.getSession().getAttribute("user")!=chain.doFilter(request, = if ==//没有自动登录信息chain.doFilter(requestresponse);Stringusername Stringpassword= if{chain.doFilter(request,Useruser=newUser();req.getSession().setAttribute("user",user);chain.doFilter(request,response);}}}} s,Stringname)if s==null)return}elsefor s)if .getName().equals(name)) }}return}}publicvoiddestroy()}Webweb.xml<?<?xmlversion="1.0"encoding="UTF-<web-apph JavaBean用于封装用户信息(包含权限信息publicpublicclassUser{privateStringusername;privateStringpassword;privateStringrole;publicStringgetRole()return}publicvoidsetRole(Stringrole)this.role=}publicStringgetUsername()return}publicvoidsetUsername(Stringusername)this.username=}publicStringgetPassword()return}publicvoidsetPassword(Stringpassword)this.password=}}Web<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'index.jsp'starting<c:iftest="${emptyuser<c:iftest="${notemptyuser ,${user.username<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'userlist.jsp'starting创建管理员可以的功能列表页面<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'adminlist.jsp'startingpublicclassAuthoFilterimplementsFilterprivateFilterConfigprivateMap<String,String>map=newHashMap<String,publicvoidinit(FilterConfigfilterConfig)throws{this.config=}publicvoiddoFilter(ServletRequestrequest,ServletResponseFilterChainchain)throwsIOException,ServletException{Enumerationnames=config.getInitParameterNames();while(names.hasMoreElements())Stringname=(String)names.nex Stringvalue=config.getInitParameter(name);map.put(value,name);}HttpServletRequestreq=(HttpServletRequest)request;Stringpath=for(StringneedPath:ma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论