特にSpringMVCで最も重要な違いの1つは、ABSOLUTEパスとRELATIVEパスです。
ご存知のとおり: Spring MVCでは、ビューをまたはオブジェクト
として返すことができString
ModelAndView
重要な注意:
どちらの場合も、相対/絶対パスに注意を払う必要があります:
/
ビュー名の先頭で宣言する場合は、絶対パスを使用しています。つまり、クラスレベル
は関係なく、最終的なビュー名として直接導入されます。 @RequestMapping
- ビュー名の先頭で宣言しない場合は、相対パス(クラスパスに対する相対パス)を使用しているため、クラスレベルに追加されて最終的なビュー名が作成されます。
/
@RequestMapping
したがって、Spring MVCを使用する場合は、上記の注意事項を考慮する必要があります。
例:
1。2つのHTMLファイルtest1.html
を作成し、spring(ブート)構造test2.html
のフォルダーに作成します。相対パスの場合、クラスレベルはフォルダーパスとして動作する
ことに注意してください。static
@RequestMapping
--- resources
--- static
--- classLevelPath //behaves as a folder when we use relative path scenario in view names
--- test2.html //this will be used for relative path [case (2)]
--- test1.html //this will be used for absolute path [case (1)]
- 以下のようなコントローラクラスを作成します。この例は、リターンが
String
あり、相対パスと絶対ModelAndView
パスの両方でのさまざまなケースを示しています。
@Controller
@RequestMapping("/classLevelPath")
public class TestController {
//case(1)
@RequestMapping("/methodLevelAbsolutePath1")
public String absolutePath1(Model model){
//model.addAttribute();
//...
return "/test1.html";
}
//case(1)
@RequestMapping("/methodLevelAbsolutePath2")
public ModelAndView absolutePath2(Model model){
ModelAndView modelAndView = new ModelAndView("/test1.html");
//modelAndView.addObject()
//....
return modelAndView;
}
//case(2)
@RequestMapping("/methodLevelRelativePath1")
public String relativePath1(Model model){
//model.addAttribute();
//...
return "test2.html";
}
//case(2)
@RequestMapping("/methodLevelRelativePath2")
public ModelAndView relativePath2(Model model){
ModelAndView modelAndView = new ModelAndView("test2.html");
//modelAndView.addObject()
//....
return modelAndView;
}
}
注:
ビューファイルのサフィックスはViewResolver
(たとえばInternalResourceViewResolver
、またはSpring Bootspring.mvc.view.suffix=.html
のファイルで指定できますが、上記のコードではサフィックスをappliction.properties
宣言しないでください)。.html
宜しくお願いします