第十三个war包操作详解与介绍filter、xml(不知道多少天学习javaee)

147 阅读2分钟

我正在参与掘金创作者训练营第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 这是善后工作....."); 1659866617111.png

1659867320860.png

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 的标签。标签的功能性意义依赖于应用程序的特性。