前言

一般的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) {
//如果当前请求包括这些静态资源文件,则不处理,
if (uri.indexOf(string) > -1)
{
return true;
}
} return false;
} }

  上面提到的对静态资源不过滤,当然springmvc中也要设置静态资源的请求不经过DispatcherServlet,此时就需要在spring-mvc.xml中进行设置,小编基本使用默认的配置,如下代码中的<mvc:default-servlet-handler />

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd "> <context:component-scan base-package="com.yongcheng.liuyang.controller">
</context:component-scan>
<context:component-scan base-package="com.yongcheng.liuyang.listener" /> <!-- spring MVC不处理静态资源 -->
<mvc:default-servlet-handler />
<!-- 支持MVC的注解驱动 -->
<mvc:annotation-driven /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver" >
<!-- 自动添加到路径中的前缀 -->
<property name="prefix" value="/jsp/" />
<!-- 自动添加到路径中的后缀 -->
<property name="suffix" value=".jsp" />
</bean> </beans>

       好了,以上就是springmvc中简答的filter使用!如有任何疑问,欢迎留言交流!!

springmvc中登录过滤器使用的更多相关文章

  1. 基于springMVC实现登录过滤器

    此文章是基于 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台 一. 相关文件介绍 1. LoginFilter.java:登录过滤器,保证每次的url访问都对s ...

  2. .NET MVC中登录过滤器拦截的两种方法

    今天给大家介绍两种ASP中过滤器拦截的两种方法. 一种是EF 的HtppModule,另一种则是灵活很多针对MVC的特性类 Attribute 具体什么是特性类可以参考着篇文章:https://www ...

  3. springmvc sessionfilter 登录过滤器

    1.在web.xml中配置 <!-- sessionfilter --> <filter> <filter-name>sessionFilter</filte ...

  4. SpringMVC中的拦截器、过滤器的区别、处理异常

    1. SpringMVC中的拦截器(Interceptor) 1.1. 作用 拦截器是运行在DispatcherServlet之后,在每个Controller之前的,且运行结果可以选择放行或拦截! 除 ...

  5. springMVC中实现用户登录权限验证

    通过上网搜资料显示,使用filter和interceptor都可以实现.不过推荐使用interceptor. 下面就使用Interceptor实现用户登录权限验证功能. 拦截器需要实现Inceptor ...

  6. SpringMVC中的Interceptor拦截器及与Filter区别

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...

  7. JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用

    JavaWeb中监听器+过滤器+拦截器区别.配置和实际应用 1.前沿上一篇文章提到在web.xml中各个元素的执行顺序是这样的,context-param-->listener-->fil ...

  8. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  9. SpringMvc中的数据校验

    SpringMvc中的数据校验 Hibernate校验框架中提供了很多注解的校验,如下: 注解 运行时检查 @AssertFalse 被注解的元素必须为false @AssertTrue 被注解的元素 ...

随机推荐

  1. vue自学入门-2(vue创建项目)

    本人也是刚学习VUE,边找资料,边学习,边给大家分享.1.创建项目 2.启动项目 3.注意上面和下面全部用cnpm

  2. MySQL 之 数据库自动生成ID格式化编号(字符串格式化填充/拼接/时间)

    # 用户账号:1-4位:入职年份:5-6位:入职月份:7-11位:员工入职顺序号 select concat( date_format(now(),'%Y'), date_format(now(),' ...

  3. tcp的连接断开

    tcp的断开连接是需要主机完成四次挥手的过程的,并不是断网了就表示断开连接了.假如双方已经建立起了连接,突然一方断网(比如突然停电,或者网线突然被拔了),对于另一方来讲他并不会知道这个情况,他依然认为 ...

  4. FPN-Feature Pyramid Networks for Object Detection

    FPN-Feature Pyramid Networks for Object Detection 标签(空格分隔): 深度学习 目标检测 这次学习的论文是FPN,是关于解决多尺度问题的一篇论文.记录 ...

  5. XMLHttpRequest: 网络错误 0x2f78,…00002f78

    常在河边走,怎能不湿脚,在web前端开发的过程中总是遇到很多关于IE的故事. 一个get请求,传了一个json对象,包含一串参数,在IE上就出现了这个问题:XMLHttpRequest: 网络错误 0 ...

  6. 推荐系统之矩阵分解及C++实现

    1.引言 矩阵分解(Matrix Factorization, MF)是传统推荐系统最为经典的算法,思想来源于数学中的奇异值分解(SVD), 但是与SVD 还是有些不同,形式就可以看出SVD将原始的评 ...

  7. Linux文件目录类指令

    ⒈pwd 显示当前工作目录的绝对路径 ⒉ls [Options] [目录或文件] 常用选项: -a:显示当前目录下所有的文件和目录,包括隐藏的. -l:以列表的方式显示信息. ⒊cd [目录的绝对路径 ...

  8. Jquery中AJAX参数详细介绍

    Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求方式 ...

  9. C++学习4-面向对象编程基础(面向对象概念,定义类,定义对象)

    什么是面向对象? 在软件的设计过程中的两种方式: 把程序按照算法的执行步骤来拆解,一步步实现,这是面向过程编程: 把程序按照现实世界的理解,分成不同对象,通过多个对象之间的相互作用,来完成程序的最终功 ...

  10. Python 3.x 格式化输出字符串 % & format 笔记

    Python 3.x 格式化输出字符串 % & format 笔记 python格式化字符串有%和{}两种 字符串格式控制符. 字符串输入数据格式类型(%格式操作符号) %%百分号标记 %c字 ...