13. springboot 中使用 servlet 对象

zhanglei 2022年06月20日 481次浏览

13.1 使用 servlet 步骤

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

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

    项目结构如下:

    image-20220620083853402

    image-20220620083853402

13.1.1 创建Servlet类 MyServlet

  1. package com.zhanglei.web;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.http.HttpServlet;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import java.io.IOException;
  7. import java.io.PrintWriter;

  8. public class MyServlet extends HttpServlet {
  9. @Override
  10. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  11. doPost(req, resp);
  12. }

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

13.1.2 配置Servlet

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

image-20220620085048828

image-20220620085048828

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

  1. package com.zhanglei.config;
  2. import com.zhanglei.web.MyServlet;
  3. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;

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

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

  15. return servlet;
  16. }
  17. }

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

13.1.3 验证 Servlet

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

image-20220620090106188

image-20220620090106188

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

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

image-20220620090226631

image-20220620090226631

​ Servlet 正常工作!