请编写一个用于拦截servlet程序的filter拦截器_juechen333的博客-爱代码爱编程
一、要求
已知有一个名为MyServlet的程序,程序可向浏览器输出“Hello MyServlet”。请编写一个用于拦截MyServlet程序的MyFilter拦截器。
要求如下:
编写名为MyFilter的过滤器,配置MyFilter对MyServlet的拦截。
过滤器可向浏览器输出“Hello MyFilter”。
二、实现
MyServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(name = "MyServlet", urlPatterns = "/MyServlet")
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("Hello MyServlet ");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
MyFilter.java
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import java.io.PrintWriter;
@WebFilter(filterName = "MyFilter", urlPatterns = "/*")
public class MyFilter implements Filter {
public void destroy() {
// 过滤器对象在销毁时自动调用,释放资源
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 用于拦截用户的请求,如果和当前过滤器的拦截路径匹配,该方法会被调用
PrintWriter out = response.getWriter();
out.write("Hello MyFilter");
}
public void init(FilterConfig fConfig) throws ServletException {
// 过滤器对象在初始化时调用,可以配置一些初始化参数
}
}
三、结果
访问MyServlet,注意访问路径,一定要和@WebServlet中设置的urlPatterns路径保持一致,且urlPatterns路径中一定要带有斜杠
可知浏览器未输出 HelloMySevlet,输出 HelloMyFilter