la base del filtro

ciclo de vida útil del filtro

filtro y Servlet similar.
1.filter se crea y se inicializa cuando se inicia la aplicación.
2.filter es un singleton roscado multi-.
3.filter destruido cuando se detiene la aplicación.
4.doFilter (): O bien un hilo de acceso, siempre que el filtro por filtración, a continuación, el filtro se realice doFilter método de,
y es un método se ejecutará una vez doFilter por filtro.
5. Dado que el filtro es un único multi-roscado para asegurar el hilo de seguridad, es en general no variables miembro Añadir filtro pueden ser modificados.

创建filter的步骤
1.创建自己的filter实现Filter接口(java.servletx.*)
package com.javaweb.filters;

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 SomeFilter implements Filter {


	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		System.out.println("执行SomeFilter");
		//放行操作,过滤请求后,把请求发送到服务器
		chain.doFilter(request, response);
		
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("filter销毁");
	}

	@Override
	public void init(FilterConfig filterConfig ) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("filter初始化");
	}


}

2.注册filter,和servlet相似的注册方式
  <filter>
  	<filter-name>SomeFilter</filter-name>
  	<filter-class>com.javaweb.filters.SomeFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>SomeFilter</filter-name>
  	<!--过滤所有请求-->
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

FilterConfig

FilterConfig: objetos de configuración del filtro. Y los objetos ServletConfig, puede obtener la información de configuración de contenido

package com.javaweb.filters;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class SomeFilter implements Filter {


	private FilterConfig filterConfig;

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		String filterName = filterConfig.getFilterName();
		System.out.println("filterName="+filterName);
		
		Enumeration<String> names = filterConfig.getInitParameterNames();
		while(names.hasMoreElements()){
			String name = names.nextElement();
			String value = filterConfig.getInitParameter(name);
			System.out.println(name+"="+value);
		}
		
		ServletContext servletContext = filterConfig.getServletContext();
		System.out.println("ServletContext="+servletContext);
		chain.doFilter(request, response);

	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("filter销毁");
	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		this.filterConfig = filterConfig;
	}


}

 <filter>
  	<filter-name>SomeFilter</filter-name>
  	<filter-class>com.javaweb.filters.SomeFilter</filter-class>
  	<init-param>
  		<param-name>name</param-name>
  		<param-value>流行</param-value>
  	</init-param>
  	<init-param>
  		<param-name>age</param-name>
  		<param-value>14</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>SomeFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

url-parrtern

La primera configuración: <url-pattern>/*</url-pattern>intercepta todas las peticiones.

 <filter>
  	<filter-name>SomeFilter</filter-name>
  	<filter-class>com.javaweb.filters.SomeFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>SomeFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

La segunda configuración: <servlet-name>SomeServlet</servlet-name>la petición especificada acceso al servlet de intercepción

 <filter>
  	<filter-name>SomeFilter</filter-name>
  	<filter-class>com.javaweb.filters.SomeFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>SomeFilter</filter-name>
  	<servlet-name>SomeServlet</servlet-name>
  </filter-mapping>

dispathcher

Los valores despachador:
1.Solicitud defecto: Para cualquier petición generales para interceptar, pero menos que la petición para reenviar el delantero e incluyen.
2.Incluir: Al acceder a un servlet, que sólo incluirá la forma en que la solicitud se reenvía (getRequestDispatcher () incldue (). ) De intercepción. Otros pedidos no serán interceptados, incluyendo la petición de servlet.
3.FOEWARD: (. GetRequestDispatcher () hacia adelante () Cuando se accede a un servlet, para el que el único camino posible la solicitud remitida ) Intercepción. Otros pedidos no serán interceptados, incluyendo la petición de servlet.
4.ERROR: Cuando un salto a la página de gestión de errores, esta solicitud a la intercepción.

 <filter>
  	<filter-name>SomeFilter</filter-name>
  	<filter-class>com.javaweb.filters.SomeFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>SomeFilter</filter-name>
  	<servlet-name>SomeServlet</servlet-name>
  	<dispatcher>ERROR</dispatcher>
  </filter-mapping>
   <error-page>
  	<error-code>404</error-code>
  	<location>/error.jsp</location>
  </error-page>
Publicados 114 artículos originales · ganado elogios 8 · vistas 5475

Supongo que te gusta

Origin blog.csdn.net/OVO_LQ_Start/article/details/104990319
Recomendado
Clasificación