设为首页 加入收藏

TOP

Spring MVC中登录过滤器使用(一)
2018-08-16 09:31:26 】 浏览:204
Tags:Spring MVC 登录 过滤器 使用

前言


一般的JavaWeb项目中我们肯定会使用过滤器来实现对一些请求的过滤,通过过滤来实现对一些请求参数的设置和校验,比如我们比较熟悉的CharacterEncodingFilter就是一个字符编码的过滤器,小编今天就filter实现拦截登录的过程做一个简单的演示。


预期效果


一般当我们访问某个页面时,如果没有登录,则需要跳转到登录页面,登陆后在跳转到主页面。


实现代码


主要通过实现Servlet的Filter接口即可,主要代码如下,其中为了防止静态资源、登录页面、登录请求被过滤拦截,可将对应的请求排除掉(具体见代码标红部分)


package com.yongcheng.liuyang.filter;


import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


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;


import org.springframework.util.StringUtils;


/**
 * 用户登录过滤器
 *
 *
 *
 * @author Administrator
 *
 */
public class UserLoginFilter implements Filter
{


    private static List<String> urls = Arrays.asList(new String[]{"js/","images/","jsp/","/doLogin","/login"});
   
    @Override
    public void destroy()
    {
       
    }


    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
                        FilterChain chain)
            throws IOException, ServletException
    {
        HttpServletRequest req = (HttpServletRequest)servletRequest;
        HttpServletResponse rep = (HttpServletResponse)servletResponse;
        HttpSession session = req.getSession();
       
        //获取当前请求的uri
        String uri = req.getRequestURI();
       
        if (isIegalUrl(uri))
        {
            chain.doFilter(servletRequest, servletResponse);
        }
        else
        {
            //如果当前session中存储了用户信息则直接访问,否则跳转到登录页面
            if (StringUtils.isEmpty(session.getAttribute("user")))
            {
                rep.sendRedirect("login");
            }
            else
            {
                chain.doFilter(servletRequest, servletResponse);
            }
        }
       
    }
       


    @Override
    public void init(FilterConfig arg0) throws ServletException
    {
       
    }


   
    private boolean isIegalUrl(String uri)
    {
        for (String string : urls) {
            //如果当前请求包括这些静态资源文件,则不处理,
    &nbs

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇mybatis的sqlSessionFactory的加.. 下一篇深入理解Java内存与垃圾回收调优

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目