博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring boot 实现监听器、过滤器、全局异常处理
阅读量:6215 次
发布时间:2019-06-21

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

Spring boot实现监听器

package com.example.demo.listener.test;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.annotation.WebListener;/** * 使用@WebListener注解,实现ServletContextListener接口 * 在启动器处加注解@ServletComponentScan * @author cxx */@WebListenerpublic class MyServletContextListener implements ServletContextListener{    @Override    public void contextInitialized(ServletContextEvent servletContextEvent) {        System.out.println("ServletContext初始化");        System.out.println(servletContextEvent.getServletContext().getServerInfo());    }    @Override    public void contextDestroyed(ServletContextEvent servletContextEvent) {        System.out.println("ServletContext销毁");    }}package com.example.demo;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.web.servlet.ServletComponentScan;@SpringBootApplication@MapperScan(value = "com.example.demo.mapper")//filter和listener监听器注解需要用的@ServletComponentScanpublic class DemoApplication {	public static void main(String[] args) {		SpringApplication.run(DemoApplication.class, args);	}}复制代码

Spring Boot实现过滤器

第一步:定义MyFilter过滤器

package com.example.demo.filter.test;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import java.io.IOException;/** * 使用注解过滤器 * @WebFilter将一个实现了import javax.servlet.Filter接口的类定义为过滤器 * 属性filterName生命过滤器的名称,可选 * 属性urlPatterns指定要过滤的URL模式,也可使用属性value来声明(指定要过滤的URL是必选属性) */@WebFilter(filterName = "MyFilter",urlPatterns = "/*")public class MyFilter implements Filter{    @Override    public void init(FilterConfig filterConfig) throws ServletException {        System.out.println("过滤器初始化");    }    @Override    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        System.out.println("执行过滤操作");        filterChain.doFilter(servletRequest,servletResponse);    }    @Override    public void destroy() {        System.out.println("过滤器销毁");    }}复制代码

第二部:在入口处添加@ServletComponentScan注解

package com.example.demo;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.web.servlet.ServletComponentScan;@SpringBootApplication@MapperScan(value = "com.example.demo.mapper")//filter和listener监听器注解需要用的@ServletComponentScanpublic class DemoApplication {   public static void main(String[] args) {      SpringApplication.run(DemoApplication.class, args);   }}复制代码

Spring Boot全局异常处理

全局异常处理:@ControllerAdvice:包含@Componet,可以被扫描到

统一异常处理:@ExceptionHandler(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。

package com.example.demo.global.exception.test;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class ExceptionTestController {    @RequestMapping(value = "ExceptionTest",method = RequestMethod.GET)    public String index(){        String str=null;        str.split("1");        return "ExceptionTestController";    }}package com.example.demo.global.exception.test;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import java.util.Date;@ControllerAdvice//如果返回的为json数据或其他对象,添加该注解@ResponseBodypublic class GlobalDefaultExceptionHandler {    public static final String DEFAULT_ERROR_VIEW="error";    @ExceptionHandler({NullPointerException.class,NumberFormatException.class})    public ModelAndView formatErrorHandler(HttpServletRequest request,Exception ex){        System.out.println("已经捕获到异常");        ModelAndView mv=new ModelAndView();        mv.addObject("exception",ex);        mv.addObject("timeStamp",new Date());        mv.setViewName(DEFAULT_ERROR_VIEW);        return mv;    }}复制代码

转载于:https://juejin.im/post/5c05605ef265da61193b9970

你可能感兴趣的文章
第一次作业
查看>>
我的友情链接
查看>>
康盛系列产品工程师php
查看>>
Excel利用超链接打开指定文件夹
查看>>
Elasticsearch走上专案专有化 AWS:将另开辟开放版
查看>>
J盘无法访问RAW,里面的数据怎样找到
查看>>
硬盘的读写原理
查看>>
photoshop技术
查看>>
python编写员工信息表
查看>>
2018-3-30 Linux学习笔记
查看>>
VM系统安装
查看>>
Squid的ACL访问控制及反向代理
查看>>
Linux配置文件路径大全
查看>>
配置静态路由
查看>>
选择如何启动B2G
查看>>
全球积分宝:揭秘币圈的你是怎么亏钱的!
查看>>
html+css
查看>>
配置AWstats日志分析软件
查看>>
面试题:如何设计一个高并发系统?
查看>>
通过init_connect + binlog 实现MySQL审计功能
查看>>