1.Filter过滤器
实现第一个Filter 程序
首先在Eclipse中创建一个名为chapter08的Web项目,然后在该项目的src目录下创建一个名为cn.itcast.chapter08.filter包,最后在该包下创建一个名为MyServlet的Servlet 类,该类用于访问时在浏览器中输出“Hello MyServlet”。
package cn.itcast.chapter08.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;
@WebFilter("/MyFilter")
public class MyFilter implements Filter {
public MyFilter() {
// TODO Auto-generated constructor stub
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
response.setContentType("text/html;charser=utf-8");
System.out.println("拦截了网站响应");
response.getWriter().print("这是filter输出网页的内容");
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
在web.xml文件中对Servlet进行如下配置
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>cn.itcast.chapter08.filter.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
启动Tomcat 服务器 如图
在cn.itcast.chapter08.filter包中创建一个名为MyFilter的Fiter类,该类用于拦截MyServlet程序。
package cn.itcast.chapter08.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;
public class MyFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
response.setContentType("text/html;charset=utf-8");
System.out.println("拦截了原网站的响应");
response.getWriter().print("这是filter输出到网页的内容");
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
在web.xml文件中对Servlet进行如下配置
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>cn.itcast.chapter08.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/MyServlet</url-pattern>
</filter-mapping>
启动Tomcat 服务器如图
Filter映射
在chapter08项目的cn.itcast.chapter08.filter包中,创建一个名为ForwardServlet的Servlet类,该类用于将请求转发给first.jsp页面
package cn.itcast.chapter08.filter;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ForwardServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/first.jsp").forward(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
在web.xml文件中,配置ForwardServlet信息
<servlet>
<servlet-name>ForwardServlet</servlet-name>
<servlet-class>cn.itcast.chapter08.filter.ForwardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ForwardServlet</servlet-name>
<url-pattern>/ForwardServlet</url-pattern>
</servlet-mapping>
在WebContent目录中创建一个first.jsp页面,该页面用于输出内容
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
first.jsp
</body>
</html>
```在pidan.filter包中,创建一个过滤器ForwardFiter.java,该过滤器专门用于对first.jsp页面进行拦截
```cpp
package cn.itcast.chapter08.filter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class ForwardFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
PrintWriter out=response.getWriter();
out.write("Hello FilterYest");
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
在web.xml文件中,配置过滤器的映射信息,拦截first.jsp页面
<filter>
<filter-name>ForwardFilter</filter-name>
<filter-cl