java之web开发过滤器
Posted 桔子桑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java之web开发过滤器相关的知识,希望对你有一定的参考价值。
我们通常上网的时候都会遇到一个问题,看到一个视频之类的,想要点开观看,点击之后,网页
提醒你:您尚未登录,是否要登录?然后巴拉巴拉跑去输账号密码。
那么这就是一个过滤器的功能,当你要访问一个资源的时候(通常理解为链接),服务器会进行
分析,当前的访问者是否符合一定条件(通常就是检测一下是不是会员,是否已经登录),符合
条件的话,服务器会跳转到指定链接,不满足的话也会友情提醒:您不是会员,您尚未登录等等。
如何实现呢,还是以用户登录为例子吧,看下面~~~
1.三个页面
登录页面,登录成功页面,登录失败页面
login.jsp---loginsuccess.jsp---loginwrong.jsp
2.实现Filter接口的类
这个java文件实现了Filter接口,并且设定了规则,并且还有配置文件
1 public void doFilter(ServletRequest arg0, ServletResponse arg1, 2 FilterChain arg2) throws IOException, ServletException { 3 HttpServletRequest request = (HttpServletRequest) arg0; 4 HttpServletResponse response = (HttpServletResponse) arg1; 5 request.setCharacterEncoding("utf-8");// 设置请求编码 6 response.setCharacterEncoding("utf-8");// 设置响应编码 7 HttpSession session = request.getSession();//session对象,用于存储表单数据 8 String username = request.getParameter("username"); 9 String password = request.getParameter("password"); 10 session.setAttribute("username", username); 11 session.setAttribute("password", password); 12 System.out.println("密码:" + password); 13 System.out.println("账号:" + session.getAttribute("username")); 14 if (username != null && password != null) { 15 if (username.equals("admin") && password.equals("admin")) { 16 arg2.doFilter(arg0, arg1);// 满足条件放行,跳转到表单想要到达的页面loginsuccess.jsp 17 } else { 18 request.getRequestDispatcher("loginwrong.jsp").forward(request, 19 arg1);// 不满足条件,转到loginwrong页面 20 } 21 } 22 }
配置文件规定了此规则适用于客户端对哪个页面访问时,调用规则
1 <filter> 2 <filter-name>logfilter</filter-name> 3 <filter-class>Filter.Servletfilter</filter-class> 4 </filter> 5 <filter-mapping> 6 <filter-name>logfilter</filter-name> 7 <url-pattern>/loginsuccess.jsp</url-pattern> 8 </filter-mapping>
filter-name自定义,不过规则与适用的页面要一一对应,过滤规则类文件要包名+文件名形式书写,
这个文件的意思就是说,当用用户要访问loginsuccess.jsp页面时,过滤器Servletfilter进行拦截,然后
结合规则来看,如果用户的用户名和密码都是admin的话,服务器直接跳转到loginsuccess.jsp页面,
账号和密码不对的话,服务器跳转到loginwrong.jsp页面。
注意:用户提交表单,发送请求之后,请求被过滤器拦截,此时要设置请求和响应的字符编码,防止
后面用到数据的时候造成输出乱码。设置方法在过滤器源码已经用红字标出。
以上是关于java之web开发过滤器的主要内容,如果未能解决你的问题,请参考以下文章