使用spring中的拦截器Interceptors防止用户通过url发送请求

本文介绍了如何在Spring框架中利用Interceptor接口实现请求拦截,以防止用户未经登录直接通过URL访问功能页面。主要步骤包括创建实现HandlerInterceptor的Interceptor类,在preHandle方法中进行登录状态检查,以及在springmvc.xml配置文件中设置拦截规则,排除登录、注册等特定请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在java开发中我们用的比较多的是spring框架,spring中有一个接口可以实现请求拦截功能,可以用于防止用户在未登录的情况下通过url进入到我们的功能页面,下面是实现步骤以及代码:

1.创建一个Interceptors类实现HandlerInterceptor这个接口,用里面的方法完成拦截功能的操作,这里面有三个方法,我们通常是在 preHandle 这个方法进行拦截操作,也就是请求之前进行拦截判断,我们可以在这里得到session中的用户这个对象来判断是否有值代表有没有登录,选择拦截下来跳转到登录页面还是选择放行:

package com.interceptors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
 * 拦截器
 */
public class Interceptors implements HandlerInterceptor{
	/**
	 * 一般是在请求之前过滤
	 * 返回的是请求结果
	 * false不通过,true是通过
	 */
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		System.out.println("请求之前拦截");
		System.out.println("这里可以接受请求路径:"+arg0.getServletPath());
		System.out.println("方法对象:"+arg2);
		//这里可以获取session中的对象查看是否有值来判断有没有登录
		Object user = arg0.getSession().getAttribute("user");
		if(user==null){
			//user没有值说明没有登录,就把请求拦截下来跳转到登录页面
			arg1.sendRedirect("/tologin");
			return false;
		}
		return true;
	}
	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {
		System.out.println("方法结束之后");
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)throws Exception {
		System.out.println("方法调用之后");
	}
}

2.除了要写上面的拦截方法外还需要在springmvc.xml中添加这个拦截方法的映射以及不需要过滤的内容,添加下面的标签,mvc:mapping可以过滤所有的请求,如果有不需要过滤的请求比如说打开登录页面,注册页面等,和css样式文件的引用,这些请求就可以使用 mvc:exclude-mapping 标签,就不会被拦截,bean中配置的是拦截方法的文件路径:

<!-- spring拦截器 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- 需要拦截的请求 /**代表拦截所有请求 -->
			<mvc:mapping path="/**"/> 
			<mvc:exclude-mapping path="/css/**"/>
			<mvc:exclude-mapping path="/fonts/**"/>
			<mvc:exclude-mapping path="/img/**"/>
			<mvc:exclude-mapping path="/js/**"/>
			<bean class="con.interceptors.Interceptors"></bean>
		</mvc:interceptor>
	</mvc:interceptors>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值