zoukankan      html  css  js  c++  java
  • 使用filter进行用户登录

    过滤器(Filter),在web项目中用来验证用户是否登录,想实现登陆过滤,只需完成两个工作,一个是配置文件(web.xml),一个是filter实现类的业务逻辑。部分参考代码如下:

    web.xml代码:

    <filter>
      <filter-name>loginFilter</filter-name>
      <filter-class>com.xxx.xxxc.filter.LoginFilter</filter-class>
      <init-param>
    <param-name>initUrl</param-name>
    <param-value>loginValidate.do</param-value>
    </init-param>
      </filter>
      <filter-mapping>
      <filter-name>loginFilter</filter-name>
      <url-pattern>/page/*</url-pattern>
      </filter-mapping>
      <filter-mapping>
      <filter-name>loginFilter</filter-name>
      <url-pattern>*.do</url-pattern>
      </filter-mapping>

    这里的配置,可以看出以下三点信息:

    (1)初始化了一个变量,名为initUrl,值为loginValidate.do。

    (2)过滤page文件夹下的所有文件(page下只有jsp文件)。

    (3)过滤所有的.do结尾的请求。

    这里还需注意以下几点:

    (1)如果既想过滤jsp又想过滤.do结尾的请求,这里是不可以写在一起的,需向上面那样写两个filter-mapping。

    (2)/page/*.jsp 这种写法是错误的,这里只有/page/*和*.jsp这两种写法。

    (3)上面配置文件中,拦截了所有的.do请求,这样就连验证用户名和密码的请求也会拦截,所以init了一个变量,在filter中将该请求忽略掉。

    (4)登陆页面和首页(不需要过滤的)不要放在page目录下,之前我把login.jsp放在了page下,结果访问时出现了”该页面有多次循环重定向“的提示。是因为你不断访问

    登陆页面,进入filter后,又被不断重定向到登陆页面所致。

    LOGINFilter代码:

    private String requestUrl;
    private String initUrl;
    @Override
    public void init(FilterConfig arg0) throws ServletException {
    initUrl = arg0.getInitParameter("initUrl");
    }
    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) arg0;
    HttpServletResponse response = (HttpServletResponse) arg1;
    HttpSession session = request.getSession();
    User user = (User) session.getAttribute("admin");
    requestUrl = request.getRequestURI();
    String[] reUrl = requestUrl.split("/");

    if(user != null || reUrl[3].equals(initUrl)){
    arg2.doFilter(request, response); 
    }else{
    response.sendRedirect(request.getContextPath()+"/login.jsp");
    }
    }

    以上代码,完成了验证用户是否登陆的工作,如果用户未登陆,会被重定向到登陆页面。

    最后贴上原文:https://blog.csdn.net/u010074019/article/details/42711315

  • 相关阅读:
    格式刷的一小步,原型工具的一大步
    精益设计,敏捷开发,一个都不能少
    慢工出细活,Facebook点赞按钮设计中的门道
    5个范例告诉你什么是自适应网页设计
    用户体验设计5大目标
    poj1251Jungle Roads(最小生成树)
    hdu2222Keywords Search
    hdu2328Corporate Identity
    hdu1238Substrings
    hdu4763Theme Section
  • 原文地址:https://www.cnblogs.com/nictang/p/8649661.html
Copyright © 2011-2022 走看看