本文为博主辛苦总结,但愿本身之后返回来看的时候理解更深入,也但愿能够起到帮助初学者的做用.
转载请注明 出自 : luogg的博客园 谢谢配合!
302 : 页面跳转html
1.统一整个webApp应用的编码方式
2.禁止浏览器缓存webApp动态资源
3.控制浏览器缓存静态资源
4.实现URL权限控制
5.过滤敏感内容web
web-xml中设置 : url-pattern /* 过滤全部页面浏览器
chain.doFilter(request, response);//放行,过滤拦截
缓存
启动服务器的时候建立而且初始化,
访问页面的时候调用doFilter方法,
关闭服务的时候生命结束.服务器
filter对象只会建立一次,init方法只会执行一次,destroy方法也只会执行一次session
1.建立filter,而且配置web-xml
2.将web-xml中
在filter-class下边加入 : 由于通常总的控制页面编码格式是在web-xml修改的
<init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param>
public class EncodingFilter implements Filter { private String encoding = "utf-8"; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //4.在doFilter方法下边,设置页面编码格式还有post请求表单编码格式 request.setCharacterEncoding(encoding);//设置post表单中文乱码 response.setContentType("text/html;charaset="+encoding); chain.doFilter(request, response); } public void init(FilterConfig fConfig) throws ServletException { //3.在Filter页面定义一个`private String encoding = "utf-8";` //在Filter页面,init方法下边 : 调用xml中设置的encoding String en = fConfig.getInitParameter(encoding); if(en != null && !"".equals(encoding)){ encoding = en; } } }
最后在用户登陆界面,用户名输入中文,在控制台测试就行了.测试
清理缓存以后,第一次只能够进去index.html输入用户名密码界面,当输入正确密码以后,进入
主页,可是在此直接输入主页地址,仍是能够直接进来,是由于session还存在,能够获取到session name.字体
public class UrlFilter implements Filter { /** * 用户登陆校验,排除登陆页面和校验页面 */ public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse rep = (HttpServletResponse) response; String uri = req.getRequestURI(); System.out.println(uri); HttpSession session = req.getSession(); Object obj = session.getAttribute("name"); if (uri.endsWith("index.html") || uri.endsWith("CheckUser")) {//uri以xxx结尾 chain.doFilter(request, response); } else { if (obj == null) { rep.sendRedirect("/wx_web_day02/index.html"); } else { chain.doFilter(request, response); } } } public void init(FilterConfig fConfig) throws ServletException { } }
response.sendRedirect("BSessionTest");//重定向使用了两次过滤器
request.getRequestDispatcher("BSessionTest").forward(request, response);//内部转发使用了一次过滤器编码
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String s = request.getParameter("userName"); if(s.indexOf('猪')!=-1){ s = s.replace('猪', '*'); request.setAttribute("userName", s); System.out.println(s); } chain.doFilter(request, response); }