従来のサーブレットアプリケーションをSpring3.1に変換しています。その過程で、一部のURLは廃止されました。ネットワークに問題があり、すぐには解決されません。上司は、リダイレクトが常に機能することを信頼したくありません。それで、彼女は私に自分のリダイレクトをWebアプリに入れるように頼みました。
URLに末尾のスラッシュがある場合、Spring 3.1はそれを処理するControllerクラス関数を検出しないことを除いて、すべてがうまく機能します。
http://blah.blah.blah/acme/makedonation が検出され、マッピングされ、処理されます
http://blah.blah.blah/acme/makedonation/しません
これが、レガシー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({"makeadonation","contact","complain"})
public String home() {
logger.debug("started...");
return "redirect:logout";
}// end home()
}// end class LegacyServletController
私はグーグルで検索して、いくつかの提案を提供するこのStack Overflowの投稿を見つけましたが、Springは初めてであり、それらの提案のいくつかを実装するのに十分な理解がありません。これは特に私のニーズにぴったりのようです。
spring 3.1 RequestMappingHandlerMappingを使用すると、「useTrailingSlashMatch」プロパティを設定できます。デフォルトではtrueです。falseに切り替えると、問題は解決すると思います。
誰かが私にその方法の基本的な例を教えてくれますか、そのような例を含むURLを引用してください(私はGoogleで運がなかった)、またはより良いアイデアを教えてくれますか?
どうもありがとうスティーブ