Filter:过滤器的入门
什么是过滤器?
与servlet,Listener,为javaweb三大组件.
它会在一组资源(jsp,servlet,css,HTML等等)的前面执行;
它可以让请求得到目标资源,也可以不让请求达到,
- 过滤器有拦截请求的能力!
登录成功:
---允许它访问Aservlet,Bservlet,Cservlet
过滤器如何编写:
1.写一个类实现Filter接口
2.在web.xml中进行配置1
filter接口:
package com.tinstu.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 Afilter implements Filter {
// 销毁之前执行,用来做对非内存资源进行释放
public void destroy() {
}
//每次过滤时都会执行
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
}
//创建之后马上执行,用来做初始化
public void init(FilterConfig arg0) throws ServletException {
}
}
filter是单例的!跟servlet一样
web.xml配置
<filter>
<filter-name>Afilter</filter-name>
<filter-class>com.tinstu.filter.Afilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Afilter</filter-name>
<url-pattern>/Aservlet</url-pattern>
</filter-mapping>
方法
FilterConfig-->与ServletConfig相似
- 获取初始化参数:getInitParameter ( )
- 获取过滤器名称:getFilterName ( )
- 获取application:getServletContext ( )
FilterChain
- doFilter(ServletRequest,ServletResponse); 放行
放行,就相当于
例
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Filter2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Aservlet</servlet-name>
<servlet-class>com.tinstu.servlet.Aservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Aservlet</servlet-name>
<url-pattern>/Aservlet</url-pattern>
</servlet-mapping>
<filter>
<filter-name>Afilter</filter-name>
<filter-class>com.tinstu.filter.Afilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Afilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Aservlet.java
package com.tinstu.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;
public class Aservlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Aservlet.............");
}
}
Afilter.java
package com.tinstu.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 Afilter implements Filter {
// 销毁之前执行,用来做对非内存资源进行释放
public void destroy() {
System.out.println("filter挂");
}
//每次过滤时都会执行
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("拦截!!");
chain.doFilter(request,response); //放行
System.out.println("你又回来了哈哈");
}
//创建之后马上执行,用来做初始化
public void init(FilterConfig arg0) throws ServletException {
System.out.println("filter出生");
}
}
阅读剩余
版权声明:
作者:Tin
链接:http://www.tinstu.com/840.html
文章版权归作者所有,未经允许请勿转载。
THE END