SpringBoot用Servlet处理请求

    技术2022-07-10  91

    认识Servlet容器

    Servlet是在javax.servlet包中定义的一个接口。在开发Spring Boot应用程序时,使用Controller基本能解决大部分的功能需求。但有时候也需要使用Servlet,比如实现拦截和监听功能。

    Spring Boot的核心控制器DispatcherServlet会处理所有的请求。如果自定义Servlet,则需要进行注册,以便DispatcherServlet核心控制器知道它的作用,以及处理请求url-pattern.

    使用Servlet处理请求,可以直接通过@WebServlet(urlPattern,descript)注册Servlet,然后在入口类中添加注解@ServletComponentScan,以扫描该注解指定包下的所有Servlet。

    用Servlet处理请求

    实验结果 运行程序,使用postman测试软件中GET方法访问地址 没有postman的小伙伴可以点击链接,进行下载postman和简单使用测试软件Postman下载(亲测有效)

    http://localhost:8080/ServletDemo02/*

    会返回重写doGET方法的值

    Servlet ServletDemo02

    下面是postman 的界面和返回结果

    同时控制台会输出doGet里定义的值

    doGet

    项目结构 无需依赖配置 1.注册Servlet类 ServletDemo02.java 代码解释: @WebServlet(urlPattern="/ServletDemo02/*"):属性urlPattern指定WebServlet的作用范围,这里代表ServletDemo02下的所有子路径。 doGet:父类HpptServlet的doGet方法是空的,没有实现任何代码,子类需要重写此方法。

    package com.example.demo; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(urlPatterns = "/ServletDemo02/*") public class ServletDemo02 extends HttpServlet { /** * 重写doGet方法,父类的HttpServlet的doGet方法是空的,没有实现任何代码,子类需要重写此方法 * 客户使用GET方法请求Servlet时,Web容器会调用doGet方法处理请求 * */ @Override protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{ System.out.println("doGet"); resp.getWriter().print("Servlet ServletDemo02"); } }

    2.开启Servlet支持 在入口类上添加注解@ServletComponentScan,以使得Servlet生效。 ServletDemoApplication.java

    代码解释 @CompomentScan:组件扫描,可自动发现和装配一些Bean,并根据定义的扫描路径把符合扫描规则的类装配到Spring容器中。 @SpringBootApplication:入口类Application的启动注解

    package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; @ServletComponentScan @SpringBootApplication public class ServletDemoApplication { public static void main(String[] args) { SpringApplication.run(ServletDemoApplication.class, args); } }
    Processed: 0.015, SQL: 9