前言
以前的java web项目,需要在web.xml中定义servlet,对应不同的请求,而在spring项目中,我们用controller定义了各种各样的servlet(当然不包括DispatcherServlet),那么controller是servlet吗?
servlet的本质其实也是一个java bean,controller是对servlet的封装,底层依旧是servlet。
web开发使用Controller基本能解决大部分的需求,但是有时候我们也需要使用Servlet,因为相对于拦截和监听来说,有时候原生的还是比较好用的,现在就来简单的在SpringBoot中使用这些特殊类吧
SpringBoot中简单使用Servlet
我们知道,SpringBoot的核心控制器DispatcherServlet会处理所有的请求,所以对于我们自己写的Servlet来说,就需要进行相应的注册来让DispatcherServlet核心控制器知道你写的这个Servlet的作用以及处理的请求urlpattern。
对Servlet的注册有两种方式:使用代码注册和使用注解来注册,通过代码注册就需要相应的RegistrationBean获得相应的控制,即ServletRegistrationBean,而通过注解来注册就比较简单了,Servlet就直接通过Servlet3.0提供的@WebServlet(urlPattern,descript)来进行注册就可以了,然后在启动类前面添加@ServletComponentScan注解就可以自动扫描同包下的所有Servelt。下面分别通过这两种注册方式来进行Servlet的注册
2.1 代码方式进行注册
1.首先需要编写一个Servlet类:
package org.framework.demo.section1;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 在SpringBoot中通过代码注册的方式来注册Servlet
* @author chengxi
*/
public class MyServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("-----------doGet----------------&