产生背景
静态网页与动态网页比较:
静态网页:
优点: A 、 对搜索引擎友好,被收录的质量高; B 、访问速度快; C 、资源( cpu 等)占用少。
缺点: A 、对于大型门户,或者社区来说,不断的修改将会产生大量 I/O 。 B 、储存空间占用会多一些。
动态网页:
优点:相对于静态,它的劣势也就是动态的优势所在——占用空间少,对硬盘友好。
缺点: A 、对搜索引擎不友好。搜索引擎会不收录带问号的网址 ? 因为搜索引擎怕由于问号而进入死循环。B 、高并发时资源占用较多。
二、伪静态作用
1 、提高安全性,可以有效的避免一些参数名、 ID 等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个 404 或错误页面,这比直接返回 500 或一大堆服务器错误信息要好的多
2 、美化 URL ,去除了那些比如 *.do 之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的 URL
3 、更有利于搜索引擎的收入,通过对 URL 的一些优化,可以使搜索引擎更好的识别与收录网站的信息
三、 Java 伪静态实现方式
Java 上主要使用 urlRewrite ,下载地址 http://www.tuckey.org/urlrewrite/ ,从单词字面意义上可以发现就是对URL 进行重写,用户得到的全部都是经过处理后的 URL 地址。其具体实现步骤如下:
1、 下载 urlrewrite 的 jar 包,并复制到项目中去;
2、 在 web.xml 中配置过滤器
- <!-- 伪静态过滤器注册 -->
- <filter>
- <filter-name>UrlRewriteFilter</filter-name>
- <filter-class>
- org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
- </filter-class>
- <init-param>
- <param-name>logLevel</param-name>
- <param-value>WARN</param-value>
- </init-param>
- <!-- 这里配置urlrewrite.xml文件的地址,如果和web.xml同在WEB-INF下则不需配置此项 -->
- <init-param>
- <param-name>confPath</param-name>
- <param-value>/WEB-INF/classes/urlrewrite.xml</param-value>
- </init-param>
- </filter>
- <!-- 伪静态过滤器映射-->
- <filter-mapping>
- <filter-name>UrlRewriteFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
3 、编写 urlrewrite.xml 伪静态化的规则文件,这个文件我们可以从下载网址上下载下来,然后进行修改,这里以 Struts2 的 Action 跳转为例:
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN" "http://tuckey.org/res/dtds/urlrewrite3.1.dtd">
- <urlrewrite>
- <!-- 1、匹配一个参数的 -->
- <rule>
- <!-- /FileShare/myUpload/myUploadList/pageNo/1.html -->
- <from>^/([a-zA-Z]*)\/([a-zA-Z]*)\/([a-zA-Z]*)_((?:[a-zA-Z]+)|(?:[0-9]+)).html$</from>
- <to>/$1!$2.action?$3=$4</to>
- <!--
- <from>^/myUpload/myUploadList/pageNo/((?:[a-zA-Z]+)|(?:[0-9]+)).html$</from>
- <to>/myUpload!myUploadList.action?pageNo=$1</to>
- -->
- </rule>
- <!-- 2、匹配两个参数的 -->
- <rule>
- <from>^/([a-zA-Z]*)\/([a-zA-Z]*)\/([a-zA-Z]*)_((?:[a-zA-Z]+)|(?:[0-9]+))\/([a-zA-Z]*)_((?:[a-zA-Z]+)|(?:[0-9]+)).html$</from>
- <to>/$1!$2.action?$3=$4&$5=$6</to>
- </rule>
- <!-- ${applicationScope.basePath }/myUpload!myUploadList.action?pageNo=1 -->
- <!-- 1、匹配一个参数的 -->
- <outbound-rule>
- <from>^/([a-zA-Z]*)\/([a-zA-Z]*)!([a-zA-Z]*).action\?([a-zA-Z]*)=((?:[a-zA-Z]+)|(?:[0-9]+))$</from>
- <to>/$1/$2/$3/$4_$5.html</to>
- <!--
- <from>^/FileShare/myUpload!myUploadList.action\?pageNo=([0-9]+)$</from>
- <to>/FileShare/myUpload/myUploadList/page/$1.html</to>
- -->
- </outbound-rule>
- <!-- 2、匹配两个参数的 -->
- <outbound-rule>
- <from>^/([a-zA-Z]*)\/([a-zA-Z]*)!([a-zA-Z]*).action\?([a-zA-Z]*)=((?:[a-zA-Z]+)|(?:[0-9]+))&([a-zA-Z]*)=((?:[a-zA-Z]+)|(?:[0-9]+))$</from>
- <to>/$1/$2/$3/$4_$5/$6_$7.html</to>
- </outbound-rule>
- </urlrewrite>
说明:
1) 、 outbound-rule ,先说这个是因为在开发编写时,一般先写这部分然后再先 rule 的, outbound-rule 是将页面上的超链接选项地址转化为伪静态地址,这里需要注意的是页面中的超链接需要经过response.encodeUrl(url) 转化,或采用 <C:URL> 标签进行转化 ;
2) 、 outbound-rule 中的 from 表示页面上的地址, to 表示在网页上显示出来的伪静态地址;
3) 、 outbound-rule 中的 form 和 to 需要加上项目名称,而 rule 不需要的;
4) 、 rule 处理伪静态地址, form 包含通过正则表达式对请求进行匹配, to 即为实际的请求地址;
5) 、因为这里用到正则,所以需要注意转义: &=>& ?=>/? 等
6) 、 $1,$2 代表与你配置正规表达式 /(\w+)/(\w+)/ 相对应的参数。 <to type="forward"> 默认的是type="forward" 。另一个常用的规则就是连接外部的网站。就要用到。 <to type="redirect"> ;
7) 、 ^: 匹配字符串的开始, $ :匹配字符串的结束;
8) 、 ([a-zA-Z]*)\/([a-zA-Z]*) 中的“ \ ”表示转义;
其实上面的我们可以看出就是在设定一些规则(在编写正则的时候需要细心,编写正则时,可以在http://www.rubular.com/ 上进行验证),这和 Rest 风格的编程很类似,设计的规则越好,其展示出来的链接地址越直观,简洁。
4、 修改 jsp 页面上的地址(需要添加 jstl 相关的 jar : jstl.jar 、 standard.jar ):
一个参数的:
- <c:url value="/myUpload!myUploadList.action?pageNo=1" var="myUpload"></c:url>
- <li>
- <a href='${myUpload }' target="main">My Upload</a>
- </li>
两个参数的:
- <s:set name="id" value="id"></s:set>
- <s:set name="pageNo" value="pagination.getPageNo()"></s:set>
- <c:url value='/modifyUpload!entryModify.action?uploadFileId=${id}&pageNo=${pageNo }' var="modifyFileUrl" ></c:url>
- <a href='${modifyFileUrl }' target="main" >Edit</a>
相关推荐
### Url Rewrite Filter 实现页面伪静态化:详细步骤与实例解析 #### 一、引言 在现代Web开发中,为了提升用户体验、提高搜索引擎友好度以及优化网站结构,页面伪静态化成为了一种常见的技术手段。本文将详细介绍...
本框架为struts2+spring3+hibernate4+urlrewrite(伪静态地址) Struts采用通配,web-inf下的urlrewrite.xml为伪静态配置文件,跳转到struts.xml进行对应
- **实现静态化**:为了实现Struts2页面的静态化,可以自定义一个Freemarker Result Type,该类型负责读取模板文件并填充数据模型,然后将其内容输出到文件系统中,形成静态页面。 以下是一个简单的自定义...
【伪静态_URLRewrite实例解析】中的主要知识点集中在如何通过URLRewrite技术实现网页的伪静态化,这对于SEO(搜索引擎优化)和用户体验都有积极影响。下面将详细解释这个过程: 1. **什么是伪静态**: 伪静态是一...
伪静态URLRewrite技术是实现这一目标的重要手段之一。它主要通过服务器端或应用层面的规则设置,来改变URL的表现形式而不改变其实际的功能性。具体来说: - `<rule>` 是对进入服务器的URL进行重置,即当客户端请求...
5. **使用框架支持**:很多Java Web框架如Spring MVC、Struts2等都内置了对伪静态的支持。例如,在Spring MVC中,可以通过配置`<url-pattern>`来实现URL重写。 6. **实例分析**:在提供的“jsp伪静态-实现”压缩包...
在本文中,我们将深入探讨如何使用`urlrewrite`框架来实现静态页面的转换,这是一个在J2EE环境中常用于URL重写和管理的工具。`urlrewrite`框架可以帮助开发者优化URL结构,使其更加用户友好,同时也便于搜索引擎优化...
`URLrewrite`是一个基于Java的开源过滤器,它实现了Apache的mod_rewrite功能,广泛应用于Spring、Struts、JSF等Java Web框架中。它提供了强大的规则配置,使得开发者能够灵活地对URL进行重写和重定向。 在使用`URL...
5. MVC框架支持:许多MVC框架如Spring MVC、Struts2等,内置了对伪静态的支持。开发者只需要按照框架提供的配置方式,就可以轻松实现伪静态。 伪静态的实现需要考虑到URL的可读性、可维护性和SEO优化。一个好的伪...
`URLRewrite`是一款强大的URL重写工具,主要用于Apache Tomcat服务器,它可以让你灵活地管理和重写URL,实现诸如URL美化、隐藏参数、路径映射等功能。在Web开发中,URL重写对于SEO(搜索引擎优化)和提升用户体验都...
**URLRewriteFilter详解:实现高效且优雅的伪静态** 在Web开发中,为了提高用户体验和搜索引擎优化(SEO),我们常常需要将动态URL转化为看似静态的格式,这就是所谓的“伪静态”。URLRewriteFilter是一个非常实用...
"urlrewrite的简单搭建" 涉及到的知识点主要集中在使用URL重写工具 `UrlRewriteFilter` 上,这是一个基于Java的开源过滤器,用于处理和重写HTTP请求的URL,通常与Web应用程序(如Spring MVC或Struts)一起使用,以...
下面是一个基于Struts2框架实现伪静态URL重写的详细步骤: 1. **创建项目并引入依赖**:首先,创建一个新的Java Web工程,并导入Struts2框架所需的所有JAR包,包括UrlReswriter.jar。 2. **配置URL重写规则**:...
通过使用UrlRewriteFilter,开发者可以在Struts和JSP应用中实现URL的伪静态化,即让动态页面的URL看起来像静态页面的URL,这对于SEO尤其有利,因为搜索引擎更容易抓取和理解静态化的URL。 标签"struts伪静态"意味着...
9. **与Web框架集成**:`URLRewrite`可以很好地与Spring MVC、Struts等Web框架集成,进一步优化URL管理和路由。 10. **性能优化**:合理使用`URLRewrite`可以提高网站性能,例如通过减少不必要的参数传递,使URL更...
2. **Filter配置**:在Java Web应用中,`UrlRewrite`通常通过一个Filter实现,如`Tuckey's UrlRewriteFilter`。`web.xml`配置文件是设置这个Filter的关键,我们需要在其中声明Filter并指定其初始化参数。 ```xml ...
Struts2可以与Apache的mod_rewrite或Tuckey的URLRewriteFilter配合,实现更友好的URL。配置不当可能导致重写规则失效或产生新的路径问题。 8. **部署配置**:在多模块项目中,路径问题可能源于war文件的部署位置,...
JSP URLRewrite地址静态化是一个重要的Web开发技巧,通过使用`URLRewriteFilter`工具,我们可以实现动态URL的静态化展示,进而提升网站的SEO效果和用户体验。正确配置和使用该工具,对于提升网站的整体质量有着积极...
通过这个整合,Struts 2应用不仅能够利用URLWrite 4的重写功能来改善URL结构,还可以结合Struts 2的拦截器和Action机制,实现更灵活的路由和控制逻辑。同时,这也有助于提高SEO,因为搜索引擎更喜欢静态、有意义的...
包括: +----doc +-----jeecms基础概念.txt ...• 采用伪静态结合页面缓存技术,可自定义路径结构,无需urlrewrite • 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录