スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Spring MVC @RequestMappingアノテーションの検証

Spring MVCの@RequestMappingについて検証したことをメモしておく。

◎動作検証にあたっての各バージョンは以下の通り
  • SpringFramework 3.2.3.RELEASE
  • Java 1.7
  • Tomcat 7.0

前提として、クラスに@RequestMapping("book")を付与している。
その場合に、入力画面文字列を返すindexメソッドに付与した@RequestMappingのvalue属性値とURLの関係を調べる。
indexメソッドに付与する@RequestMappingのパターンは以下の通り。
1.@RequestMapping(method = RequestMethod.GET) ⇒ value属性を省略した場合
2.@RequestMapping(value = "/", method = RequestMethod.GET) ⇒ 「/」のみの場合
3.@RequestMapping(value = "book", method = RequestMethod.GET) ⇒ クラス側に付与したvalue属性値と同じ場合


また、「prefix」と「suffix」を設定した「mvc-config.xml」を載せておく。


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">

<!-- Uncomment and your base-package here: -->
<context:component-scan base-package="jp.co.sample"/>

<mvc:annotation-driven />

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
</bean>

<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />

</beans>


1.value属性を省略した場合

@Controller
@RequestMapping("book")
public class BookController {

@Autowired
protected BookService bookService;

@RequestMapping(method = RequestMethod.GET)
public String index(BookForm bookForm) {
return "newBook";
}

@RequestMapping(value = "create", method = RequestMethod.POST)
public String create(BookForm bookForm, Model model) {
//TODO bookServiceより返却されたBookオブジェクトをmodelに追加する
return "result";
}
}

正常に表示されるURLは以下の通り
http://localhost:8080/SpringWebSample/book
または
http://localhost:8080/SpringWebSample/book/

2.「/」のみの場合


@RequestMapping(value="/", method = RequestMethod.GET)
public String index(BookForm bookForm) {
return "newBook";
}

正常に表示されるURLは以下の通り
http://localhost:8080/SpringWebSample/book/


3.クラス側に付与したvalue属性値と同じ場合

@RequestMapping(value="book", method = RequestMethod.GET)
public String index(BookForm bookForm) {
return "newBook";
}

正常に表示されるURLは以下の通り
http://localhost:8080/SpringWebSample/book/book
または
http://localhost:8080/SpringWebSample/book/book/

◎まとめ
URLは、クラスに付与した@RequestMappingのvalue値にメソッドに付与した@RequestMappingのvalue値が結合される(メソッドに付与した@RequestMappingのvalue値でオーバーライドされる訳ではないようだ)。

■過去のSpring関連記事
Spring関連記事 Index

スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

bookmount8

Author:bookmount8
システムエンジニア。サーバーサイドでjavaを扱うことが多い。最近は、ミドルやフロント周りも関心あり。

最新記事
カテゴリ
検索フォーム
最新コメント
月別アーカイブ
これまでの訪問者数
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。