黑马程序员_JAVA 学习笔记25 WEB篇12

发布时间:2016-12-8 4:16:09 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"黑马程序员_JAVA 学习笔记25 WEB篇12",主要涉及到黑马程序员_JAVA 学习笔记25 WEB篇12方面的内容,对于黑马程序员_JAVA 学习笔记25 WEB篇12感兴趣的同学可以参考一下。

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net 下面是一个过滤器: public class Fileter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,  ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse resp = (HttpServletResponse)response; HttpSession session = req.getSession(); String url = req.getRequestURI(); //注意,此处调用完doFilter之后一定要加上return不然下面会发生重 定向错误。 if(url.endsWith("fileter/login.jsp") || url.endsWith ("loginChecked")) { chain.doFilter(req, resp); return; } if(session.getAttribute("user") != null) { chain.doFilter(req, resp); } else { //特别注意,此处不要加fileter的文件夹名,不然浏览器地 址会多一个fileter。 //此处就不需要在重定向后加上请求参数了,因为 loginChecked已经完成了这份工作了。 //resp.sendRedirect("login.jsp? username="+req.getParameter("username")+"&radio="+req.getParameter("radio")); resp.sendRedirect("login.jsp"); return; } } @Override public void init(FilterConfig filterConfig) throws ServletException { } } 上面有两个要注意的两个点。 下面是成功页面,和没有过滤器的成功页面有什么区别呢?   <body>     checked<br>         <%    String radio = (String)session.getAttribute("radio");       if(radio.equals("1"))   {   out.println("有");   }   %>   </body> 这是过滤器的配置文件: <filter>     <filter-name>login</filter-name>     <filter-class>Fileter.Fileter</filter-class>     </filter>          <filter-mapping>     <filter-name>login</filter-name>     <url-pattern>/*</url-pattern>    </filter-mapping>        *表示检测所有页面。    下面是用过滤器替换掉其中的一些字: public class MinGanFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,  ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse resp = (HttpServletResponse)response; String text = req.getParameter("textarea"); System.out.println(text); String te = text.replace("zhang", "li"); req.setAttribute("textarea", te); chain.doFilter(req, resp); } @Override public void init(FilterConfig filterConfig) throws ServletException { } }            过滤器如果只过滤一个只需要写要过滤的就行了,不要写*否则影响效率。    下面是双filter的例子: <body>     <form action = "filtershuan">     <input type = "textarea" name = "textarea">     <input type = "submit" value = "dengLu">        </form>     @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,  ServletException { System.out.println("before"); chain.doFilter(request, response); System.out.println("after");     } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,  ServletException { // TODO Auto-generated method stub System.out.println("before1"); chain.doFilter(request, response); System.out.println("after1");     }     <filter>      <filter-name>filter1</filter-name>      <filter-class>Fileter.filter1</filter-class>      </filter>            <filter>       <filter-name>filter2</filter-name>       <filter-class>Fileter.filter2</filter-class>      </filter>            <filter-mapping>       <filter-name>filter1</filter-name>       <url-pattern>/filtershuan</url-pattern>      </filter-mapping>       <filter-mapping>       <filter-name>filter2</filter-name>       <url-pattern>/filtershuan</url-pattern>         </filter-mapping>    结果: before before1 after1    after        这样的结果不是由哪个filter先写的造成的而是根据xml中filter的先后顺序造成 的。

上一篇:使用ZXing的二维码扫描和生成问题记录
下一篇:让Mac轻松访问Windows网络共享

相关文章

相关评论