第一周04

学习了 Servlet 的进阶知识,包括 Servlet 的生命周期、过滤器和监听器。
Servlet 的生命周期方法有 init ()、service () 和 destroy ()。init () 方法在 Servlet 被创建时执行,用于初始化资源;service () 方法处理客户端请求;destroy () 方法在 Servlet 被销毁时执行,用于释放资源。
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class LifeCycleServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("Servlet初始化");
}

@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.println("<html><body>");
    out.println("<h1>Servlet服务</h1>");
    out.println("</body></html>");
}

@Override
public void destroy() {
    System.out.println("Servlet销毁");
}

}

过滤器(Filter)可以对请求和响应进行过滤处理。例如,一个简单的字符编码过滤器:
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter(filterName = "CharacterEncodingFilter", urlPatterns = "/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    servletRequest.setCharacterEncoding("UTF-8");
    servletResponse.setCharacterEncoding("UTF-8");
    filterChain.doFilter(servletRequest, servletResponse);
}

@Override
public void destroy() {
    Filter.super.destroy();
}

}

监听器(Listener)可以监听 ServletContext、HttpSession 和 ServletRequest 等对象的创建、销毁和属性变化等事件。

posted @ 2025-01-16 08:16  Echosssss  阅读(11)  评论(0)    收藏  举报