使用注解扫描和注册Java Web三大组件(Servlet、Filter、Listener)非常方便。
1. Servlet 注册
Servlet 是 Java Web 开发的基础组件,用于处理客户端(通常是浏览器)发送的 HTTP 请求并生成响应。
Controller是基于 Servlet 的封装。
可以通过@WebServlet注解来注册Servlet,并使用@ServletComponentScan注解来扫描这些Servlet。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/myServlet")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Hello MyServlet");
resp.getWriter().write("Hello from MyServlet");
}
}
主类上添加@ServletComponentScan注解:
@SpringBootApplication
@ServletComponentScan
public class QvtuWeb002Application {
public static void main(String[] args) {
SpringApplication.run(QvtuWeb002Application.class, args);
}
}
2. Filter 注册
通过@WebFilter注解来注册Filter,同样需要使用@ServletComponentScan注解来扫描。
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/myServlet")
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("处理请求前的处理");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("处理请求后的处理");
}
}
3. Listener 注册
通过@WebListener注解来注册Listener,同样需要使用@ServletComponentScan注解来扫描。
@WebListener
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("----Web应用初始化完成----");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("----Web应用销毁之前----");
}
}
4. 运行测试
运行项目的启动类,控制台输出项目启动的信息。
在浏览器中访问http://127.0.0.1:8080/myServlet,此时控制台输出访问结果信息。