- 浏览: 220050 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (105)
- java (30)
- linux unix (19)
- 版本控制 (15)
- ajax (2)
- 开发工具及辅助工具 (3)
- database (2)
- flex (10)
- 其它 (2)
- windows (1)
- 开源企业应用 (6)
- 开源erp (4)
- 开源cms (0)
- 开源门户 (0)
- php (1)
- ofbiz&opentaps (4)
- 运维管理 (0)
- MOQUI (3)
- linux unix mysql (0)
- mysql (2)
- hadoop (3)
- android (0)
- 微信公众号 (1)
- java cassandra nosql (0)
- Nosql (1)
- socket (1)
- tcp (1)
- udp (1)
- 十六进制 (1)
- ofbiz (1)
- docker (1)
- 虚拟化 (0)
- 分布式 (0)
最新评论
-
w87848608:
用phpunit --coverage-html命令一样出现了 ...
关于phpunit与Selenium取coverage的配置(原创) -
surpass_li:
好久没来这了,不好意思,你参照Deploying OFBiz ...
ofibz10.04部署到 jboss5.1.0成功 -
tide2046:
求部署文档。谢谢。
ofibz10.04部署到 jboss5.1.0成功 -
Romotc:
征文 +1,1楼的方法还是有点问题。
eclipse编译时过滤SVN版本控制信息方法 -
我改名了:
谢谢,收 藏 了,备用。
Java获取客户端真实IP地址的两种方法(转)
关于改造动态网站为生成静态页的方案
<!----><!----> <!---->
url 重写的好处 :
<!---->一, <!---->可以方便的实现对化化引擎的优化,并且比生成静态 更加方便。
<!---->二, <!---->占空间比较小。
<!---->三, <!---->首页每天都自动变化,不用维护。
1. 通过urlrewrite 进行静态页生成及缓存. http://tuckey.org/urlrewrite/ 下载.
2. 添加urlrewrite.xml配置文件到webroot/WEB-INF/下;添加urlrewrite-XXX.jar到webroot/WEB-INF/lib下;
3. 修改urlrewrite.xml为
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
"http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
<urlrewrite>
<rule>
<from>^/index.html$</from>
<to>/index.jsp</to>
</rule>
<rule>
<from>^/product/detail-([0-9]+)\.html$</from>
<to>/controler/PageControler?param=chan1=$1&page=productDetail.do</to>
</rule>
<rule>
<from>^/catalog/list-p-([0-9]+)-([0-9]+)\.html$</from>
<to>/controler/PageControler?param=cataId=$1_cur=$2&page=productCatalogList.do</to>
</rule>
<outbound-rule>
<from>/index.jsp</from>
<to>index.html</to>
</outbound-rule>
</urlrewrite>
关于urlrewrite的配置参见urlrewrite相关doc.
4. 新建过滤器HtmlCatchFilter用来检查静态页
import java.io.File;
import java.io.IOException;
import java.util.Date;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class HtmlCatchFilter implements Filter {
// 定义公用变量
public final static String staticRootUrl = "/WEB-INF/staticdoc/";
public final static String webroot = "D:/webroot";
public final static long overtime = 1000 * 60;// 一分钟为过期时间
public void destroy() {
System.out.println(getClass().getName() + " destroy!");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println(getClass().getName() + " doFilter!");
String param = request.getParameter("param");
System.out.println("参数集合:" + param);
String page = request.getParameter("page");
String newUrl = page + "_" + param + ".html";
File file = new File(webroot + staticRootUrl + newUrl);
if (file.exists()) {
System.out.print("文件最后修改时间:");
System.out.println(new Date(file.lastModified()));
long lastModified = file.lastModified();
long currently = System.currentTimeMillis();
System.out.println(new Date(currently));
System.out.println("lastModified:" + lastModified + "|currently:"
+ currently + "|时间差:" + (currently - lastModified));
if (currently - lastModified > overtime) {
System.out.println("静态文件" + newUrl
+ "过期!转到PageControlerServlet进行生成");
chain.doFilter(request, response);
}
System.out.println("静态文件存在,并且是可用的,转到静态文件" + staticRootUrl + newUrl);
request.getRequestDispatcher(staticRootUrl + newUrl).forward(
request, response);
} else {
System.out.println("静态文件" + newUrl
+ "不存在!转到PageControlerServlet进行生成");
chain.doFilter(request, response);
}
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println(getClass().getName() + " init!");
}
}
5. 新建servlet,用来生成静态页.
PageControlerServlet.java
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class PageControlerServlet implements Servlet {
public void destroy() {
System.out.println(getClass().getName() + " destroy");
}
public ServletConfig getServletConfig() {
System.out.println(getClass().getName() + " getServletConfig");
return null;
}
public String getServletInfo() {
System.out.println(getClass().getName() + " getServletInfo");
return null;
}
public void init(ServletConfig arg0) throws ServletException {
System.out.println(getClass().getName() + " init");
}
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
System.out.println(getClass().getName() + " service");
System.out.println("param="+request.getParameter("param"));
//通过此servlet来进行静态文件的生成和有效性检查.
System.out.println("=======进行生成静态文件处理,生成结束并转到静态页");
String param = request.getParameter("param");
System.out.println("参数集合:" + param);
String page = request.getParameter("page");
String newUrl = page +"_"+param+".html";
String newFileName = HtmlCatchFilter.webroot+HtmlCatchFilter.staticRootUrl+newUrl;
String str = "生成的新的静太文件内容";
String params = param.replace('_', '&');
System.out.println("请求动态参数:"+params);
str = str + "请求:"+page+"?"+params+"取得页面内容";
FileOutputStream fos = new FileOutputStream(newFileName);
Writer out = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(out);
// 将字符串写入文件
bw.write(str);
bw.flush();// 将数据更新至文件
fos.close();// 关闭文件流
System.out.println("生成新的文件结束,并转向静态文件!");
request.getRequestDispatcher(HtmlCatchFilter.staticRootUrl+newUrl).forward(request, response);
}
}
6. 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<!-- UrlRewriteFilter config start -->
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<!-- UrlRewriteFilter config end -->
<!-- HtmlCacheFilter config start -->
<filter>
<filter-name>HtmlCacheFilter</filter-name>
<filter-class>HtmlCatchFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HtmlCacheFilter</filter-name>
<url-pattern>/controler/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<!-- HtmlCacheFilter config end -->
<servlet>
<servlet-name>PageControlerServlet</servlet-name>
<servlet-class>PageControlerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PageControlerServlet</servlet-name>
<url-pattern>/controler/PageControler</url-pattern>
</servlet-mapping>
</web-app>
7. 测试;
访问http://localhost/catalog/list-p-1-2.html 在/WEB-INF/staticdoc/目录下生成productCatalogList.do_cataId=1_cur=2.html 静态文件,扩展上边demo可以改造成生成目录和文件过期时间可配的.来实现改造现有网站的静态化方案.
评论
在传递过滤器链之后return,让PageControlerServlet重新生成静态文件
发表评论
-
在ofbiz框架中实现https双向认证(笔记)
2016-04-08 10:16 394ofbiz默认的配置文件中没有提供服务端信任的证书配置项, ... -
hadoop2.4在windows7搭建单节点环境的简要介绍
2014-05-27 16:18 834本文参照 hadoop2.2在window7上搭建单节点 ... -
关于ofbiz 集成urlrewritefilter实现url 伪静态化
2013-03-19 12:52 1635关于ofbiz 集成urlrewritefilter实现ur ... -
hadoop学习笔记(动态删除节点)
2012-09-19 13:41 897在hadoop集群环境下需要将两台datanode删除,为了不 ... -
CentOS系统安装Tomcat切换JDK的方法
2011-10-14 09:38 1060CentOS系统安装Tomcat切换JDK的方法 ... -
一个从字符串中提取金额的正则表达式
2011-05-19 15:44 2027一个从字符串中提取金额的正则表达式,初 ... -
tomcat远程调试 方法1:适用于tomcat6 修改startup.bat 在尾部修改成以下列方式启动 set JPDA_ADDRESS=8000 se
2011-01-05 12:37 1420tomcat 6 远程调试 ... -
Hadoop学习笔记二 安装部署
2010-07-14 11:22 689原文 http://www.cnblogs.com ... -
Hadoop学习笔记一 简要介绍
2010-07-14 11:21 690这里先大致介绍一下Hadoop. 本文大部分内容都 ... -
Java获取客户端真实IP地址的两种方法(转)
2010-05-14 15:04 1158在JSP里,获取客户端的IP地址的方法是:request.ge ... -
20款开源搜索引擎系统
2010-04-16 19:32 1156一些开源搜索引擎系统介绍,包含开源Web搜索引擎和开源桌面搜索 ... -
在JasperReport报表中加入大写金额(笔记)
2010-04-14 09:06 2548摘自 http://www.blogjava.net/hisp ... -
jdk工具keytool和jarsigner帮助Part2(转)
2010-01-08 12:46 2077jdk工具keytool和jarsigner帮 ... -
jdk工具keytool和jarsigner帮助Part1
2010-01-08 12:41 1541jdk工具keytool和jarsigner帮 ... -
JPA 批注参考 (转载)
2009-03-30 13:27 940JPA批注参考 1 JPA 批 ... -
jsp生成验证码
2008-01-15 15:27 831<%@ page contentType="i ... -
tomcat下配置使用awstats笔记
2008-01-10 11:43 4513tomcat下配置使用awstats笔记 1。环境 使用的 ... -
ip地址与Long型数据进行相互转换
2007-12-04 23:17 4403/** * 根据ip地址计算出long型的数据 * @ ... -
java对象初始化过程(转)
2007-04-22 22:57 1288java new 一个实例时候,对象初始化过程 1.父类 st ... -
java 中 Hashtable 排序 (转)
2007-04-10 22:41 4698import java.util.Arrays; import ...
相关推荐
ssh2中的urlrewrite和Struts2的生成静态页面
利用UrlRewrite,asp.net动态生成htm页面
通过UrlRewrite组件实现url重写,可以优化url,对搜索引擎友好,被收录质量高等好处。
3 最重要的 在象Google Yahoo 和 Live 这样的搜索引擎中提高你网站上网页的搜索相关性 具体来说 URL重写经常能使你在你网站上">什么是UrlRewrite UrlRewrite 是 将动态页面转换为静态页面的一种技术 例如 您网站...
利用UrlRewrite,asp.net动态生成htm页面 ~~~~~~~~~~~~~~
描 述:UrlReWrite(Url重写或伪静态)完美示例源码 UrlReWrite(Url重写或伪静态)完美示例源码,已利用ActionlessForm解决原始地址form回传的问题 例如:/products.aspx?category=books 转换为/products/Books....
UrlReWrite(Url重写或伪静态)UrlReWrite(Url重写或伪静态)
二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL 三:更有利于搜索引擎的收入,通过对URL的一些优化,使搜索引擎更好的识别与收录网站的信息.
一个很简单的使用urlrewrite实现静态页面的实现,只要把该文件解压后直接导入到eclipse里就行了,或者直接把WEB下的文件拷到TOMCAT的ROOT下去,即可运行。
本例把它命名为:UrlRewrite,在创建的时候,选择勾选“Add JSTL libraries to WEB-INF/lib folder ”(注:因为项目中会用到jstl 核心标签库),然后再把urlrewrite-2.6.0.jar导入到项目Bulid Path路径下,最后再加入...
用urlrewrite实现的asp.net 网站的伪静态
Rewrite实现网站伪静态 http://www.aygqw.com
asp net UrlReWrite Url重写或伪静态 完美示例源码
Url Rewrite 实现jsp页面伪静态化_凌风_.doc
IIS中使用的伪静态组件 Url Rewrite伪静态组件
使用URL Rewrite实现网站的伪静态实例,包括urlrewritefilter-4.0.3.jar
URLRewrite.dll 包含程序集:URLRewrite.dll 与一个源码示例程序。 更好帮助大家学习。
urlrewrite,开发中实现页面伪静态的效果。
urlrewrite,实现伪静态页面,UrlRewrite技术隐藏实现细节,这样修改移植都很方便,而且完全不损失pagerank