`
hrtc
  • 浏览: 54623 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java servletfilter实现全站动转静

    博客分类:
  • web
阅读更多

原理及特点

特点:大小仅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为完整源码。

 

分享到:
评论
6 楼 ry.china 2010-07-29  
想问下,如果有的页面需要登录的情况下,该怎么处理呢,我是说怎么保存会话状态到请求中呢, 目前这样生成的页面如果没有登录那么有的地方生成的页面就不对了
5 楼 hrtc 2008-11-29  
axu20 写道

你好,我现在用的是struts2框架,我们的跳转是通过action跳转的。
http://localhost:8080/xxx/xxxAction!xxx.dhtml
都是这样连接方式。请问如何处理啊。

我在过滤器上加了一个这样的过滤方式,可是似乎不没有效果啊。
&lt;filter-mapping&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;filter-name&gt;Dynamic2StaticFilter&lt;/filter-name&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;&nbsp;
&nbsp;&nbsp;&nbsp; &lt;/filter-mapping&gt;
&lt;filter-mapping&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;filter-name&gt;Dynamic2StaticFilter&lt;/filter-name&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;*.dhtml&lt;/url-pattern&gt;&nbsp;
&lt;/filter-mapping&gt;&nbsp;&nbsp;&nbsp;
意思就是说。我即要对jsp结尾的多虑,同时又要对dhtml结尾的过滤。

是的
4 楼 axu20 2008-11-25  
你好,我现在用的是struts2框架,我们的跳转是通过action跳转的。
http://localhost:8080/xxx/xxxAction!xxx.dhtml
都是这样连接方式。请问如何处理啊。

我在过滤器上加了一个这样的过滤方式,可是似乎不没有效果啊。
<filter-mapping> 
        <filter-name>Dynamic2StaticFilter</filter-name> 
        <url-pattern>*.jsp</url-pattern> 
    </filter-mapping>
<filter-mapping> 
        <filter-name>Dynamic2StaticFilter</filter-name> 
        <url-pattern>*.dhtml</url-pattern> 
</filter-mapping>   
意思就是说。我即要对jsp结尾的多虑,同时又要对dhtml结尾的过滤。
3 楼 hrtc 2008-06-30  
另外生成是用另一线程做的,所以不会影响当前请求。
2 楼 hrtc 2008-06-30  
看你的页面访问率决定如何设置了,比如说生成时间设成1分钟,那么1分钟里只会生成1次,1分钟访问10次的话可以节省9次的时间多一次生成时间,另外采用被动生成策略(访问时才生成),所以把生成过程平均化了,个人认为比一下子全部网页转成静态效率高,而且生成频率相对也能调得更低些,因为全部生成的话要花很多时间。效率的话你自己试下就知道了。
1 楼 goaling 2008-06-29  
都在过滤器里 效率高吗

相关推荐

    采用Servlet+Mvc模式实现学生管理系统

    在IT行业中,构建Web应用程序是常见的任务之一,而"Servlet+Mvc模式实现学生管理系统"是一个典型的案例,它展示了如何利用Java技术栈来设计一个简单的管理应用。在这个项目中,我们主要涉及了三个核心技术:Servlet...

    javaweb全站请求编码过滤器

    在Java Web开发中,"全站请求编码过滤器"是一个至关重要的组件,它确保了所有来自客户端的请求数据(如表单提交、URL参数等)能够正确地被解码为服务器端可理解的格式,避免因为字符编码问题导致的数据乱码。...

    B站韩顺平2011最细servlet笔记全

    "B站韩顺平2011最细servlet笔记全"是韩顺平老师在2011年发布的关于Servlet的详细学习资料,涵盖了Servlet的基础到高级应用,是学习Servlet的宝贵资源。 Servlet主要知识点包括: 1. **Servlet基础**:了解Servlet...

    Servlet-1-filter-3.rar

    下面我们将深入探讨这两个核心概念以及如何实现全站防乱码控制。 首先,Servlet是Java平台上的一个标准接口,它允许开发者扩展Web服务器的功能。Servlet可以接收并响应来自客户端(通常是浏览器)的HTTP请求,然后...

    基于Servlet的图书馆管理系统

    Servlet可以配合过滤器(Filter)进行输入验证和输出编码,以增强安全性。 9. **性能优化**:通过缓存策略、连接池、负载均衡等手段,可以提高系统的响应速度和并发处理能力。 10. **部署与配置**:系统最终会被...

    java及javaweb编程教程、ssm、商城实战项目、how2j网站的全站教程、包含从前端到后端全栈技术

    非常优秀的java及javaweb教程,how2j全站教程,包括java基础、java初级、java高级、java应用、前端技术,包括html、css、JavaScript、HTML DOM、json、ajax、jquery、bootstrap、vue.js、node.js、webpack、chartjs...

    Tomcat与Java Web开发技术详解

    Tomcat是Apache软件基金会的一个开源项目,它是Java Servlet和JavaServer Pages(JSP)的实现,广泛用于构建和部署动态Web应用程序。Tomcat以其轻量级、高效和易于管理的特性,成为许多开发者的首选Java应用服务器。...

    JavaEE Filter全局编码过滤器

    1. **定义Filter类**:首先,你需要创建一个实现`javax.servlet.Filter`接口的类。在这个类中,你需要重写`doFilter`方法,这是Filter的核心逻辑所在。 2. **配置Filter**:在Web应用的`web.xml`配置文件中,你需要...

    Java Web从入门到精通_PPT

    7. **Filter和Listener**:Filter用于拦截请求和响应,实现预处理或后处理功能;Listener可以监听Web应用中的特定事件。 8. **JSP标签库**:例如JSTL(JavaServer Pages Standard Tag Library),简化了JSP页面的...

    java 博奥在线报名系统

    8. **安全性与权限控制**:通过使用Java的安全组件,如Servlet Filter和Spring Security,系统能够实现用户权限控制,防止未授权访问和恶意攻击。 9. **用户体验优化**:为了提供良好的用户体验,系统可能还包含了...

    JAVA+JSP程序系统的JSP聊天室

    - **Servlet Filter**:可能用于拦截和处理请求,例如登录验证、权限控制等。 - **Session管理**:跟踪用户状态,确保消息正确发送给对应用户。 - **线程安全**:多用户同时在线聊天,需要处理并发问题,保证数据...

    Servlet3.1规范(最终版)(中英双版本)

    7. **安全改进**:Servlet 3.1增加了对HTTP Strict Transport Security (HSTS)和Content Security Policy (CSP)的支持,帮助开发者实现更强大的安全策略,防范跨站脚本攻击(XSS)和中间人攻击。 8. **生命周期管理**...

    Filter过滤器的代码及其web.xml配置代码

    在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定的任务,比如防止跨站脚本攻击(XSS)、处理字符编码问题、实现权限控制等。在这个主题中,我们将深入理解Filter的...

    Java web 应用与开发教程 课件

    6. **过滤器(Filter)与监听器(Listener)**:这两者是Java Web中的重要组件,过滤器可以拦截请求和响应,实现数据预处理或后处理;监听器则可以监听Web容器中的事件,如会话创建、销毁等。 7. **Java Web安全**...

Global site tag (gtag.js) - Google Analytics