13. springboot 中使用 servlet 对象

zhanglei 2022年06月20日 289次浏览

13.1 使用 servlet 步骤

  1. 编写一个servlet类,继承 HttpServlet 类

  2. 配置Servlet,让框架能识别

    项目结构如下:

    image-20220620083853402

13.1.1 创建Servlet类 MyServlet

package com.zhanglei.web;
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 {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //运用 HttpServletResponse
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter pw= resp.getWriter();
        pw.println("welcome to Servlet");
        pw.flush();
        pw.close();
    }
}

13.1.2 配置Servlet

​ 要使用 Servlet,要配置它的属性,比如 url。在springboot 中,配置 servlet 的类是 ServletRegistrationBean,顾名思义,就是获取 Servlet 的bean 容器。

image-20220620085048828

​ 发现 ServletRegistrationBean 里面有一个有参构造方法,第一个参数是 Servlet 对象,另一个参数是 url,因此这样就可以配置出 Servlet:

package com.zhanglei.config;
import com.zhanglei.web.MyServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//声明这是一个配置类,等效于xml文件
@Configuration
public class MyConfig {
    //定义一个方法getServlet,返回为 ServletRegistrationBean 类型
   //@Bean 注解是将返回的 bean对象放容器中,让框架能识别,相当于 spring 中的xml
    @Bean
    public ServletRegistrationBean getServlet(){

        ServletRegistrationBean servlet=
                new ServletRegistrationBean<>(new MyServlet(),"/myservlet");

        return servlet;
    }
}

​ 由于 Servlet 不属于框架里面的内容,因此要把它用@Bean 注解放入到 容器中,框架才能识别!

13.1.3 验证 Servlet

​ 这边说个题外话,启动应用的时候,控制台显示:

image-20220620090106188

​ 由于我们未在 .properties 文件中配置 tomcat 端口号和项目名,因此默认 tomcat 端口号是8080,项目名是空!

​ 启动应用,在浏览器输入:localhost:8080/myservlet

image-20220620090226631

​ Servlet 正常工作!