- 浏览: 226059 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (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 457ofbiz默认的配置文件中没有提供服务端信任的证书配置项, ... -
hadoop2.4在windows7搭建单节点环境的简要介绍
2014-05-27 16:18 901本文参照 hadoop2.2在window7上搭建单节点 ... -
关于ofbiz 集成urlrewritefilter实现url 伪静态化
2013-03-19 12:52 1744关于ofbiz 集成urlrewritefilter实现ur ... -
hadoop学习笔记(动态删除节点)
2012-09-19 13:41 1017在hadoop集群环境下需要将两台datanode删除,为了不 ... -
CentOS系统安装Tomcat切换JDK的方法
2011-10-14 09:38 1118CentOS系统安装Tomcat切换JDK的方法 ... -
一个从字符串中提取金额的正则表达式
2011-05-19 15:44 2108一个从字符串中提取金额的正则表达式,初 ... -
tomcat远程调试 方法1:适用于tomcat6 修改startup.bat 在尾部修改成以下列方式启动 set JPDA_ADDRESS=8000 se
2011-01-05 12:37 1474tomcat 6 远程调试 ... -
Hadoop学习笔记二 安装部署
2010-07-14 11:22 733原文 http://www.cnblogs.com ... -
Hadoop学习笔记一 简要介绍
2010-07-14 11:21 750这里先大致介绍一下Hadoop. 本文大部分内容都 ... -
Java获取客户端真实IP地址的两种方法(转)
2010-05-14 15:04 1210在JSP里,获取客户端的IP地址的方法是:request.ge ... -
20款开源搜索引擎系统
2010-04-16 19:32 1218一些开源搜索引擎系统介绍,包含开源Web搜索引擎和开源桌面搜索 ... -
在JasperReport报表中加入大写金额(笔记)
2010-04-14 09:06 2628摘自 http://www.blogjava.net/hisp ... -
jdk工具keytool和jarsigner帮助Part2(转)
2010-01-08 12:46 2138jdk工具keytool和jarsigner帮 ... -
jdk工具keytool和jarsigner帮助Part1
2010-01-08 12:41 1590jdk工具keytool和jarsigner帮 ... -
JPA 批注参考 (转载)
2009-03-30 13:27 1007JPA批注参考 1 JPA 批 ... -
jsp生成验证码
2008-01-15 15:27 876<%@ page contentType="i ... -
tomcat下配置使用awstats笔记
2008-01-10 11:43 4553tomcat下配置使用awstats笔记 1。环境 使用的 ... -
ip地址与Long型数据进行相互转换
2007-12-04 23:17 4488/** * 根据ip地址计算出long型的数据 * @ ... -
java对象初始化过程(转)
2007-04-22 22:57 1350java new 一个实例时候,对象初始化过程 1.父类 st ... -
java 中 Hashtable 排序 (转)
2007-04-10 22:41 4741import java.util.Arrays; import ...
相关推荐
这通常通过Apache的mod_rewrite模块或者Java的Filter实现,将请求从动态路径转向静态文件。 5. **缓存策略**:生成的静态页应当设置合适的缓存策略,比如HTTP头中的Cache-Control和Expires字段,以充分利用浏览器的...
- **URLRewrite实现URL伪静态化**:通过URLRewrite工具,可以改变URL的展示形式,使其看起来像静态页面,但实际仍由动态页面处理。这种方法并不真正生成静态文件,但在用户看来,URL更简洁,更像静态页面。 4. **...
静态URL(Static URL)是指一种网站页面的访问路径设计模式,其目的是使网站的URL更加简洁、易于记忆,并有助于提升用户体验和搜索引擎优化(SEO)。在互联网中,我们常见的以`.html`或者`.htm`结尾的URL,实际上很...
URL伪静态是网站优化的一个重要技术手段,它主要应用于动态网站,使得原本的动态URL展现为静态页面的格式,从而提高用户体验,优化搜索引擎的抓取效率。本资料"jsp实现URL伪静态.rar"将详细介绍如何在JSP环境下实现...
Java/JSP网站实现伪静态是一种优化网站性能和搜索引擎优化(SEO)的方法,它将动态页面的URL转换为静态或看似静态的格式,如.html。这样做可以提高网站的加载速度,减少服务器负担,并使搜索引擎更容易抓取和理解...
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>...
伪静态技术是一种通过URL重写技术将动态网页的URL转换为静态或看似静态的URL形式,从而提高搜索引擎友好性和用户体验。对于IIS6来说,实现伪静态主要依赖于ISAPI筛选器或HTTP模块,如Microsoft的URL Rewrite Module...
使用spring+springmvc框架 ...使用了urlrewrite filter进行地址重写,实现伪静态页面 使用了sitemesh对网页进行布局和修饰 使用了loginFilter对访问进行登录过滤 使用了CheckCodeServlet生成验证码图片
要实现在URL中通过尺寸参数动态生成缩略图,可以在`server`上下文中添加如下配置: ```nginx location ~* /img/(.+)_(\d+)x(\d+).(jpg|gif|png)$ { set $h $2; set $w $3; if ($h = "0") { rewrite /img/...
3. 正则表达式:正则表达式在伪静态中扮演关键角色,用于匹配和解析URL,实现动态URL到静态URL的映射。掌握正则表达式能够让你更好地定制和优化URL规则。 通过以上方法,可以有效地优化网页的加载速度,提高搜索...
这些规则通常以正则表达式为基础,能够灵活地匹配和转换URL,使得动态生成的网页可以展现出静态化的、更友好的格式,同时也能帮助提高搜索引擎优化(SEO)的效果。 例如,你可以使用IIRF来将一个复杂的查询字符串...
通过修改此文件,可以设置规则将动态URL转化为静态形式,从而提高网站性能并有利于SEO。 3. `Iirf.ini`:这可能是一个IIRF(Internet Information Server URL Rewrite Filter)配置文件,与`.htaccess`类似,用于...
这款软件的主要目标是允许管理员对网站的URL进行重写和路由,以及执行高级访问控制策略,而无需购买商业解决方案,如ISAPI_Rewrite3的免费版。 **URL重写** URL重写是网站优化和管理的关键技术之一,它允许你将复杂...
- URL重写规则:通过rewrite指令实现URL的动态转换,优化SEO或实现路径映射。 - 访问控制:基于IP、用户代理、基本认证等方式限制访问权限。 6. **日志管理** - 日志格式定制:自定义Nginx的日志格式,方便进行...
3. **URL重写**:借助`rewrite`规则进行URL转换,实现动态路由。 4. **SSL/TLS**:配置SSL证书,启用HTTPS,保护数据传输安全。 5. **限速与限流**:使用`limit_rate`和`limit_conn`限制客户端的请求速率和连接数,...
4. **缓存功能**:Nginx支持静态文件缓存,减少对源服务器的请求,提高响应速度。 ### 安装Nginx 1.25.1 on Linux 在Linux系统中,通常通过包管理器(如`apt`或`yum`)安装Nginx,但为了获取最新版本,我们可能...
Rewrite规则和Redirect重定向用于控制URL的处理和访问重定向。自动添加目录斜线用于处理不规范的URL访问请求。Location指令用于配置请求的路由规则,它定义了Nginx如何处理进入的HTTP请求。expires指令可以控制HTTP...
Nginx的过滤器机制允许在响应生成过程中进行数据处理,例如压缩、缓存等。`ngx_http_filter_module`是基础过滤器模块,其他模块可以在此基础上添加过滤功能。 通过对Nginx开源代码的学习,开发者可以掌握网络编程...