欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot用Servlet处理请求

程序员文章站 2022-06-03 11:29:31
...

认识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 的界面和返回结果

SpringBoot用Servlet处理请求
同时控制台会输出doGet里定义的值

doGet

项目结构
SpringBoot用Servlet处理请求
无需依赖配置
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);
	}

}

相关标签: Spring Boot