springMVC_day07_拦截器

什么是拦截器

Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理

应用场景

在Controller方法执行前执行

校验用户是否登录,校验用户权限

在执行Controller方法之后返回页面之前执行的

获取页面中公共信息的:页面中的公共天气预报,日期

在返回页面之后执行的

记录用户行为,为后期大数据分析用的;写入用户日志

步骤

编写自定义拦截器

package com.itheima.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class HandlerInterceptor1 implements HandlerInterceptor {

	/**
	 * 返回页面之后执行的
	 */
	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.err.println("===========HandlerInterceptor1==================afterCompletion=============");
	}

	/**
	 * 在执行Controller方法之后返回页面之前执行的
	 */
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		System.err.println("===========HandlerInterceptor1==================postHandle=============");
	}

	/**
	 * 在执行Controller方法之前执行的
	 * 返回
	 * true:放行
	 * false: 不能执行Controller
	 */
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		System.err.println("===========HandlerInterceptor1==================preHandle=============");
		return true;
	}

}

springmvc的配置文件中配置拦截器

	<!-- 配置拦截器 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- 所有的请求都进入拦截器 -->
			<mvc:mapping path="/**"/>
			<!-- 配置具体的拦截器 -->
			<bean class="com.itheima.interceptor.HandlerInterceptor1"></bean>
		</mvc:interceptor>
	</mvc:interceptors>

 案例

  1. 有一个登录页面,需要写一个Controller访问登录页面
  2. 登录页面有一提交表单的动作。需要在Controller中处理。
    1. 判断用户名密码是否正确(在控制台打印)
    2. 如果正确,向session中写入用户信息(写入用户名username)
    3. 跳转到商品列表
  3. 拦截器
    1. 拦截用户请求,判断用户是否登录(登录请求不能拦截)
    2. 如果用户已经登录。放行
    3. 如果用户未登录,跳转到登录页面。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值