其实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 {
}