概述
一、Java过滤器:
1、 在Java Web中,在传入的request、response提前过滤掉一些信息、提前设置一些参数、统一设置字符集、控制是否登录等,然后在传入Servlet等中进行处理。
2、Filter链: 一个Web应用中,可以编写多个Filter,这些Filter组合起来称之为一个Filter链。Web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter。
3、 当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。在doFilter方法中,开发人员如果调用了FilterChain对象的doFilter方法,则web服务器会检FilterChain对象中是否还有filter,如果有,则调用第2个filter,如果没有,则调用目标资源。
Java Web中过滤器(filter)编写示例
二、SpringMVC拦截器:
1、 拦截器是面向切面编程的,依赖的技术就是Java的动态代理。(拦截器是被包裹在过滤器之中的)
**2、拦截器栈:**就是将拦截器按一定的顺序联结成一条链。
在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前(xml)定义的顺序被调用。
三、过滤器和拦截器的区别:
1、 拦截器是基于java的反射机制的,而过滤器是基于函数回调。
2、 过滤器依赖Servlet容器,而拦截器不依赖Servlet容器。
3、 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用(如 .js、.css等)。
4、 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
5、 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
6、 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。
备注:
**action:**Action类是用户请求和业务逻辑之间的桥梁,是MVC模式中Controller层。
执行顺序 : 过滤前 --> 拦截前 --> Action处理 --> 拦截后 --> 过滤后
过滤是一个横向的过程:
1、 首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理)。
2、 过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理。
3、 接着把处理后的数据发给对应的Action。
4、 Action处理完成返回后,拦截器还可以做其他过程。
5、 最后再向上返回到过滤器的后续操作。
备注:相关电子书中介绍
四、Java监听器(转):
1、 Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。
2、 主要作用是:做一些初始化的内容添加工作、设置一些基本的内容(比如一些参数或者是一些固定的对象等)。
Java代码:
package com.lzw.filter.demo;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class InitDataListener implements ServletContextListener {
private static ServletContext servletContext;
public static ServletContext getServletContext() {
return servletContext;
}
@Override
public void contextInitialized(ServletContextEvent contextEvent) {
servletContext = contextEvent.getServletContext();
//final ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
System.out.println("服务器启动完毕!");
System.out.println(servletContext);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {}
}
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">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>com.lzw.filter.demo.InitDataListener</listener-class>
</listener>
</web-app>
控制台结果:
信息: Starting service Catalina
2013-10-31 15:13:55 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/7.0.42
服务器启动完毕!
org.apache.catalina.core.ApplicationContextFacade@7966340c
2013-10-31 15:13:56 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-apr-8080"]
2013-10-31 15:13:56 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-apr-8009"]
2013-10-31 15:13:56 org.apache.catalina.startup.Catalina start
信息: Server startup in 402 ms
最后
以上就是潇洒睫毛为你收集整理的mycat Mycat监控工具的全部内容,希望文章能够帮你解决mycat Mycat监控工具所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复