`
chenpy
  • 浏览: 10347 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

urlrewriter 和 Struts2 整合

阅读更多

准备工作先要有2个配置文件+1个jar包

配置文件1:urlrewrite.xml

写道
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
"http://tuckey.org/res/dtds/urlrewrite3.0.dtd">

<urlrewrite>
<rule>
<note>
<!-- 这是一个通用请求url rewrite
将请求forword url加上".action"的处理器上。例:
请求 http://{domain}/user/login 将被forward到 http://{domain}/user/login.do
请求 http://{domain}/user/login/ 将被forward到 http://{domain}/user/login.do
请求 http://{domain}/user/logout/ 将被forward到 http://{domain}/user/logout.do
-->
</note>
<from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?.html$</from>
<to type="forward">/$1.action</to>
</rule>
<!--
<rule>
<note>这是一个通用请求url rewrite</note>
<from>^/([a-z0-9A-Z_]+)/([a-z0-9A-Z_]+)/!([a-z0-9A-Z_]+).html$</from>
<to type="forward">/$2.action?id=$1</to>
</rule>
-->
<!-- Override default validation.js from WebWork -->
<rule>
<from>^/struts/css_xhtml/validation.js$</from>
<to type="forward">/template/css_xhtml/validation.js</to>
</rule>

<!-- The following fixes a bug in XFire: -->
<!-- http://jira.codehaus.org/browse/XFIRE-1089 -->
<rule>
<from>^//services/(.*)$</from>
<to type="forward">/services/$1</to>
</rule>
</urlrewrite>

 

配置文件2:web.xml

在web.xml文件中插入一个filter

写道
<!-- UrlRewriteFilter filter -->
<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>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>

 

1个jar包:urlrewritefilter-3.1.0.jar

 

但是这样配置会遇到问题

因此需要在web.xml文件中添加一个东西,完整的filter链如下:

写道
<!-- UrlRewriteFilter filter -->
<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>
</filter>
<!-- Struts2 filter -->
<filter>
<filter-name>struts2-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts2-cleanup</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>

<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>

<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

 1、在web.xml中EncodingFilter的位置应该在Struts2的FilterDispatcher之前,道理很简单,要先调整字符集,再进入Action。

2、如果使用Urlrewrite,要指定filter-mapping的dispatcher方式,如下
<filter-mapping>
    <filter-name>Struts2</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

3、在做上传文件的时候,要在web.xml中增加ActionContextCleanUp这个filter,如果不增加,会发生第一次上传取不到文件的情况
<filter>
  <filter-name>struts-cleanup</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts-cleanup</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
按照Struts2的API,filter的顺序是
struts-cleanup filter
SiteMesh filter
FilterDispatcher

 

 

分享到:
评论

相关推荐

    UrlRewriter2_51

    UrlRewriter2_51是一款专门用于处理和管理URL重写的工具,它基于ASP.NET环境,为开发者提供了强大的URL管理功能,使得网站的URL更加友好、简洁且易于理解。在本文中,我们将深入探讨URL重写的基本原理、其在Web开发...

    UrlRewriter.dll和demo

    2. Add a reference to the Intelligencia.UrlRewriter assembly. 3. Open the web.config file. 4. Add Configuration section handler: name="rewriter" requirePermission="false" type=...

    urlrewriter

    在描述中提到了一个Java项目案例,这可能是一个演示或示例项目,用于展示如何在实际应用中集成和使用`URLRewriter`。通常,这会包括以下步骤: 1. **添加依赖**:在项目的构建文件(如Maven的pom.xml或Gradle的...

    URLRewriter

    URLRewriter是一个功能强大的URL重写工具,主要用于改善和优化网站的URL结构,使其更加用户友好和搜索引擎友好。在互联网领域,URL的结构和形式对于网站的可访问性、用户体验以及SEO(搜索引擎优化)都具有重大影响...

    c#UrlRewriter伪静态(UrlRewriter.dll和Intelligencia.UrlRewriter.dll)

    最近研究了一下伪静态,网上资料确实是比较多,我经过... 3)、然后将form标签改为RW:Form(注意开始和结束都要改),TagPrefix可以自定义 2、IIS设置上的问题,需在IIS上添加映射的时候将 “检查文件是否存在”取消

    struts2.例子

    在`web.xml`中配置Struts2过滤器是非常重要的一步,因为这会直接影响到Struts2框架的初始化和请求处理流程。以下是文件中的关键部分: ```xml &lt;filter-name&gt;Struts2 &lt;filter-class&gt;org.apache.struts2....

    UrlReWriter

    UrlReWriter是一个重要的Web开发工具,它主要用于处理和重写URL,从而实现更灵活的网址管理和优化。在ASP.NET环境中,UrlReWriter组件扮演着关键角色,帮助开发者创建更加用户友好的、SEO(搜索引擎优化)友好的URL...

    UrlRewriter

    《ASP.NET URL重写技术详解——以UrlRewriter库为例》 在ASP.NET开发中,URL重写(URL Rewrite)是一种常见...在实际项目中,根据业务需求,我们可以灵活调整和扩展UrlRewriter的规则,以满足各种复杂的URL管理需求。

    UrlRewriter 实现伪静态

    UrlRewriter 是一款广泛应用于Web开发中的开源工具,主要用于实现URL重写和转换,从而达到优化网站URL结构、实现伪静态的效果。在本文中,我们将深入探讨UrlRewriter的工作原理,以及如何通过它来实现伪静态,提升...

    IIS7.0实现伪静态URLRewriter.dll和ActionlessForm.dll

    总的来说,通过IIS7.0、URLRewriter.dll和ActionlessForm.dll的结合使用,我们可以创建出具有伪静态URL的动态网站,提高网站的可读性和SEO效果。同时,这也需要开发者对URL重写机制、HTTP协议以及web.config配置有...

    urlrewriter实例

    2. **可维护性**:确保规则易于理解和修改,使用注释解释复杂规则。 3. **灵活性**:设计规则时,考虑未来可能的变化和扩展需求。 4. **测试**:在部署前充分测试所有规则,避免出现未预期的重写结果。 **总结** ...

    UrlRewriter .NET重写组件

    2. **正则表达式**:在配置规则时,通常会用到正则表达式来匹配和捕获URL中的部分。例如,`^product/(\d+)$`表示匹配以"product/"开头,后面跟着一个或多个数字的URL,括号内的表达式(\d+)可以被捕获用于动态参数。 ...

    URLReWriter

    URLReWriter,.net里的url重写

    URL重写(URLRewriter.dll)

    2. **配置Web.config**: 安装完成后,在Web.config文件中添加URLRewriter的配置节。一个基本的配置示例如下: ```xml ^products/(.*)" /&gt; ``` 这个规则会将URL `products/123` 重写为 `...

    Intelligencia.UrlRewriter 使用方法

    总的来说,Intelligencia.UrlRewriter是一个强大的工具,通过它可以轻松地实现URL重写,提升网站的用户体验和SEO性能。正确配置和使用这个库,能让你的ASP.NET应用程序拥有更优雅、更具可读性的URL。

    UrlRewriter(ASP.NET2008 URL 重写)

    **UrlRewriter(ASP.NET 2008 URL 重写)** URL 重写是ASP.NET应用程序中一个重要的技术,它允许开发...分析和理解这些配置有助于深入掌握UrlRewriter的工作原理,并能灵活应用于自己的项目中,提供更好的URL管理体验。

    URLRewriter.rar

    《URLRewriter组件详解及其在...通过深入理解和合理运用URLRewriter,开发者可以创建出更高效、更易维护的Web应用程序。在实际项目中,我们需要根据具体需求,灵活配置和调整规则,以充分发挥URLRewriter组件的优势。

    Intelligencia.UrlRewriter.zip

    在使用Intelligencia.UrlRewriter时,这个工具可能有助于管理和调试相关的DLL文件。 2. DLL之家.htm:这可能是一个HTML文档,提供了关于DLL文件的相关信息或者使用DLL工具的说明。用户可以通过阅读此文件来了解如何...

Global site tag (gtag.js) - Google Analytics