第八章:基础拦截器-1. 基础拦截器

所有的开发之中拦截器一定是一个必须要使用的功能,利用拦截器可以更加有效的实现数据的验证处理,而且最为幸运的是在springboot之中所使用的拦截器与spring中的拦截器完全一样。

2.1基础拦截器操作

拦截器是一种aop操作实现,那么在aop之中用户一定不需要去关注拦截器的存在,用户只需要按照自己已经习惯的处理方式进行代码的编写即可。

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

package cn.mldn.microboot.controller;

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

import cn.mldn.microboot.util.controller.AbstractBaseController;
import cn.mldn.microboot.vo.Member;

@Controller
public class MemberController extends AbstractBaseController {
	@RequestMapping(value = "/member_add_pre", method = RequestMethod.GET)
	public String memberAddPre() {
		return "member_add";
	}
	@RequestMapping(value = "/member_add", method = RequestMethod.POST)
	@ResponseBody
	public Object memberAdd(Member member) {
		return member ;
	}
}

2.定义一个member_add.html的实现表单定义:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<title>SpringBoot模版渲染</title>
	<meta http-equiv="Content-Type" content="text/html;charset=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="表单提交"/>
	</form>
</body> 
</html>

3.此时一个正常的mvc代码就实现完成了,随后需要编写一个拦截器对其进行控制。

为了更好的说明问题,现在讲拦截器定义在外包中

package cn.mldn.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 request,
			HttpServletResponse response, Object handler) throws Exception {
		HandlerMethod handlerMethod = (HandlerMethod) handler ;
		this.log.info("【*** MyInterceptor.preHandle() ***】" + handlerMethod.getBean().getClass().getSimpleName());
		return true;	// 如果返回false表示不继续请求,如果返回true表示继续请求
	}

	@Override
	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, 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 request,
			HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		this.log.info("【*** MyInterceptor.afterCompletion() ***】拦截处理完毕" );
	}

}

4.那么此时如果要想使用拦截器必须有一个拦截器的配置类。现在不在编写配置文件了,所有的配置直接通过一个类完成

package cn.mldn.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 cn.mldn.util.MyInterceptor;

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

现在只要扎到了可以操作的控制器程序类,那么就可以依照在spring中讲解的拦截器代码那样进行各种验证规则的编写以及相应的错误提示输出。

转载于:https://my.oschina.net/u/3023191/blog/3036356

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值