博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springMVC 拦截器 HandlerInterceptor 用法
阅读量:5899 次
发布时间:2019-06-19

本文共 3444 字,大约阅读时间需要 11 分钟。

hot3.png

一、HandlerInterceptor 用法

第一步:注册拦截器

第二步:继承HandlerInterceptor ,实现拦截器

package com.iflashbuy.limanman;import java.util.Iterator;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class ControlInterceptor implements HandlerInterceptor{	private Logger logger  = LoggerFactory.getLogger(getClass());	/**	 * 执行完控制器后调用,即离开时	 */	@Override	public void afterCompletion(HttpServletRequest request,			HttpServletResponse response, Object arg2, Exception arg3)					throws Exception {	}	@Override	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)			throws Exception {		// TODO Auto-generated method stub			}	@Override	public boolean preHandle(HttpServletRequest request, HttpServletResponse arg1, Object arg2) throws Exception {		int i = 1;		try {			@SuppressWarnings("unchecked")			Map
parmMap = request.getParameterMap(); Iterator
iter = parmMap.keySet().iterator(); while (iter.hasNext()) { Object key = iter.next(); Object value = parmMap.get(key); logger.info("第" + i + "个param---->{}-{}", key, value); i = i + 1; } } catch (Exception e) { i = 1; } i = 1; return true; } }

二、后台打印信息效果

三、拓展使用拦截器实现http基本认证

/**	 * 执行完控制器后调用,即离开时	 */	@Override	public void afterCompletion(HttpServletRequest request,			HttpServletResponse response, Object arg2, Exception arg3)			throws Exception {		logger.info("className--->" + arg2);		logger.info("request--->" + request);	}	@Override	public void postHandle(HttpServletRequest request,			HttpServletResponse response, Object arg2, ModelAndView arg3)			throws Exception {	}	@Override	public boolean preHandle(HttpServletRequest request,			HttpServletResponse response, Object arg2) throws Exception {		String sessionAuth = (String) request.getSession().getAttribute("auth");		if (sessionAuth != null) {			System.out.println("this is next step");			nextStep(request, response);		} else {			if (!checkHeaderAuth(request, response)) {				response.setStatus(401);				response.setHeader("Cache-Control", "no-store");				response.setDateHeader("Expires", 0);				response.setHeader("WWW-authenticate", "Basic Realm=\"请输入管理员账号密码\"");				return false;			}		}		return true;	}	private boolean checkHeaderAuth(HttpServletRequest request,			HttpServletResponse response) throws IOException {		String auth = request.getHeader("Authorization");		System.out.println("auth encoded in base64 is " + getFromBASE64(auth));		if ((auth != null) && (auth.length() > 6)) {			auth = auth.substring(6, auth.length());			String decodedAuth = getFromBASE64(auth);			System.out.println("auth decoded from base64 is " + decodedAuth);			request.getSession().setAttribute("auth", decodedAuth);			return true;		} else {			return false;		}	}	private String getFromBASE64(String s) {		if (s == null)			return null;		try {			byte[] encodeBase64 = Base64.encodeBase64(s.getBytes("UTF-8"));			return new String(encodeBase64);		} catch (UnsupportedEncodingException e) {			return null;		}	}	public void nextStep(HttpServletRequest request,			HttpServletResponse response) throws IOException {		System.out.println("you can go to the controller");	}

转载于:https://my.oschina.net/fengshuzi/blog/364397

你可能感兴趣的文章
3GPP一反常态提前制定NB-IoT标准有何深意?
查看>>
泉州电信推进渠道互联网化转型
查看>>
《响应式Web设计:HTML5和CSS3实践指南》——2.5节使用画布旋转文本
查看>>
嵌入式linux的tftp安装配置及tftp命令用法
查看>>
好的软件测试人员简历是什么样子的?
查看>>
《笑傲测试》笔记(第六式:伯仲伊吕)
查看>>
影响云计算核心问题的七个要素
查看>>
PWNFEST黑客大会:苹果Safari与微软Edge浏览器均被攻破
查看>>
Lessons on Prototyping for Early Entrepreneurs and Startups
查看>>
【快讯】在线体验Oracle Database 12.2 SQL新特性
查看>>
DB-Engines:2015年10月份全球数据库排名
查看>>
技术公司做互联网产品的 N 个思维毒瘤
查看>>
《Excel高手捷径:一招鲜,吃遍天》一第9招 文本与数字格式的相互批量转换...
查看>>
每天最多人评论的动弹将获赠开源杯具一个!!!
查看>>
《深入理解Spark:核心思想与源码分析》——2.4节Spark基本架构
查看>>
《Docker技术入门与实战》——第2章 Docker的核心概念和安装
查看>>
Toaster —— AngularJS 的无堵塞消息提醒
查看>>
《BackTrack 5 Cookbook中文版——渗透测试实用技巧荟萃》—第3章3.6节识别操作系统...
查看>>
AMD 开发新 Linux 显卡驱动追赶英伟达
查看>>
《音乐达人秀:Adobe Audition实战200例》——1.5 网络与网站已成为人们获取音乐的最佳途径...
查看>>