首先让我们了解它的工作原理,说白了它就是一个简单的过滤器(Filter) ,看看源码你就会很快的明白,它就是通过我们在jsp中常用的两个方法实现的forward(),sendRedirect().有这个urlrewrite的目的就是为了简化与美观及对SEO,搜索引擎收录等方面都有好处。
下面我们就快速的为你的web搭建Url重写技术。
第一步:下载urlrewrite-3.2.0.jar。将urlrewrite-3.2.0.jar拷到项目的lib目录下。
第二步:在WEB-INF目录下建一个urlrewrite.xml文件。
第三步:在web.xml中初始化,加入url rewrite filter,一定要放到struts2 filter的前面 。
web.xml
<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>/*</url-pattern> </filter-mapping>
添加struts2 filter的参数:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping>
所有的规则配置都写在urlrewrite.xml中。
<rule> <from></from> <to type="forward></to> </rule>
<from></from> 写上你自己定义的访问地址,<to type="forward></to>就是实际的访问地址。比如我们实际的访问地址是: /entity.htm ?category=user&page=2.而我们想把它重写为/entity/uesr /page_2.html。这样看起来比我们实际的要好看的多。我们就应该这样的写:
<rule> <from>^/(\w+)/(\w+)/page_(\d+)\.html$</from> <to type="forward">/$1.htm?category=$2&page=$3</to> </rule>
urlrewrite.xml jsp->html action->html
<?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"> <!-- Configuration file for UrlRewriteFilter http://tuckey.org/urlrewrite/ --> <urlrewrite> <rule> <from>^/jsp/(.*).html$</from> <to>/jsp/$1.jsp</to> </rule> <!-- <rule> <from>^/jsp/emailMan.html</from> <to>/jsp/emailMan.jsp</to> </rule> --> <rule> <from>/icsslogin.html</from> <to>/icsslogin.jsp</to> </rule> </urlrewrite>
将jsp页面内的所有*.jsp替换成*.html。
这样,进入网站首页后,鼠标触碰<a>标记时,浏览器左下角显示的是*.html,然而实际上访问的是*.jsp或者*.action。
简单的介绍一下常用的正规表示式:
代码
说明
.
匹配除换行符以外的任意字符
\w
匹配字母或数字或下划线或汉字
\s
匹配任意的空白符
\d
匹配数字
\b
匹配单词的开始或结束
^
匹配字符串的开始
$
匹配字符串的结束
常用的&要用 &来表示。$1,$2代表与你配置正规表达式/(\w+)/(\w+)/相对应的参数。<to type="forward">默认的是 type="forward".
相关推荐
### SSH2中的URLRewrite与Struts2生成静态页面 #### URLRewrite的理解与应用 在SSH2(Spring + Struts2 + Hibernate)框架中,URLRewrite是一种强大的工具,可以用于实现URL重写功能,使得网站的URL更加友好、易于...
【伪静态_URLRewrite实例解析】中的主要知识点集中在如何通过URLRewrite技术实现网页的伪静态化,这对于SEO(搜索引擎优化)和用户体验都有积极影响。下面将详细解释这个过程: 1. **什么是伪静态**: 伪静态是一...
搜索引擎对静态页面的友好度高于动态页面,因为静态页面的内容在服务器生成后不再改变,便于搜索引擎抓取和索引。而动态页面的内容会根据用户请求的不同参数而变化,搜索引擎可能难以完全抓取。此外,静态页面加载...
Java中的伪静态URL重写是一种优化网站SEO(搜索引擎优化)的技术,它允许用户通过静态URL(如:http://127.0.0.1:8080/pro/index.html)来访问动态生成的页面(如:http://127.0.0.1:8080/pro/index.jsp)。...
综上所述,Struts2的路径问题可能涉及多个层面,包括Action配置、结果类型设置、静态资源访问策略、插件和拦截器的使用,以及URL重写和部署配置等。解决这些问题通常需要对Struts2的工作原理有深入理解,并能熟练...
通过这个整合,Struts 2应用不仅能够利用URLWrite 4的重写功能来改善URL结构,还可以结合Struts 2的拦截器和Action机制,实现更灵活的路由和控制逻辑。同时,这也有助于提高SEO,因为搜索引擎更喜欢静态、有意义的...
此外,网站还使用了URLRewrite来实现伪静态,使得动态URL看起来像是静态页面,这对SEO(搜索引擎优化)和用户体验都有积极影响。 总结来说,FreeMarker是Java Web开发中用于生成静态页面的重要工具,通过与Struts2...
2. **Servlet生成静态页面**:通过Servlet监听特定请求,判断生成静态页面,并替换原有动态链接。 3. **定时任务生成**:设置定时任务定期检查内容变化,若有更新则生成新的静态页面。 在Java环境中,还可以利用...
为了实现URL重写,开发者可能使用了Apache的mod_rewrite模块,或者在Java世界中,使用了如Spring MVC或Struts2框架提供的URL重写功能。这些框架允许开发人员定义规则来转换URL,比如将"/products/{category}/{id}...
在这种架构中,URL映射到控制器和控制器中的动作,动作负责处理请求并生成响应。例如,`http://www.website.com/news/read/id/1234`会触发newsController的readAction。MVC架构的URL通常更加美观,对搜索引擎友好,...