上一篇关于Listener理解成监听信息,那么Valve就是用来过滤信息用的,而最简单以及朴实无华的Valve非org.apache.catalina.valves.AccessLogValve莫属。
AccessLogValve的类图设计
自定义的Valve
首先查看下实现ValveBase接口的Valve
设计一个固定的ip和地址才能进来valve,如果按照传统方式有一下几种合适的方案
1.可能是在apache、nginx上进行拦截,确实这种方式最容易
2.类似的struts2、springMVC提供这种ip拦截的方案
今天我提供额外的方式,其实只是提供好玩的想法,具体用Vavle能够在那些方面,仁者见仁、智者见智。
Tomcat的valve的设计模式就是采用责任链模式,挺好用的设计模式。
import java.io.IOException; import java.util.regex.Pattern; import javax.servlet.ServletException; import org.apache.catalina.connector.Request; import org.apache.catalina.connector.Response; import org.apache.catalina.valves.RequestFilterValve; public final class EwellBlockAccessByPathValve extends RequestFilterValve { private String path; private Pattern[] paths; @Override public String getInfo() { return info; } public String getPath() { return path; } public void setPath(String path) { paths = precalculate(path); this.path = path; } @Override public void invoke(Request request, Response response) throws IOException, ServletException { System.out.println("---------------EwellBlockAccessByPathValve-----------------"); String remoteAddr = request.getRemoteAddr(); String requestedPath = request.getRequestURI(); boolean pathBlocked = false; getNext().invoke(request, response); } }
如何配置呢?类似的配置足矣!
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
配置完毕后,运行http://127.0.0.1:8080
相关推荐
Tomcat Valve使用sFlow( )实现日志记录。 目的是对大型Web群集进行连续,实时的监视。 sFlow机制允许使用sFlow高效的XDR编码UDP“推送”模型来报告URL事务的1-in-N随机样本,以及最重要计数器的定期快照。 可以...
Tomcat7支持通过Context元素的`<Valve>`标签动态添加阀门(Valves),这些阀门可以用于日志记录、访问控制等。此外,它还加强了对HTTPS的支持,提供了更灵活的错误页面处理,并且支持部署目录结构的变化,使得应用...
Tomcat是一款广泛使用的开源Java Servlet容器,由Apache软件基金会开发。它实现了Java Servlet和JavaServer Pages(JSP)规范,为Web应用程序提供了一个轻量级、高性能的运行环境。Tomcat API是开发者理解和操作...
使用说明: 1、将zip解压出来的jar包放到tomcat的lib目录下. 2、修改tomcat/conf下的context.xml文件,示例如下: <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml <!-- ...
6. **连接器与管道**:Coyote连接器负责接收和发送网络数据,管道(Pipeline)则提供了灵活的处理链,允许自定义处理器(Valve)来扩展Tomcat的功能。 7. **部署与热部署**:Tomcat支持自动部署和热部署,只需将WAR...
【标题】"Tomcat7.0.42源码,eclipse直接使用" 【内容】: Tomcat7.0.42是Apache Tomcat服务器的一个版本,它是一个开源的Java Servlet容器,主要用于实现Java Servlet和JavaServer Pages(JSP)技术。这个版本的...
最后,书中可能还会涵盖一些高级主题,比如集成Spring框架、使用Tomcat Valve组件进行自定义处理,以及如何为Tomcat编写插件。这些内容对于有经验的开发者来说,可以进一步提升他们的技术水平。 总之,《Tomcat 8 ...
例如,通过调整`maxProcessors`可以控制处理线程的数量,以平衡资源使用和响应速度;`connectionTimeout`可以设置客户端无响应时的超时时间,防止资源被长时间占用。 总之,Tomcat的配置是一个细致且关键的工作,每...
2. **线程池管理**:Tomcat如何使用Executor(`Executor`接口和`ThreadPoolExecutor`实现)来管理线程,提高并发性能。 3. **会话管理**:Tomcat如何实现Session跟踪,包括Cookie、URL重写和基于数据库的持久化策略...
我们可以使用 Spring Boot 项目作为后端 API 服务器,而使用 Vue 作为前端应用程序。这种架构模式可以使我们的应用程序更加灵活和高效。 Tomcat 服务器的配置 Tomcat 服务器是 Apache 软件基金会开发的一个开源的 ...
4. **使用Tomcat的CORS Valve**:Tomcat 7.0.53及以上版本提供了CORS Valve,可以在server.xml的Host或Context元素中配置: ```xml <Valve className="org.apache.catalina.valves.CorsValve" ...
Tomcat-9.0-API 是针对Apache Tomcat 9.0版本的官方应用程序接口(API)文档,它提供了开发者们详细的技术指南,用于理解并使用Tomcat服务器的核心功能。Tomcat是一个广泛使用的开源Java Servlet容器,它实现了Java ...
然而,在使用 Tomcat 的过程中,开发者经常会遇到一些常见的问题,本文将列举一些常见的问题和解决方法,旨在帮助开发者更好地使用 Tomcat。 1. 如何加载一个属性文件? 加载属性文件是 Tomcat 中的一项常见操作,...
6. **扩展性**:通过Connector(连接器)和Valve(阀门)机制,Tomcat8可以轻松地与其他组件集成,例如实现负载均衡、安全控制等功能。 在实际开发中,为了确保Tomcat8在Windows上稳定运行,我们需要注意以下几点:...
此外,该网站也提供了相关的文档和技术支持,帮助开发者更好地理解和使用Tomcat。 #### 三、Tomcat源码价值 对于希望深入了解Tomcat内部机制或者定制化开发的开发者而言,研究其源码具有重要的意义: 1. **学习...
<Valve className="com.orangefunction.tomcat6.redissessions.RedisSessionHandlerValve"/> <Manager className="com.orangefunction.tomcat6.redissessions....
总的来说,Apache Tomcat 6.0是一款广泛使用的Java Web应用服务器,它以其轻量级、高效和开源的特性深受开发者喜爱。尽管现在最新的版本已经更新到Tomcat9,但Tomcat6.0仍然在许多旧项目中发挥作用,对于学习和理解...
10. **扩展性**:Tomcat可以通过添加Valve组件来扩展其功能,Valve是一个处理请求和响应的拦截器,可以用于日志记录、安全控制、性能监控等。 通过阅读《How Tomcat Works》的英文PDF文档和中文HTML翻译,可以系统...
- **Valve**:Valve是容器级别的扩展点,可以通过配置文件添加自定义逻辑到Tomcat的处理流程中。 ### 三、Tomcat内部机制 #### 3.1 启动过程 当启动Tomcat时,其核心组件会按照一定的顺序初始化并准备就绪: 1. *...