1、注解方式
注意:该方案仅适用于Servlet3.0及其之后的版本。
1.1、定义Servlet
自定义Servlet实现类并添加@WebServlet
注解
@WebServlet("/demo")
public class DemoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().println("hello spring boot servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
1.2、注册Servlet
在Application.java中添加@ServletComponentScan
注解,并指明servlet包路径:
@ServletComponentScan("com.blairscott.servlet")
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
启动并运行:
可以看到,/demo 下的请求被拦截。
2、配置类方式
注意:该方案同时适用于Servlet2.5 和 Servlet3.0及其之后的版本。
2.1、定义Servlet
无需添加@WebServlet
注解
public class DemoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().println("hello spring boot servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
2.2、注册Servlet
在Application.java中定义注册方法,此时无需使用@ServletComponentScan
注解进行注册:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
// 注册Servlet
@Bean
public ServletRegistrationBean<DemoServlet> getServletBean() {
return new ServletRegistrationBean<>(new DemoServlet(), "/demo");
}
}
启动并运行: