Spring Boot 内嵌servlet容器的Servlets +Filters + listeners

一:servlet

(1)启动类

@SpringBootApplication
@ServletComponentScan
public class Application {
    public static void main(String[] args){
        SpringApplication.run(Application.class, args);
    }
}

启动类用@ServletComponentScan注解标注

(2)继承HttpServlet

@WebServlet(name = "webServlet", urlPatterns = "/webServlet", loadOnStartup = 2)
public class WebServletTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("########doGet###########");
        System.out.println("WebServletTest.doGet");
    }

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

(3)访问http://localhost:8080/webServlet    运行结果:

二:Filters

测试示例1

@WebFilter(urlPatterns = "/*",filterName="CharacterEncodeFilter",
        initParams={
                @WebInitParam(name="encoding",value="UTF-8"),
                @WebInitParam(name = "forceEncoding", value = "true")
        })
@Singleton
public class CharacterEncodingFilter implements Filter {
    private String encoding = "UTF-8";
    private boolean forceEncoding = true;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.encoding = filterConfig.getInitParameter("encoding");
        String force = filterConfig.getInitParameter("forceEncoding");
        this.forceEncoding = (force == null) || Boolean.valueOf(force);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        if (this.forceEncoding || servletRequest.getCharacterEncoding() == null) {
            servletRequest.setCharacterEncoding(this.encoding);
            servletResponse.setCharacterEncoding(this.encoding);
        }
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}

测试示例2

@WebFilter(urlPatterns = "/*", filterName = "indexFilter")
public class IndexFilter implements Filter {
    private final static Logger logger = LoggerFactory.getLogger(IndexFilter.class);

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        logger.info("init IndexFilter");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        logger.info("IndexFilter.doFilter exec");
        filterChain.doFilter(servletRequest,servletResponse);

    }

    @Override
    public void destroy() {

    }
}

三: listeners

示例

@WebListener
public class MyServletContextListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContex初始化");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContex销毁");
    }
}

运行结果:

时间: 2024-10-10 23:32:46

Spring Boot 内嵌servlet容器的Servlets +Filters + listeners的相关文章

Spring Boot启动过程(四):Spring Boot内嵌Tomcat启动

之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat. private void createEmbeddedServletContainer() { EmbeddedServletContainer localContainer = this.embeddedServletContainer; ServletContext localServletContext = getServ

Spring 发送内嵌图片的邮件 遇到的问题

问题1:spring 发送带图片的html格式的邮件? 解决方法1:直接在发送内容里面添加 <img src="http://www.rgagnon.com/images/jht.gif"> 这种方法是最简单的发送带图片的邮件的方法,但是存在一个问题:有的邮箱会把邮件中有带服务器地址的图片放到垃圾箱,导致邮件收不到,于是继续整. 解决方法2:使用Spring带的 MimeMessageHelper,说不清楚直接看代码: 1 public class MyClass { 2

springBoot(8):web开发-Servlets, Filters, listeners

一.说明 Web 开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet. Filter.Listener 等等 二.在spring boot中的三种实现方式 2.1.代码 CustomServlet.java: package com.example.demo.utils.servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; impor

Springboot - -web应用开发-Servlets, Filters, listeners

一.Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet. Filter. Listener等等 二.在spring boot中的三种实现方式 方法一:通过注册ServletRegistrationBean. FilterRegistrationBean 和 ServletListenerRegistrationBean 获得控制 servlet类: package com.demo.example.util.servlet; import jav

翻译 Spring Boot How To

Spring Boot How To 1. 简介 本章节将回答一些常见的"我该怎么做"类型的问题,这些问题在我们使用Spring Boot时经常遇到.这绝不是一个详尽的列表,但它覆盖了很多方面. 如果遇到一个特殊的我们没有覆盖的问题,你可能想去查看stackoverflow.com 2. Spring Boot应用 2.1. 解决自动配置问题 Spring Boot自动配置总是尝试尽最大努力去做正确的事,但有时候会失败并且很难说出失败原因. 在每个Spring Boot Applica

Spring Boot特性(转)

摘要: 1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 SpringApplication.run 这个静态方法: public static void main(String... 1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 Spri

Spring Boot教程 - 1. 简介

一.导览 本文主要介绍以下几部分: 1. 什么是Spring Boot? 2. 为什么使用Spring Boot? 3. Spring Boot提供哪些功能? 4. 如何使用Spring Boot? 5. Spring Boot有哪些不足? 二.什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. 该框架使用了特定的方式(继承starter,约定优先于配置)来进行配置,从而使开发人员不再需要定义

【转】Spring Boot特性

https://yq.aliyun.com/articles/25530 摘要: 1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 SpringApplication. 1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 SpringApplic

spring boot学习1

转:https://blog.csdn.net/jsyxcjw/article/details/46763639 1 开始 1.1 spring介绍 Spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run". 我们为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始.多数Spring Boot应用需要很少的Spring配置. 你可以使用Spring Boot创建Java应用,并使用java -jar启动它或采用传