SpringBoot中使用Servlet,方法二

  上篇博文是在SpringBoot中通过@WebServlet注解来使用Servlet的,本篇介绍使用配置类来实现SpringBoot中使用Servlet。

一、新建一个Servlet的配置类ServletConfig.java,内容如下:

package cn.com.winson.config;

import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import cn.com.winson.servlet.MyServlet;
/*SpringBoot没有xml,@Configuration注解可以表示一个spring的xml配置文件*/
@Configuration
public class ServletConfig {

    /*@Bean注解:相当于Spring中的配置文件中的<bean>标签,下面的方法相当于如下配置:id为方法名,class为返回值
     * <bean id="myServletRegistrationBean" class="org.springframework.boot.web.servlet.ServletRegistrationBean;">
     * </bean>
     */
    @Bean
    public ServletRegistrationBean myServletRegistrationBean() {
        /*将Servlet注册为一个bean,设置访问路径*/
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(), "/myServlet");
        return registrationBean;
    }

}

二、新建一个Servlet类,继承HttpServlet,内容如下:

package cn.com.winson.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet{

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().print("Hello World");
        resp.getWriter().flush();
        resp.getWriter().close();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
    
}

三、此时工程会报错:

 具体错误为:参考Problems选项卡下的错误信息,也就是说我们目前使用的Java Web Module需要版本为3.1,而目前使用的不是3.1,如何修改?

具体操作:Window-》show view -》Navigator,切换工程查看目录为Navigator,打开箭头所指文件:

将箭头所指改为3.1,修改后如下图:

 然后再更新工程:解除错误提示:

四、运行程序,访问结果为:

总结:

一、SpringBoot通过配置类来使用Servlet相比使用注解来实现,要麻烦很多,所以推荐使用注解来使用。

二、使用配置类来实现,程序启动入口类,不用再加Servlet扫描器。

三、两种方式,pom.xml都不需要添加特殊的依赖,注意,有些博文还说要加Servlet的依赖,其实不用。

原文地址:https://www.cnblogs.com/elnimo/p/10099222.html