博客
关于我
Spring Boot - Add a Servlet to an Application
阅读量:308 次
发布时间:2019-03-03

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

Spring Boot 环境下的 Servlet 配置与使用

准备

新建 Spring Boot Starter Project

  • 使用 IntelliJ IDEA 创建一个新的 Maven 项目
  • 添加 Spring Boot Starter Web 依赖到 pom.xml 中
  • org.springframework.boot
    spring-boot-starter-web
    1. 新建一个 Servlet 类,位于 src/main/java/com/mk/servlet/HelloServlet.java,内容如下:
    2. package com.mk.servlet;
      import java.io.IOException;
      import java.io.PrintWriter;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      public class HelloServlet extends HttpServlet {
      private static final long serialVersionUID = 1L;
      public HelloServlet() {
      System.out.println("HelloServlet.HelloServlet()");
      }
      @Override
      public void init() throws ServletException {
      System.out.println("HelloServlet.init()");
      }
      @Override
      protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      System.out.println("HelloServlet.doGet()");
      PrintWriter writer = response.getWriter();
      writer.write("Hello, " + request.getRemoteAddr());
      writer.flush();
      writer.close();
      }
      @Override
      public void destroy() {
      System.out.println("HelloServlet.destroy()");
      }
      }

      配置类

      创建一个配置类 ServletComponentConfiguration.java,位于 src/main/java/com/mk/configuration/ServletComponentConfiguration.java,内容如下:

      package com.mk.configuration;
      import org.springframework.boot.web.servlet.ServletComponentScan;
      import org.springframework.context.annotation.Configuration;
      @Configuration
      @ServletComponentScan(basePackages = {"com.mk.servlet"})
      public class ServletComponentConfiguration {
      }

      启动类

      创建一个启动类 SpringBootServletApplication.java,位于 src/main/java/com/mk/SpringBootServletApplication.java,内容如下:

      package com.mk;
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      @SpringBootApplication
      public class SpringBootServletApplication {
      public static void main(String[] args) {
      SpringApplication.run(SpringBootServletApplication.class, args);
      }
      }

      通过 Spring Bean 注册 Servlet

      编辑 ServletComponentConfiguration.java,添加以下代码:

      package com.mk.configuration;
      import java.util.Arrays;
      import javax.servlet.Servlet;
      import org.springframework.boot.web.servlet.ServletRegistrationBean;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import com.mk.servlet.HelloServlet;
      @Configuration
      public class ServletComponentConfiguration {
      @Bean
      public ServletRegistrationBean servletRegistration() {
      ServletRegistrationBean registration = new ServletRegistrationBean();
      registration.setServlet(new HelloServlet());
      registration.setUrlMappings(Arrays.asList("/hello"));
      return registration;
      }
      }

      启动应用后,控制台会输出:

      HelloServlet.HelloServlet()
      HelloServlet.init()

      表示 Servlet 已经成功注册到 Spring Boot 容器中。

      使用类路劲扫描注册 Servlet

      编辑 HelloServlet.java,添加 @WebServlet 注解:

      package com.mk.servlet;
      import java.io.IOException;
      import java.io.PrintWriter;
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      @WebServlet(urlPatterns = "/hello")
      public class HelloServlet extends HttpServlet {
      // ... 保持不变
      }

      编辑 ServletComponentConfiguration.java,删除相关代码,并添加 @ServletComponentScan 注解:

      package com.mk.configuration;
      import org.springframework.boot.web.servlet.ServletComponentScan;
      import org.springframework.context.annotation.Configuration;
      @Configuration
      @ServletComponentScan(basePackages = {"com.mk.servlet"})
      public class ServletComponentConfiguration {
      }

      启动应用后,访问 /hello URL 应该能够正常工作。

      注意事项

    3. HelloServlet.init() 方法会在第一次访问时调用,后续不会重复调用
    4. 使用 @WebServlet 注解可以直接定义 URL 映射路径

    转载地址:http://jhyq.baihongyu.com/

    你可能感兴趣的文章
    node模块化
    查看>>
    node环境下使用import引入外部文件出错
    查看>>
    node编译程序内存溢出
    查看>>
    Node读取并输出txt文件内容
    查看>>
    node防xss攻击插件
    查看>>
    noi 1996 登山
    查看>>
    noi 7827 质数的和与积
    查看>>
    NOIp2005 过河
    查看>>
    NOIP2011T1 数字反转
    查看>>
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    NOIp模拟赛二十九
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>
    None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
    查看>>
    NOPI读取Excel
    查看>>
    NoSQL&MongoDB
    查看>>
    NoSQL介绍
    查看>>
    Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Notepad++在线和离线安装JSON格式化插件
    查看>>