第一周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 等对象的创建、销毁和属性变化等事件。
浙公网安备 33010602011771号