本文是通过实例让大家对内存马有一个初步清晰的认知,理解Java Servlet 与 Filter的 使用。
前置知识:会发布一个IDEA web项目,具体操作参考我上一篇博客 IDEA tomcat远程调试_leeezp的博客-CSDN博客
0x01 实践
IDEA需要引入一些依赖jar包,这些jar包在tomcat9的lib目录下。
catalina.jar、servlet-api.jar、tomcat-api.jar、tomcat-util.jar、tomcat-util-scan.jar
新建一个 Servlet 页面
MyServlet.java
import javax.servlet.*;
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(urlPatterns = "/Filter1")
public class MyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("执行MyServlet--doPost方法<br/><br/>");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
发布项目,并问:
使用 Filter 过滤器 和 Servlet
新建过滤器 MyFilter.java
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(urlPatterns = "/Filter1")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("WOW Filter init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletResponse.setCharacterEncoding("utf-8");
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;Charset=UTF-8");
servletResponse.getWriter().println("MyFilter接收到了请求,开始过滤<br/><br/>");
filterChain.doFilter(servletRequest, servletResponse); //chain.doFilter将请求转发给过滤器链下一个filter,如果没有filter那就是转发给Servlet
servletResponse.getWriter().println("回到MyFilter--doFilter方法<br/><br/>");
}
@Override
public void destroy() {
System.out.println("WOW Filter destroy");
}
}
注意,chain.doFilter将请求转发给过滤器链下一个filter,如果没有filter那就是转发给Servlet。
如果使用了 filterChain.doFilter(servletRequest, servletResponse) ,则必须有 Servlet 且 Servlet 和 Filter 过滤的URL相同,分别用 @WebFilter 和 @WebServlet 注解。
使用 Filter 过滤器 不使用 Servlet
MyFilter.java
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(urlPatterns = "/Filter1")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("WOW Filter init");
## 最后
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/666f96f001de22dc3dbecd089d5df9f3.png)
![img](https://img-blog.csdnimg.cn/img_convert/5ab0f7fe2c32086f495d1f8b88bcb48d.png)
![img](https://img-blog.csdnimg.cn/img_convert/a355a79cbbcbd654d94e90a98c2815dd.png)
![img](https://img-blog.csdnimg.cn/img_convert/a11da540bd12cec332964d4d9b74adcc.png)
![img](https://img-blog.csdnimg.cn/img_convert/88215e38ac376ee43b7fd6d5dbc29661.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)
**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)
**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**