java简单的过滤器实现;

it2022-07-04  124

在学习Java的时候,我们会讲到的一个东西,名字叫做过滤器。顾名思义,过滤器,就是我们用来过滤的,那过滤什么呢?这是一个问题。

1)“登录过滤器”就是为了防止在用户没有登录的情况下来访问我们的网站。

2)举例:main.html 这个网页是需要通过login.html这个网页登录后才可以访问的,现在有一个用户没有登录,直接访问main.html成功了。那么,这样的网站是不是觉得不安全呢?用户不用登录随随便便就访问了。so,we have to need a filter.我们需要用过滤器来过滤一些需要登录后才可以访问的页面.

 我们要怎么过滤呢?

1)首先,我们肯定要过滤掉需要登录的页面

2)我们拿到了需要登录的页面后,我们怎么判断用户有没有登录呢?所以,这个时候,我们就需要一个session了。

3)已session为依据,来判断用户是不是登录过了。登录过了我们就让他继续访问,没有登录的我们就让他返回到登录界面。

下面我们来看看代码是如何实现的:

package com.haojieli.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginFilter implements Filter{ public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletRequest req = (HttpServletRequest)arg0; HttpServletResponse resp =(HttpServletResponse) arg1; HttpSession session = req.getSession(); // 获得用户请求的URI String path = req.getRequestURI(); // 从session取得已经登录验证的凭证 我这里的demo用的是password来作为登录凭证 String password = (String) session.getAttribute("password"); // login.jsp页面无需过滤(根据自己项目的要求来)

   //也可以path.contains("login.jsp") 反正怎么精确怎么来就不多说了 if(path.indexOf("/login.jsp") > -1) {//注意:登录页面千万不能过滤 不然过滤器就。。。。。自行调试不要偷懒!这样记忆深刻 arg2.doFilter(req, resp); return; } else {//如果不是login.jsp进行过滤   if (password == null || "".equals(password)) {   // 跳转到登陆页面   resp.sendRedirect("login.jsp"); } else { // 已经登陆,继续此次请求 arg2.doFilter(req, resp); } } } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub }}

在这里就不用解释代码了,代码中有详细的注释,但是重要的一点 我们过滤器是写好了 ,还需要配置啊,不然怎么运行呢?followe me。

将过滤器配置到web.xml里面

<filter> <filter-name>Login</filter-name> <filter-class>com.haojieli.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>adminLogin</filter-name>

<!--这里的/admin/* 表示是指定路径下的文件需要过滤 也可以写为 <url-pattern>/*</url-pattern> 表示所有文件都需要过滤--> <url-pattern>/admin/*</url-pattern> </filter-mapping>

注意:登录页面不能过滤。。。自行调试不要偷懒!这样记忆深刻......

 

博文到此结束,感谢您的观看,希望对各位读者有所帮助,如果有什么意见以及建议请在评论留言......

转载于:https://www.cnblogs.com/hljj/p/7109442.html

相关资源:JAVA过滤器及原理

最新回复(0)