上篇博文是在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的依赖,其实不用。