Spring 3.1 を使用して、非常に古いサーブレット ベースのサイトを改修しています。一部の URL は廃止されました。私の上司は、リダイレクトを維持するためのネットワークの信頼性を信頼していないため、私自身のリダイレクトを古い URL から切り離して Web アプリケーションに入れるように頼まれました。
廃止された URL を処理するために、 LegacyServletControllerという名前のコントローラーを作成しました。誰かが URL の末尾にスラッシュを入力しない限り、うまく機能します。Controller メソッドは引き続きそれを取得しますが、新しい URL にリダイレクトしません。ロケーションバーに既にある URL に新しい URL を追加するだけです。
たとえば、これは廃止された URL です。
http://blah.blah.blah/acme/moreinfo/
にリダイレクトさせたい
http://blah.blah.blah/acme/home
ただし、上記のように廃止された URL の末尾にスラッシュがある場合、リダイレクトは次のようになります。
http://blah.blah.blah/acme/moreinfo/home
*-servlet.xml に別の URL ハンドラーが必要だと思いますが、Spring にはまだ慣れておらず、設定方法がわからないため、コントローラー関数は末尾のスラッシュの有無にかかわらず、廃止された URL を適切に処理します。
これは、レガシー URL を処理するために使用しているコントローラー クラスです。
import org.springframework.stereotype.Controller;
import org.springframework.validation.*;
import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.apache.log4j.Logger;
@Controller
public class LegacyServletController {
private static final Logger logger = Logger.getLogger(LegacyServletController.class);
// Redirect these legacy screns "home", the login screen via the logout process
@RequestMapping({"moreinfo","other_dead_screen"})
public String home() {
logger.debug("started...");
return "redirect:home";
}// end home()
}// end class LegacyServletController
ここに私の acme-servlet.xml があります:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.acme.controller" />
<mvc:resources mapping = "/**" location = "/,file:/apps1/bea/user_projects/domains/acme/common/,file:/c:/ftp/acme/"/>
<mvc:annotation-driven/>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value = "/jsp/"/>
<property name = "suffix" value = ".jsp"/>
</bean>
<bean name="af" class="com.acme.controller.security.CustomAuthenticationFilter"/>
</beans>