SpringBoot用Servlet处理请求

认识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);
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章