SpringBoot 注册自己的Servlet(三种方式)

news/2025/3/14 21:36:53/

SpringBoot 注册自己的Servlet(三种方式)

目录

  • SpringBoot 注册自己的Servlet(三种方式)
    • 方法1:使用servlet3.0规范提供的注解方式注册
      • Servlet
        • 1,声明servlet及映射
        • 2,加上@ServletComponentScan 才会扫描加了这个注解
        • 运行结果
    • 方法2:使用springboot提供的注册
      • Servlet
      • 配置类
      • 运行结果
    • 方法3:动态注册:
      • Servlet类
      • 配置类

方法1:使用servlet3.0规范提供的注解方式注册

@WebServlet

Servlet

1,声明servlet及映射

com/bjpowernode/springbootservlet01/servlet
MyServlet.java

package com.bjpowernode.springbootservlet01.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebListener;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet(name="MyServlet",urlPatterns = "/myServlet")
public class MyServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req,resp);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {PrintWriter writer = resp.getWriter();writer.println("This is my servlet");}
}

2,加上@ServletComponentScan 才会扫描加了这个注解

在这里插入图片描述

运行结果

在这里插入图片描述

方法2:使用springboot提供的注册

Servlet

com/bjpowernode/springbootservlet02/servlet
BeanServletTest.java

package com.bjpowernode.springbootservlet02.servlet;import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.stereotype.Component;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@Component
public class BeanServletTest extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {PrintWriter writer = resp.getWriter();writer.println("hello this is servlet");}
}

配置类

com/bjpowernode/springbootservlet02/config
MyWebMvcConfigurer.java

package com.bjpowernode.springbootservlet02.config;import com.bjpowernode.springbootservlet02.servlet.BeanServletTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import javax.servlet.ServletRegistration;@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {@Autowiredprivate BeanServletTest beanServletTest;@Beanpublic ServletRegistrationBean myServlet(){ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
//        servletRegistrationBean.setServlet(new BeanServletTest());servletRegistrationBean.setServlet(beanServletTest);servletRegistrationBean.setName("beanServlet");servletRegistrationBean.addUrlMappings("/beanServlet");return servletRegistrationBean;}}

运行结果

在这里插入图片描述

方法3:动态注册:

Servlet类

package com.bjpowernode.springbootservlet03.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;public class MyServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {PrintWriter writer = resp.getWriter();writer.println("This is my servlet");}
}

配置类

package com.bjpowernode.springbootservlet03.config;import com.bjpowernode.springbootservlet03.servlet.MyServlet;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.stereotype.Component;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import javax.servlet.annotation.WebServlet;@Component
public class MyServletConfig implements ServletContextInitializer {@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {ServletRegistration.Dynamic myServlet = servletContext.addServlet("MyServlet", MyServlet.class);myServlet.addMapping("/myServlet");}
}

运行结果
在这里插入图片描述


http://www.ppmy.cn/news/12704.html

相关文章

HTTP/HTTPS协议介绍

数据来源 HTTP简介 01 什么是HTTP 超文本传输协议(HyperTextTransferProtocol缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTP( Hyper Text Transfer Protocol超京本传输协议) 是一个基于请求与响应 无状态的,应…

《Stealth秘密行动》游戏开发记录

游戏开发的学习记录项目:Stealth秘密行动开始时间:2022.12.30一、新学到的:二、遇到的问题:三、成品部分展示:游戏开发的学习记录⑧ 项目:Stealth秘密行动 开始时间:2022.12.30 (…

【ESP 保姆级教程】玩转emqx篇 ——初识emqx

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-01-15 ❤️❤️ 本篇更新记录 2022-01-15 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…

AtCoder Beginner Contest 285解题报告

A - Edge Checker 2 Problem Statement Determine if there is a segment that directly connects the points numbered a and b in the figure below. Constraints 1≤a<b≤15a and b are integers.Input The input is given from Standard Input in the following for…

详解数据库的锁机制及原理

详解数据库的锁机制及原理1.数据库锁的分类2.行锁共享锁&#xff08;读锁S锁&#xff09;排他锁&#xff08;写锁X锁&#xff09;更新锁3.意向锁&#xff08;IX/IS锁&#xff09;4.锁机制解释数据库隔离级别5.间隙锁1.数据库锁的分类 本图源自CSDN博主&#xff1a;Stephen.W 数…

LeetCode刷题模版:111 - 120

目录 简介111. 二叉树的最小深度112. 路径总和113. 路径总和 II114. 二叉树展开为链表115. 不同的子序列116. 填充每个节点的下一个右侧节点指针117. 填充每个节点的下一个右侧节点指针 II118. 杨辉三角119. 杨辉三角 II120. 三角形最小路径和结语简介 Hello! 非常感谢您阅读海…

Go语言并发编程及依赖管理

目录&#x1f9e1;并发编程GoroutineCSP(Communicating Sequential Processes)&#x1f9e1;依赖管理依赖演变依赖管理三要素&#x1f49f;这里是CS大白话专场&#xff0c;让枯燥的学习变得有趣&#xff01; &#x1f49f;没有对象不要怕&#xff0c;我们new一个出来&#xff0…

Http客户端 Feign 的使用 (黑马springcloud笔记)

Feign基本使用 目录Feign基本使用一、Feign代替RestTemplate二、自定义配置三、Feign使用优化1. 底层优化2. 日志优化四、最佳实践方式一&#xff1a;继承方式二&#xff1a;抽取一、Feign代替RestTemplate 步骤&#xff1a; 引入依赖 <dependency><groupId>org.s…