SpringBoot Servlet
SpringBoot Servlet
介绍
当涉及到Java Web开发时,Servlet、Filter和Listener是三个重要的组件。
- Servlet:
- Servlet是一个Java类,用于处理客户端发送的请求并生成响应。
- 它基于Java Servlet API,提供了一种处理Web请求的标准方式。
- Servlet通常被部署在Servlet容器(如Tomcat、Jetty等)中运行。
- Servlet可以处理不同类型的请求(如GET、POST等),并生成相应的HTTP响应。
- Servlet可以访问请求的参数、头信息、会话数据等,并与数据库或其他资源进行交互。
- Servlet还可以通过编程方式将请求转发到其他Servlet或将响应重定向到其他URL。
- Filter:
- Filter是一个Java类,用于在请求和响应之间执行预处理和后处理逻辑。
- 它可以对请求进行过滤、修改请求参数、验证用户身份、记录日志等操作。
- Filter基于Java Servlet Filter API,通过链式调用方式,可以形成一个过滤器链,依次处理请求。
- Filter可以在请求到达Servlet之前拦截请求,并在响应返回给客户端之前对响应进行处理。
- Filter可以用于实现通用的功能,如身份验证、授权、日志记录、字符编码转换等。
- Listener:
- Listener是一个Java类,用于监听Web应用程序中发生的事件。
- 它基于Java Servlet Listener API,可以监听Servlet上下文、请求、会话等不同类型的事件。
- Servlet上下文监听器(ServletContextListener)用于在应用程序启动和关闭时执行一些初始化和清理工作。
- 请求监听器(ServletRequestListener)用于在请求开始和结束时执行一些逻辑,如记录请求信息。
- 会话监听器(HttpSessionListener)用于监听会话的创建和销毁事件,可以进行会话管理和统计等操作。
- Listener可以在应用程序中注册,并通过回调方法响应特定的事件。
Demo
项目结构
源码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan
public class A08SpringBootServletApplication {
public static void main(String[] args) {
SpringApplication.run(A08SpringBootServletApplication.class, args);
}
}
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/website")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp){
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp){
System.out.println("website->"+req.getParameter("website"));
}
}
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import javax.servlet.*;
@WebFilter("/*")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig){
System.out.println("myFilter->init");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("myFilter->doFilter");
chain.doFilter(request,response);
}
@Override
public void destroy() {
System.out.println("myFilter->destroy");
}
}
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class MyListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("myListener->requestDestroyed");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("myListener->requestInitialized");
}
}
server.port=8081