开发环境:IntelliJ IDEA 2019.2.2
Spring Boot版本:2.1.8

新建一个名称为demo的Spring Boot项目。

一、使用Servlet配置

1、修改启动类 DemoApplication.java代码,加入注解ServletComponentScan,它用于扫描Servlet组件,包括使用@WebServlet、

@WebFilter和@WebListener进行修饰的类。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan; @SpringBootApplication
@ServletComponentScan
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

2、新建一个类 MyServlet.java,继承HttpServlet并且加入注解 @WebServlet

package com.example.demo;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @WebServlet(value="/servlet")
public class MyServlet extends HttpServlet {
public MyServlet(){
System.out.println("servlet类");
}
protected void service(HttpServletRequest arg0, HttpServletResponse arg1){
System.out.println("servlet方法");
}
}

在浏览器中访问http://localhost:8080/servlet,可看到IDEA控制台输出
servlet类
servlet方法

二、使用Listener配置

1、启动类 DemoApplication.cs 代码在使用Servlet配置上已经加入注解ServletComponentScan,在此保持不变。

2、新建一个类 MyServlet.java

package com.example.demo;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener; @WebListener
public class MyListener implements ServletRequestListener {
@Override
public void requestInitialized(ServletRequestEvent servletRequestEvent){
System.out.println("请求创建");
}
@Override
public void requestDestroyed(ServletRequestEvent servletRequestEvent){
System.out.println("请求销毁");
}
}

在浏览器中访问一个接口,如上步http://localhost:8080/servlet,可看到IDEA控制台输出:
请求创建
请求销毁

附,常用的监听器接口:

1.ServletContextListener -- 监听servletContext对象的创建以及销毁   
1.1 contextInitialized(ServletContextEvent arg0)   -- 创建时执行   
1.2 contextDestroyed(ServletContextEvent arg0)  -- 销毁时执行
2.HttpSessionListener  -- 监听session对象的创建以及销毁   
2.2 sessionCreated(HttpSessionEvent se)   -- 创建时执行   
2.2 sessionDestroyed(HttpSessionEvent se) -- 销毁时执行
3.ServletRequestListener -- 监听request对象的创建以及销毁   
3.1 requestInitialized(ServletRequestEvent sre) -- 创建时执行   
3.2 requestDestroyed(ServletRequestEvent sre) -- 销毁时执行
4.ServletContextAttributeListener  -- 监听servletContext对象中属性的改变   
4.1 attributeAdded(ServletContextAttributeEvent event) -- 添加属性时执行   
4.2 attributeReplaced(ServletContextAttributeEvent event) -- 修改属性时执行   
4.3 attributeRemoved(ServletContextAttributeEvent event) -- 删除属性时执行
5.HttpSessionAttributeListener  --监听session对象中属性的改变   
5.1 attributeAdded(HttpSessionBindingEvent event) -- 添加属性时执行   
5.2 attributeReplaced(HttpSessionBindingEvent event) -- 修改属性时执行   
5.3 attributeRemoved(HttpSessionBindingEvent event) -- 删除属性时执行
6.ServletRequestAttributeListener  --监听request对象中属性的改变   
6.1 attributeAdded(ServletRequestAttributeEvent srae) -- 添加属性时执行   
6.2 attributeReplaced(ServletRequestAttributeEvent srae) -- 修改属性时执行   
6.3 attributeRemoved(ServletRequestAttributeEvent srae) -- 删除属性时执行

三、使用Filter配置

1、启动类 DemoApplication.cs 代码在使用Servlet配置上已经加入注解ServletComponentScan,在此保持不变。

2、新建一个类 MyFilter.java

package com.example.demo;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException; //第一个参数为过滤器名字,第二个参数为要拦截的请求地址
@WebFilter(filterName="myFilter", urlPatterns="/*")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("filter初始化");
} @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("filter方法");
chain.doFilter(request, response);
} @Override
public void destroy() {
System.out.println("filter销毁");
}
}

在浏览器中访问http://localhost:8080/servlet,可看到IDEA控制台输出:
filter方法

最后,附上项目结构图:

最新文章

  1. memcached总结
  2. Java设计模式之-----工厂模式(简单工厂,抽象工厂)
  3. 【Java EE 学习 21 下】【 使用易宝支付接口实现java网上支付功能】
  4. 字符串相似度算法(编辑距离算法 Levenshtein Distance)(转)
  5. linux信号量超过系统限制
  6. Spring 配置方式
  7. hdu2015java
  8. mongodbOperator
  9. 在FMX中实现PostMessage的方法
  10. virtual private catalog
  11. KVM下windows虚拟机使用virtio驱动
  12. 在Linux(ubuntu 14.04)上部署WeX5跨平台App(HTML5)
  13. redis安装使用
  14. Hive篇--搭建Hive集群
  15. Velodyne VLP-16 gmapping 建图
  16. Windows进程的内核对象句柄表
  17. android开发学习笔记系列(1)-android起航
  18. Android Tasker应用之自动查询并显示话费流量套餐信息
  19. uva 116 - Unidirectional TSP (动态规划)
  20. snmp trap编写

热门文章

  1. Odoo系统有哪些不同版本?
  2. ANSIBLE安装和常用模块模块使用详细教程
  3. 修改HTML元素
  4. weui实现滚动加载的效果
  5. 记一次ES查询数据突然变为空的问题
  6. ubuntu安装navicat
  7. tp、tftp、nfs--服务器搭建
  8. 阻止保存要求重新创建表的更改-只需设置SQLServer的一个设置
  9. MS SQL 设置自增长字段默认值
  10. java执行-cp报错 error: could not load JDBC driver