我正在参与掘金创作者训练营第5期,点击了解活动详情
-----------20220807
这是今天第二篇,对于之前j2ee的更文续写,之前只写到第十个war包,其实后面的war包也做了,但就是一直没发出来,那就今天讲解一下第十三个包吧\
过滤器相关概念
过滤器的配置和Servlet一样,但执行的不是业务功能,而是过滤功能 ,一般情况下,用Filter来过滤Servlet,而Servlet用于控制,那么Filter则用于控制前后的预设和善后处理,因此,Filter做有意义的工作,一定是从Servlet对应的url-pattern入手,换句话来描述,就是你要经过这个Servlet处理,得先经过Filter的预处理
源码
MyFilter.java
package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
* <li>过滤器
*/
public class MyFilter01 implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
System.out.println("2020051041 这是准备工作.....");
chain.doFilter(request, response);
System.out.println("2020051041 这是善后工作.....");
}
}
大家应该都看的出来,这个代码,是用来配置过滤器的,我们这个代码相当于是模拟预设工作,开始的时候放行,console当中输出“这是准备工作,”System.out.println("2020051041 这是准备工作.....");这边的放行,如果没有下面的chain.doFilter(request, response),doFilter过程,放行后可以到达servlet,这次我们也相当于是模拟善后工作【servlet工作完后,再回到这里】
System.out.println("2020051041 这是善后工作.....");
MyServlet.java
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* <li>Servlet,做核心业务
*/
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("2020051041,我的Servlet在工作...");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
这个java文件,就是在模拟核心业务,现实项目中,他会进行一个核心业务的运行,我们今天就简单写一下,让大家体验一下这个过程罢了
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>j2018001001_07_servletAndFilterDemo</display-name>
<filter>
<filter-name>MyFilter01</filter-name>
<filter-class>filter.MyFilter01</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter01</filter-name>
<url-pattern>/MyServlet</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
这个是我们的web.xml文件,这边分为但部分,分别是
- 配置过滤器,注意,是对URL进行拦截或是过滤
- 配置servlet,即核心业务
- 项目默认启动页
xml
XML 被设计用来传输和存储数据。 XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML。 不过,能够读懂 XML 的应用程序可以有针对性地处理 XML 的标签。标签的功能性意义依赖于应用程序的特性。