springmvc_day07_拦截器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35537301/article/details/82531361

什么是拦截器

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. 如果用户未登录,跳转到登录页面。

猜你喜欢

转载自blog.csdn.net/qq_35537301/article/details/82531361
今日推荐