0 0

struts1 中使用urlrewrite 来重写url,jsp中如何动态传参数到urlrewrite.xml中的from,to5

其中配置都成功了,就是动态参数不好处理。
比如jsp中的
问题:如何在jsp中设置<a>标签,使得伪装后的路径为
http://localhost:8080/xxx/search/supply/5
条件:
<a href="http://localhost:8080/xxx/search.xz?method=supply&keyword=5">查询</a>

当点击链接后,想要处理后的url为
http://localhost:8080/xxx/search/supply/5

在urlrewrite.xml中是这样配置的

<rule>
  <from>^/xxx/search/([a-z]+)/([0-9]+)$</from>
  <to type="forward">/xxx/search.xz?method=$1&amp;keyword=$2</to>
</rule>

2012年11月15日 14:19

2个答案 按时间排序 按投票排序

0 0

采纳的答案

如果参数名称和值不定,参数个数也不定的话,你的href中不光要有值,参数名也应该包含在里面:
<a ref="http://localhost:8080/xxx/search/method/supply/keyword/5">搜索</a>

然后基于上面的href,你可以自己写一个Filter,然后在Filter的doFilter方法里面对url进行重写,然后forward到你重写后的url。算法很简单:

public  void doFilter(ServletRequest request,ServletResponse response,
    FilterChain chain) throws IOException, ServletException{
  String reqURI = request.getRequestURI();
  if(reqURI.startsWith("/xxx/search/")){
    String reqQueryStr = request.getQueryString();
    StringTokenizer st = new StringTokenizer(reqQueryStr ,"/");
    StringBuffer strbuf = new StringBuffer();
    strbuf.append("/search.xz?");
    String paramName = null;
    String paramValue = null;
     while (st.hasMoreTokens()) {
        paramName = st.nextToken();
        paramValue = st.nextToken();
        strbuf.append(paramName + "=" + paramValue + "&"); 
     }
     if(strbuf.endsWith("?") || strbuf.endsWith("&"){
       strbuf.deleteCharAt(strbuf.length()-1);
     }
     request.getRequestDispatcher(strbuf).forward(request,response);
  }else{
    chain.doFilter();
  }
}


然后把自定义的Filter配置到web.xml文件中即可。
上面的代码没有编译,你自己再调试一下看看,应该问题不大,呵呵。

2012年11月15日 20:19
0 0

urlrewrite.xml

<rule>
    <from>/xxx/([a-z]+).xz?method=([a-z]+)&keyword=([0-9]+)</from>
    <to type="redirect">/xxx/$1/$2/$3</to>
</rule>



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>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

2012年11月15日 15:29

相关推荐

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

    在这个最简实例中,我们将探讨如何在MyEclipse环境中集成Struts2和urlRewrite,创建一个基本的应用来演示URL重写功能。首先,你需要确保已经安装了MyEclipse,并且在项目中引入了Struts2和urlRewrite的相关依赖库。 ...

    URLrewrite-实例

    在使用`URLrewrite`时,我们需要创建一个名为`urlrewrite.xml`的配置文件,其中定义了各种重写规则。例如,以下规则将所有以“/article”开头的请求重定向至“/content/article”: ```xml &lt;from&gt;^/article/(.*)$...

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

    ### SSH2中的URLRewrite与Struts2生成静态页面 #### URLRewrite的理解与应用 在SSH2(Spring + Struts2 + Hibernate)框架中,URLRewrite是一种强大的工具,可以用于实现URL重写功能,使得网站的URL更加友好、易于...

    java urlrewrite解决默认页问题

    为了实现URL重写功能,我们需要在`web.xml`中配置URL Rewrite Filter,并在`urlrewrite.xml`中定义重写规则。 **1. `web.xml` 配置:** ```xml &lt;filter-name&gt;UrlRewriteFilter &lt;filter-class&gt;org.tuckey.web....

    urlrewrite静态页面的使用例子

    在本文中,我们将深入探讨如何使用`urlrewrite`框架来实现静态页面的转换,这是一个在J2EE环境中常用于URL重写和管理的工具。`urlrewrite`框架可以帮助开发者优化URL结构,使其更加用户友好,同时也便于搜索引擎优化...

    伪静态URLRewrite实例解析

    在`WEB-INF`目录下新建一个名为`urlrewrite.xml`的文件,用于定义具体的URL重写规则。示例内容如下: ```xml &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite...

    struts2改写url后缀demo

    总结,通过引入`Tuckey URL Rewrite Filter`,并在`urlrewrite.xml`中定义适当的规则,我们可以轻松地将Struts2的`.do`后缀重写为`.html`或其他形式。这不仅使URL更易于理解和记忆,也有助于提升用户体验和SEO效果。...

    urlrewrite(把jsp变成HTML).(个人总结综合教程,适合新入门的朋友阅读)

    这在动态网站中尤为重要,因为原始的URL(如`/jsp/doSomething.jsp`)可能包含复杂的参数或扩展名,不利于用户记忆和搜索引擎抓取。通过URL重写,可以将这些URL转换为更简洁、更直观的形式(如`/do/something/123`)...

    struts1.2与urlrewritefilter 的整合

    1. **添加依赖**:首先,在项目中引入URLRewriteFilter的jar包,比如在Maven的pom.xml文件中添加相应的依赖项,或者将jar包复制到项目的lib目录下。 2. **配置web.xml**:在Web应用的配置文件web.xml中,需要注册...

    Url Rewrite Filter实现页面伪静态化,简单实例及步骤

    这里我们将原始URL中的数字部分通过`$1`传递给了`index.jsp`页面。 - **`&lt;to type="forward"&gt;`**:表示使用服务器端转发的方式访问目标资源。 #### 五、编写Action处理类 为了让Struts框架能够处理请求,我们需要...

    伪静态_URLRewrite实例解析

    【伪静态_URLRewrite实例...总结来说,本实例通过UrlRewrite Filter和Struts框架的配合,实现了动态URL到静态URL的转换,提升了网站的可读性和搜索引擎友好性。同时,也展示了如何配置和使用这些工具来实现这一目标。

    java伪静态URL重写的方法

    Java中的伪静态URL重写是一种优化网站SEO(搜索引擎优化)的技术,它允许用户通过静态URL(如:http://127.0.0.1:8080/pro/index.html)来访问动态生成的页面(如:http://127.0.0.1:8080/pro/index.jsp)。...

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

    "网站根目录index.jsp参数ptr=xxx可以写为根目录参数ptr=xxx即不显示jsp文件名",这意味着可以通过在URL中传递参数而不是直接指定JSP文件名,从而避免暴露JSP文件的路径。例如,访问`/?ptr=xxx`而不是`/index.jsp?...

    Java WEB实现URL重写

    在传统的Web应用中,动态内容常常会暴露这些参数,而URL重写则可以隐藏这些细节,使URL更简洁。 实现Java Web中的URL重写,我们可以使用几种不同的方法: 1. **使用Filter**:创建一个Servlet Filter,拦截HTTP...

    struts 2整合urlwrite 4 demo

    3. 创建规则文件:在`urlrewrite.xml`中定义重写规则。例如,你可以创建一条规则,将所有以“/product”开头的请求映射到Struts 2的Action。 ```xml &lt;from&gt;^/product/(\d+)$&lt;/from&gt; &lt;to type="forward"&gt;/product...

    urlrewritefilter-3.2.0下载

    这通常涉及到在web.xml文件中添加Filter配置,然后在UrlRewrite.xml文件中定义重写规则,将动态请求映射到对应的Struts Action。 同样,"jsp伪静态"表明UrlRewriteFilter也可用于JSP页面。对于JSP,URL重写可以帮助...

    jsp URLRewirte地址静态化

    在Web开发中,URL重写(URLRewrite)是一种优化技术,常用于将动态URL转化为看似静态的URL,从而提高网站的SEO(搜索引擎优化)性能,同时也能提供更好的用户体验。在JSP中,我们可以使用Tuckey的`URLRewriteFilter`...

    struts2 路径问题

    每个Action通常对应一个特定的URL,这在struts.xml配置文件中定义。例如,`&lt;action name="myAction" class="com.example.MyAction"&gt;` 将URL `/myAction` 映射到 `MyAction` 类。路径问题可能出现在Action命名不规范...

    [其他类别]UrlRewriter Java v2.0 RC1_urlrewriterjava.zip

    使用UrlRewriter Java需要在Web应用的配置文件(通常是`web.xml`)中添加过滤器配置,然后创建一个`.xml`配置文件(如`urlrewrite.xml`),在这个文件中编写重写规则。规则通常包含模式匹配、条件检查和重定向或...

    UrlRewriter Java v2.0 RC1-urlrewriterjava.zip

    在实际应用中,开发者会创建一个名为`urlrewrite.xml`的配置文件,其中包含一系列规则定义,例如: ```xml &lt;from&gt;^/product/old/(.*)$&lt;/from&gt; &lt;to type="redirect"&gt;/product/new/$1&lt;/to&gt; &lt;from&gt;^/content/(....

Global site tag (gtag.js) - Google Analytics