在spring boot中添加自己的Servlet有两种方法,代码注册Servlet和注解自动注册(Filter和Listener也是如此)。
1.通过代码注册Servlet
代码注册通过ServletRegistrationBean、 FilterRegistrationBean 和 ServletListenerRegistrationBean 获得控制。也可以通过实现 ServletContextInitializer 接口直接注册。
2.使用注解注册Servlet
在 SpringBootApplication 上使用@ServletComponentScan 注解后,Servlet、Filter、Listener 可以直接通过 @WebServlet、@WebFilter、@WebListener 注解自动注册,无需其他代码。
application.java
@SpringBootApplication
@ServletComponentScan
public class SpringbootSampleApplication {
/**
* 使用代码注册MyServlet1
* @return
*/
@Bean
public ServletRegistrationBean servletRegistrationBean(){
return new ServletRegistrationBean(new MyServlet1(),"/servlet1/*");
}
public static void main(String[] args) {
SpringApplication.run(SpringbootSampleApplication.class, args);
}
}
Myservlet1.java
public class MyServlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("-------------<doGet>---------------");
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("-------------<doPost>---------------");
PrintWriter out = resp.getWriter();
out.println("success");
}
}
Myservlet2.java
@WebServlet(urlPatterns = "/servlet2/*",description = "servlet2")
public class MyServlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("-------------<doGet>---------------");
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("-------------<doPost>---------------");
PrintWriter out = resp.getWriter();
out.println("success2");
}
}
效果:


Filter的注册
filter可以像servlet那样用着两种方式注册,但是在我尝试中,还有一种方式,
在不修改application.java的情况下,自定义一个filter实现Filter接口,在类上使用@Component注解,
也同样可以注册filter。
listener的注册
同上
本文介绍了在Spring Boot中注册Servlet的两种方法:代码注册和注解自动注册。此外,文章还提到了Filter和Listener的注册方法,并提供了具体的代码示例。
581

被折叠的 条评论
为什么被折叠?



