6

Flash バナーを含む Spring 2.5 アプリケーションがあります。Flash コンポーネントのソースはありませんが、特定のページへのリンクがハードコーディングされており、そのリンクは、.html .html ページを既存の jsp ページにリダイレクトできるようにしたい. Spring でいくつかの .html ページを .jsp ページに解決するにはどうすればよいですか?

私のプロジェクトは次のようになります。

WebContent
 |
 -sample.jsp
 -another.jsp
  WEB-INF
  |
  -myapp-servlet.xml
  -web.xml

localhost:8080/offers.htmlにリダイレクトしたいlocalhost:8080/sample.jsp

Springでこれを行うことはできますか?私はすでに SimpleUrlHandlerMapping と UrlFilenameViewController を myapp-servlet.xml で定義しており、既にあるページを引き続き提供する必要があります。

私のweb.xmlには、

<servlet-mapping>
  <servlet-name>myapp</servlet-name>
  <url-pattern>*.htm</url-pattern>
</servlet-mapping>

アップデート

これが URL マッパーです。コントローラーを追加する場合、ビュー リゾルバーには /WEB-INF/jsp ディレクトリが含まれているため、WebContent ディレクトリにある 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>
4

3 に答える 3

16

tuckey.org によって作成されたオープン ソースの URL 書き換えライブラリが役立つと思います。このライブラリは、Spring Roo を使用してプロジェクトを作成すると自動的にセットアップされるため、SpringSource の関係者はこのライブラリを推奨しています。これは高品質です。私はそれを多くのプロジェクトで成功裏に使用してきました。

ホームページはこちらをご覧ください。Skaffman の言うとおりです。デフォルトの動作であるリダイレクトではなく「転送」する必要があります。

次のように web.xml で構成します。

<filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>

次に、WEB-INF/urlrewrite.xml に次のような要素があります。

<rule>
    <from>offers.html</from>
    <to>offers.jsp</to>     
</rule>
于 2010-02-25T09:16:54.050 に答える
5

これには OCPsoft PrettyFaces または OCPsoft Rewrite を使用します。

PrettyFacesの場合:

WEB-INF/pretty-config.xml を作成します

<url-mapping>
   <pattern value="/offers.html" />
   <view-id value="/offers.jsp" />
</url-mapping>

書き換えあり:

ConfigurationBuilder.begin()
   .addRule(Join.path("/offers.html").to("/offers.jsp"));

これが役立つことを願っています。

〜リンカーン

于 2011-10-27T05:24:35.057 に答える
1

まず、「リダイレクト」と言うときは、本当に「転送」を意味していると思います。ここでは、HTTP リダイレクトは適切ではありません。

そのため、次のことを試してください。

  • JSP ファイルを からWebContentに移動することはできません/WEB-INF/jsp/か? ViewResolverその場合、定義を変更する必要はありません。

  • コントローラが のようなビュー名を返すようにして、サーブレット コンテナが に解決される../../another.jspことを期待できます。/WEB-INF/jsp/../../another.jsp/another.jsp

  • コントローラーがビューのViewResolver名前を返す場合にのみ参照されます。コントローラーはビューの名前を返す必要はありませんViewオブジェクトを直接返すことができます。この場合はJstlView. これは、好きな JSP を指すことができます。ビュー名を返す一部のコントローラーと、一部のViewオブジェクトを返すことができます。

  • prefixビュー リゾルバーからプロパティを削除します。つまり、既存のすべてのコントローラーを変更して、返されるすべてのビュー名の前に を付ける必要があり/WEB-INF/jsp/ます。WebContent次に、JSP を名前で参照できます。

于 2010-02-25T07:52:43.940 に答える