SpringBoot 基础拦截器

所有的开发之中拦截器一定是一个必须要使用的功能,利用拦截器可以更加有效的实现数据的验证处理

在SpringBoot之中所使用的拦截器与Spring中的拦截器完全一样.

2.1、基础拦截器操作

拦截器是一种AOP操作实现,那么在AOP之中用户一定不需要去关注拦截器的存在,用户只需要按照自己习惯的方式

进行代码的编写即可。

1、创建一个程序的控制器类:

package com.microboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.microboot.util.controller.AbstractBaseController;
import com.microboot.vo.Member;

@Controller
public class MemberController extends AbstractBaseController{
	
	@RequestMapping(value = "/member_add_pre", method = RequestMethod.GET)
	public String memberAddPre(Model model) {
		return "member_add";
	}
	
	@RequestMapping(value = "/member_add", method = RequestMethod.POST)
	@ResponseBody
	public Object memberAdd(Member member) {
		return member;
	}
	
}
2、定义一个member_add.html的页面实现表单定义:

member_add.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<title>SpringBoot模板渲染</title>
	<link rel="icon" type="image/x-icon" href="/images/favicon.ico" />
	<meta http-equiv="Content-Type" content="text/html;charse=UTF-8">
</head>
<body>
	<form th:action="@{/member_add}" method="post">
		用户编号:<input type="text" name="mid" value="101"/><br/>
		用户姓名:<input type="text" name="name" value="SMITH"/><br/>
		<input type="submit" value="提交" />
		<input type="reset" value="重置" />
	</form>
</body>
</html>
3、此时一个正常的MVC的代码就实现完成了,随后就需要编写一个拦截器对其进行控制.

为了更好的说明问题,现在将拦截器定义

package com.microboot.util;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class MyInterceptor implements HandlerInterceptor {
	
	private Logger log = LoggerFactory.getLogger(MyInterceptor.class);
	
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, 
Object handler) throws Exception {
		HandlerMethod handlerMethod = (HandlerMethod)handler;
		this.log.info("【*** MyInterceptor.preHandle ***】" 
+ handlerMethod.getBean().getClass().getSimpleName());
		// 如果返回false表示不继续请求,如果返回true表示继续请求
		return true;
	}


	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, 
Object handler, ModelAndView modelAndView)
			throws Exception {
		HandlerMethod handlerMethod = (HandlerMethod)handler;
		this.log.info("【*** MyInterceptor.postHandle ***】" 
+ handlerMethod.getBean().getClass().getSimpleName());
		this.log.info("【*** MyInterceptor.postHandle ***】" + modelAndView);
	}

	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, 
Object handler, Exception arg3)
			throws Exception {
		HandlerMethod handlerMethod = (HandlerMethod)handler;
		this.log.info("【*** MyInterceptor.afterCompletion ***】拦截处理完毕");
	}

}
4、那么此时如果要想使用拦截器则必须有一个拦截器的配置类。现在我们已经不再编写配置文件了,所有的配置

都使用一个类完成。

package com.microboot.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import com.microboot.util.MyInterceptor;

@Configuration
// 定义MVC的配置
public class MyWebApplicationConfig extends WebMvcConfigurerAdapter {

	@Override
	// 进行拦截器的注册处理操作
	public void addInterceptors(InterceptorRegistry registry) {
		// 匹配路径
		registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
		super.addInterceptors(registry);
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值