springboot的监听器,拦截器与过滤器

本文介绍了Springboot中用于处理请求的三大组件:监听器、拦截器和过滤器。详细讲解了它们的使用方式,包括过滤器对请求的处理,session监听的实现,拦截器的配置,以及Druid数据源的拦截器设置。
摘要由CSDN通过智能技术生成

其实springboot的拦截器,监听器,过滤器等等这些,跟spring都是一样的,只需要继承接口跟添加注解就可以了

1.过滤器

package com.gpf.servlet;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

/**
 * 过滤器
 * @author 郭鹏飞
 *
 */
@WebFilter(filterName="myFilter",urlPatterns="/*")
public class MyFilter implements Filter{

	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		System.out.println(sdf.format(new Date())+"   初始化过滤器");
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		System.out.println(sdf.format(new Date())+"   执行过滤器");
		chain.doFilter(request, response);
	}

	@Override
	public void destroy() {
		System.out.println(sdf.format(new Date())+"   注销过滤器");
		
	}

}

2.session的监听

package com.gpf.servlet;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * 监听器
 * @author 郭鹏飞
 *
 */
@WebListener
public class MyHttpSessionListener implements HttpSessionListener{

	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
	
	@Override
	public void sessionCreated(HttpSessionEvent se) {
		System.out.println(sdf.format(new Date())+" session被创建");
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		System.out.println(sdf.format(new Date())+" session被销毁");
	}

}

3.拦截器

package com.gpf.servlet;

import java.text.SimpleDateFormat;
import java.util.Date;

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

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

/**
 * 拦截器
 * @author 郭鹏飞
 *
 */
public class MyInterceptor implements HandlerInterceptor{

	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
	
	/*
	 * 在请求之前调用<p>
	 * 返回true表示执行该次请求,返回false表示不执行该次请求
	 * @see org.springframework.web.servlet.HandlerInterceptor#preHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println(sdf.format(new Date())+"  :  在请求之前调用");
		return true;
	}

	/*
	 * 请求处理之后视图渲染之前使用
	 * @see org.springframework.web.servlet.HandlerInterceptor#postHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.web.servlet.ModelAndView)
	 */
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println(MyInterceptor.class.getName()+" :请求处理之后视图渲染之前使用");
		
	}

	/*
	 * 请求视图渲染之后使用
	 * @see org.springframework.web.servlet.HandlerInterceptor#afterCompletion(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, java.lang.Exception)
	 */
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println(MyInterceptor.class.getName()+" :请求视图渲染之后使用");
		
	}

}

4.过滤器

package com.gpf.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 过滤器
 * 
 * @author 郭鹏飞
 *
 */
@SuppressWarnings("serial")
@WebServlet(urlPatterns = "")
public class MyServlet extends HttpServlet {

	@Override
	public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("------------doget-------------");
        doPost(req, resp);
	}

	@Override
	public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("------------------doPost------------------");
	}
}

5.druid的视图请求配置
package com.gpf.servlet;

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

import com.alibaba.druid.support.http.StatViewServlet;

@SuppressWarnings("serial")
@WebServlet(urlPatterns = "/druid/*",
initParams = {
//      @WebInitParam(name = "allow", value = "192.168.16.110,127.0.0.1"), // IP白名单 (没有配置或者为空,则允许所有访问)
//      @WebInitParam(name="deny",value="192.168.16.111"), // IP黑名单 (存在共同时,deny优先于allow)
        @WebInitParam(name="loginUsername",value="druid"),// 用户名
        @WebInitParam(name="loginPassword",value="druid"),// 密码
        @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能
}
)
public class DruidStatViewServlet extends StatViewServlet{

}
package com.gpf.servlet;


import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;


import com.alibaba.druid.support.http.WebStatFilter;


@WebFilter(filterName = "druidStatFilter", urlPatterns = "/*", initParams = {
@WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
})
public class DruidStatFilter extends WebStatFilter {


}

6.Druid的拦截器配置

package com.gpf.servlet;

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;

import com.alibaba.druid.support.http.WebStatFilter;

@WebFilter(filterName = "druidStatFilter", urlPatterns = "/*", initParams = {
		@WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
})
public class DruidStatFilter extends WebStatFilter {

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值