原理及特点
特点:大小仅9k,没有用额外包,jdk1.4环境开发通用性强,配置简单
原理:利用filter拦截请求的jsp,如已生成静态页面且没到刷新时间则重定向静态页面,否则生成静态页面。
* 生成策略:当前时间与上次修改时间的差值大于间隔时间则重新生成
* 定向策略:如果是拦截的页面并且已经生成静态页面则重定向到静态页面
* 静态页面文件名生成策略:源文件名+参数的md5码
配置方法
1.引入所需包(见附件dynamictostatic_0.8.jar)
2.web.xml里配置filter,如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>Dynamic2StaticFilter</filter-name>
<filter-class>com.hrtc.d2s.Dynamic2StaticFilter</filter-class>
<init-param>
<description>刷新频率单位秒</description>
<param-name>refresh_time</param-name>
<param-value>600</param-value>
</init-param>
<init-param>
<description>生成静态页面线程池大小</description>
<param-name>threadsize</param-name>
<param-value>10</param-value>
</init-param>
<init-param>
<description>输出流缓存大小单位字节</description>
<param-name>buffersize</param-name>
<param-value>8192</param-value>
</init-param>
<init-param>
<description>生成的页面存放于相对于应用根路径</description>
<param-name>static_folder</param-name>
<param-value>/html</param-value>
</init-param>
<init-param>
<description>静态文件扩展名</description>
<param-name>static_extend_name</param-name>
<param-value>.html</param-value>
</init-param>
<init-param>
<description>临时文件扩展名</description>
<param-name>temp_extend_name</param-name>
<param-value>.temp</param-value>
</init-param>
<init-param>
<description>http head参数名</description>
<param-name>request_head_name</param-name>
<param-value>requesttype</param-value>
</init-param>
<init-param>
<description>http head参数值</description>
<param-name>request_head_value</param-name>
<param-value>download</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Dynamic2StaticFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
配置完毕,随便访问你网站的页面看效果吧。
这是今天自己想到的方法,与大家互相学习一下,希望大家能提出改进意见。
源码见附件,在windows平台上开发,dynamictostatic.rar为完整源码。
分享到:
相关推荐
在IT行业中,构建Web应用程序是常见的任务之一,而"Servlet+Mvc模式实现学生管理系统"是一个典型的案例,它展示了如何利用Java技术栈来设计一个简单的管理应用。在这个项目中,我们主要涉及了三个核心技术:Servlet...
在Java Web开发中,"全站请求编码过滤器"是一个至关重要的组件,它确保了所有来自客户端的请求数据(如表单提交、URL参数等)能够正确地被解码为服务器端可理解的格式,避免因为字符编码问题导致的数据乱码。...
"B站韩顺平2011最细servlet笔记全"是韩顺平老师在2011年发布的关于Servlet的详细学习资料,涵盖了Servlet的基础到高级应用,是学习Servlet的宝贵资源。 Servlet主要知识点包括: 1. **Servlet基础**:了解Servlet...
下面我们将深入探讨这两个核心概念以及如何实现全站防乱码控制。 首先,Servlet是Java平台上的一个标准接口,它允许开发者扩展Web服务器的功能。Servlet可以接收并响应来自客户端(通常是浏览器)的HTTP请求,然后...
Servlet可以配合过滤器(Filter)进行输入验证和输出编码,以增强安全性。 9. **性能优化**:通过缓存策略、连接池、负载均衡等手段,可以提高系统的响应速度和并发处理能力。 10. **部署与配置**:系统最终会被...
非常优秀的java及javaweb教程,how2j全站教程,包括java基础、java初级、java高级、java应用、前端技术,包括html、css、JavaScript、HTML DOM、json、ajax、jquery、bootstrap、vue.js、node.js、webpack、chartjs...
Tomcat是Apache软件基金会的一个开源项目,它是Java Servlet和JavaServer Pages(JSP)的实现,广泛用于构建和部署动态Web应用程序。Tomcat以其轻量级、高效和易于管理的特性,成为许多开发者的首选Java应用服务器。...
1. **定义Filter类**:首先,你需要创建一个实现`javax.servlet.Filter`接口的类。在这个类中,你需要重写`doFilter`方法,这是Filter的核心逻辑所在。 2. **配置Filter**:在Web应用的`web.xml`配置文件中,你需要...
7. **Filter和Listener**:Filter用于拦截请求和响应,实现预处理或后处理功能;Listener可以监听Web应用中的特定事件。 8. **JSP标签库**:例如JSTL(JavaServer Pages Standard Tag Library),简化了JSP页面的...
8. **安全性与权限控制**:通过使用Java的安全组件,如Servlet Filter和Spring Security,系统能够实现用户权限控制,防止未授权访问和恶意攻击。 9. **用户体验优化**:为了提供良好的用户体验,系统可能还包含了...
- **Servlet Filter**:可能用于拦截和处理请求,例如登录验证、权限控制等。 - **Session管理**:跟踪用户状态,确保消息正确发送给对应用户。 - **线程安全**:多用户同时在线聊天,需要处理并发问题,保证数据...
7. **安全改进**:Servlet 3.1增加了对HTTP Strict Transport Security (HSTS)和Content Security Policy (CSP)的支持,帮助开发者实现更强大的安全策略,防范跨站脚本攻击(XSS)和中间人攻击。 8. **生命周期管理**...
在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定的任务,比如防止跨站脚本攻击(XSS)、处理字符编码问题、实现权限控制等。在这个主题中,我们将深入理解Filter的...
6. **过滤器(Filter)与监听器(Listener)**:这两者是Java Web中的重要组件,过滤器可以拦截请求和响应,实现数据预处理或后处理;监听器则可以监听Web容器中的事件,如会话创建、销毁等。 7. **Java Web安全**...