过滤器和拦截器,监听器

过滤器(filter):请求,响应,需要拦截器放行。
实现一个接口,init(初始化),destroy(摧毁),需要在xml中配置过滤器。
配置过滤器,同配置servlet一样。

<filter>
		<filter-name>MyServlet<filter-name>
		<filter-class>org.student.filter.MyFilter</filter-class>
</fiter>

<filter-mapping>
		<servlet-name>MyServlet</servlet-name>
		<url-pattern>/MyServlet</url-pattern>
</fiter-mapping>

①是需要拦截的对象,箭头表示xml执行顺序。这里的name可以自己取名,不过为了方便,大多数时候不改。
filter映射:
/MyServlet 拦截具体一项
/* 拦截所有请求;
通配符:dispatcher请求方式
REQUEST: 拦截http请求,get,post.
FORWARD: 之拦截通过请求转发方式的请求
INCLUDE: 只拦截通过request.getRequestDispatcher("").include("");通过
ERROR: 只拦截发出的请求。
在这里插入图片描述

拦截器代码示例:

public class MyFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
system.out.print("init");
}
@Override
public void doFilter( ServletResquest request,ServletResponse response,FilterChain chain) throws IOException,ServletException {
system.out.print("拦截请求");
//放行
chain.doFilter(request,response);
system.out.print("拦截响应");
//
}
@Override
public void destroy() {
	system.out.print("destroy");
}
}

监听器:
四个范围对象,PageContext,request,session.application。监听器主要监听后三个。
request: ServletRequestLisener
session: HttpSessionListener,
application: ServletContextListener

实例综合:

public class App implements ServletRequestLisener,HttpSessionListener,ServletContextListener{
//每个监听器,提供两个方法,一个监听开始,一个监听结束
	@Override
	public void contextInitialized(ServletContextEvent sec){
		system.out.print("start");
	}
	@Override
	public void contextDestroy(ServletContextEvent sec){
		system.out.print("destroy");
	}
	@Override
	public void sessionCreated(HttpSesionEvent se){
		system.out.print("start");
	}
	@Override
	public void sessionDestroy(ServletContextEvent se){
		system.out.print("destroy");
	}
	@Override
	public void requestInitialized(ServletContextEvent sre){
		system.out.print("start");
	}
	@Override
	public void requestInitialized(ServletContextEvent sre){
		system.out.print("destroy");
	}
}

配置文件-----监听器

	<listener>
		<listener-class>包名.App</listener-class>
	</listener>

监听器增加属性:每个接口有三个方法。
request: ServletRequestAttributeLisener
session: HttpSessionAttributeListener,
application: ServletContextAttributeListener

实例综合:

public class AppAttribute implements ServletRequestAttributeLisener,HttpSessionAttributeListener,ServletContextAttributeListener{
//每个监听器,提供两个方法,一个监听开始,一个监听结束
	@Override
	public void attributeAdded(ServletContextAttributeEvent scae){
		system.out.print("add");
	}
	@Override
	public void attributeRemoved(ServletContextAttributeEvent  scae){
		system.out.print("remove");
	}
	@Override
	public void attributeReplaced(ServletContextAttributeEvent  scae){
		system.out.print("replace");
	}
	@Override
	public void attributeAdded(HttpSessionAttributeEvent  hsae){
		system.out.print("add");
	}
	@Override
	public void attributeRemoved(HttpSessionBindingEvent  hsae){
		system.out.print("remove");
	}
	@Override
	public void attributeReplaced(HttpSessionBindingEvent  hsae){
		system.out.print("replace");
	}
		@Override
	public void attributeAdded(HttpSessionBindingEvent  fsbe){
		system.out.print("add");
	}
	@Override
	public void attributeRemoved(ServletRequestAttributeEvent  fsbe){
		system.out.print("remove");
	}
	@Override
	public void attributeReplaced(ServletRequestAttributeEvent  fsbe){
		system.out.print("replace");
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_42603009/article/details/87213200
今日推荐