`
jsx112
  • 浏览: 315919 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在struts2中实现去掉后缀及url重写

阅读更多
写道
首先,这要用到两个软件包,一个是SmartUrls(Struts2的插件,下载地址:http://code.google.com/p/smarturls-s2/downloads/list),还有就是urlrewritefilter(下载地址:http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip).
要想去掉struts2的后缀,就要这样配置filter:

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.texturemedia.smarturls.SmartURLsFilter</filter-class>

</filter>
用这个代替struts2的核心过滤器,FilterDispatcher。不必担心struts2不起作用了,因为这个过滤器是继承自FilterDispatcher的。同时在struts.properties中加入struts.action.extension= ,不设任何值。


然后就是配置UrlRewriteFilter,如下

<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
在配置filter-mapping的时候,注意urlrewritefilter的应该在前面。然后urlrewritefilter的重写该怎么用大家可以参看文档,这里就不再赘述。

当使用时发现重写后,filterChain上只有一个urlrewritefilter,而没有经过smartUrls就发到了请求的资源,得到的自然是一个404错误。于是我参看urlrewritefilter的源代码发现,如果重写url成功的话,将会调用RequestDispatcher的forward方法转发到资源,而重写不成功或者是没有重写才会调用filterChain.dofilter。所以struts2的filter-mapping应该这样配置

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
然后就 OK 了
最后说明一点,这要在支持servlet2.4以上规范的容器中才气作用,因为servlet2.3规范里面,过滤器只支持request过滤,不支持转发之类的过滤
但是在struts2.1.8以上的版本,均可以通过配置struts.xml文档来实现去掉后缀名。
<constant name="struts.action.extension" value="" />
web.xml附加配置如下
 <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>/*</url-pattern>
 </filter-mapping>


 

分享到:
评论

相关推荐

    struts2中实现URL重写

    下面我们将详细探讨如何在Struts2框架中实现URL重写。 首先,了解URL重写的基本概念。URL重写是通过改变HTTP请求URL的外观,而不会改变其实际的行为。这通常涉及到在URL中添加或修改查询字符串,或者将路径信息改写...

    struts2改写url后缀demo

    本教程将深入探讨如何在Struts2中实现URL重写,以将`.do`后缀改写为`.html`。 首先,我们需要引入URL重写工具,例如`Tuckey URL Rewrite Filter`。这是一个强大的URL管理过滤器,可以帮助我们轻松地重写和管理URL。...

    java struts如何隐藏提交后缀.action, .do.zip

    在Struts的配置文件(如struts-config.xml或struts2的struts.xml)中,可以定义动作映射来隐藏请求的后缀。例如,对于Struts1,可以将`&lt;forward&gt;`标签的路径设置为不包含`.action`的URL;对于Struts2,可以使用`...

    使用urlrewrite重写struts2的action

    在这个场景中,我们将深入探讨如何使用`URL Rewrite Filter`来重写Struts2的Action。 首先,让我们理解`URL Rewrite Filter`的基本概念。这个工具提供了一种方式,通过配置XML文件(如`urlrewrite.xml`)来定义一...

    去掉.action去掉.do字样 隐藏struts2 URL地址action, strus1的扩展名do也是同理.zip

    Struts2和Struts1是两个非常著名的Java Web框架,它们在处理请求时通常会在URL中显式地显示.action或.do后缀。然而,为了提供更友好的用户体验和增强安全性,有时我们需要隐藏这些扩展名。本篇文章将详细介绍如何在...

    Java WEB实现URL重写

    在Java Web开发中,URL重写是一种常见的技术,它能够帮助我们优化应用程序的用户体验和搜索引擎优化(SEO)。URL重写的主要目的是将复杂的、带有多个参数的URL转化为更加友好、易于理解的形式。这样的URL更容易被...

    Struts2下使用urlReWrite的最简实例(MyEclipse工程)

    `urlRewrite`是Tuckey开源组织提供的一个URL重写过滤器,它能够帮助我们在Struts2应用中实现这个目标。 在这个最简实例中,我们将探讨如何在MyEclipse环境中集成Struts2和urlRewrite,创建一个基本的应用来演示URL...

    struts2实现用户登录注册

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中被广泛应用,尤其在处理复杂的业务逻辑和用户交互时。在这个项目"struts2实现用户登录注册"中,我们将深入探讨如何利用Struts2在Eclipse开发...

    struts2实现文件下载功能

    在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...

    struts2的Ajax实现注册验证

    1. **Struts2配置**:首先,需要在`struts.xml`配置文件中定义一个Action,这个Action将处理Ajax请求。你需要设置一个特定的结果类型,比如`json`,这将使Struts2以JSON格式返回数据,非常适合Ajax调用。 2. **Ajax...

    struts2 mysql实现简单学生成绩管理代码

    本项目利用Struts2与MySQL数据库结合,实现了一个简易的学生成绩管理系统,旨在帮助初学者了解如何在实际项目中应用这两个技术。 在Struts2框架中,控制器负责接收用户的请求,通过Action类处理业务逻辑,并将结果...

    ssh2中的urlrewrite和Struts2的生成静态页面

    在SSH2(Spring + Struts2 + Hibernate)框架中,URLRewrite是一种强大的工具,可以用于实现URL重写功能,使得网站的URL更加友好、易于理解和记忆。这在SEO优化及用户体验提升方面具有重要意义。 ##### URLRewrite...

    重写struts2文件上传处理类

    在Struts2框架中,文件上传是一个常见的功能,它允许用户通过表单提交包含文件的请求。`PerfMultiPartRequest`是Struts2中处理文件上传的核心类之一,主要负责解析请求中的多部分数据(multipart/form-data)。在这...

    struts2中AJAX实现

    7. **示例代码**:在提供的压缩包文件“struts2中实现AJAX的小实例”中,可能包含了一个简单的Struts2 Action、对应的JSP页面以及JavaScript代码。Action类可能有一个返回JSON数据的方法,JSP页面可能包含一个AJAX...

    struts2.0中文教程

    01 为Struts 2.0做好准备 02 常用的Struts 2.0的标志(Tag) ...08 在Struts 2中实现IoC 09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX

    struts2 fielderror去掉样式

    在标题"struts2 fielderror去掉样式"中,问题的核心是如何去除或者自定义Struts2在显示`FieldError`时默认的样式。Struts2在处理表单验证错误时,通常会将错误信息包裹在一个特定样式的HTML元素中,如`&lt;span&gt;`或`...

    struts2帮助文档

    struts2中实现IOC struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2中的零配置与IOC ...

    Struts1 ULR重写

    2. **过滤器实现**:在URLFilter类中,我们需要重写`doFilter()`方法。在这个方法中,我们可以捕获HTTP请求,解析请求的URL,然后根据业务规则重新构造URL,并使用`HttpServletRequest.getRequestDispatcher()`或`...

    struts2 路径问题

    在处理“struts2 路径问题”时,我们主要关注的是Struts2框架中的URL映射和资源定位。这篇博客文章可能探讨了在使用Struts2时遇到的路径相关问题,如Action配置、结果类型、静态资源访问等。 1. **Action配置**:在...

Global site tag (gtag.js) - Google Analytics