Spring - 将一个URL重写为另一个URL

Geo*_*rge 5 java spring spring-mvc url-rewriting prettyfaces

我有一个包含Flash横幅的Spring 2.5应用程序.我没有Flash组件的源代码,但它有硬编码到某些页面的链接,.html 我希望能够将这些.html页面重定向到现有的jsp页面.如何让Spring将几个.html页面解析为.jsp页面?

我的项目看起来像:

WebContent
 |
 -sample.jsp
 -another.jsp
  WEB-INF
  |
  -myapp-servlet.xml
  -web.xml
Run Code Online (Sandbox Code Playgroud)

我想localhost:8080/offers.html重定向到localhost:8080/sample.jsp

我可以用Spring做到这一点吗?我已经在myapp-servlet.xml中定义了一个SimpleUrlHandlerMapping和UrlFilenameViewController,它必须继续为它已经存在的页面提供服务.

在我的web.xml中,我有

<servlet-mapping>
  <servlet-name>myapp</servlet-name>
  <url-pattern>*.htm</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

更新

这是URL映射器.如果我添加控制器,如何返回WebContent目录中的jsp视图,因为视图解析器包含/ WEB-INF/jsp目录.

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
    <props>
      <prop key="/page1.htm">page1Controller</prop>
      <prop key="/page2.htm">page2Controller</prop>
    </props>
  </property>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/WEB-INF/jsp/" />
  <property name="suffix" value=".jsp" />
</bean>
Run Code Online (Sandbox Code Playgroud)

Han*_*eek 16

我想你可以从tuckey.org开发的开源URL重写库中受益.SpringSource的工作人员认可这个库,因为如果您使用Spring Roo创建项目,它会自动为您设置,因此质量很好.我已经成功地在许多项目中使用过它.

请看这里的主页.而Skaffman是对的,你希望它"转发"而不是重定向,这是默认行为.

在web.xml中配置它,如下所示:

<filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
Run Code Online (Sandbox Code Playgroud)

然后,在WEB-INF/urlrewrite.xml中有一个这样的元素:

<rule>
    <from>offers.html</from>
    <to>offers.jsp</to>     
</rule>
Run Code Online (Sandbox Code Playgroud)


Lin*_*oln 5

我会使用OCPsoft PrettyFaces或OCPsoft Rewrite:

使用PrettyFaces:

创建WEB-INF/pretty-config.xml

<url-mapping>
   <pattern value="/offers.html" />
   <view-id value="/offers.jsp" />
</url-mapping>
Run Code Online (Sandbox Code Playgroud)

使用重写:

ConfigurationBuilder.begin()
   .addRule(Join.path("/offers.html").to("/offers.jsp"));
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.

〜林肯

  • 我的回答是有偏见的. (4认同)