Spring2.0.4のWebMVC
DIとかAOPとか、Springはビジネスロジックの実装が面白そうだけど、やっぱりしりたいのはWebとの連携部分。
- 参考:ブロストテクノロジズさん
ざっと読んでみたけど、Springのドキュメントはわかりにくい。手段がたくさんあるので、どれを選ぶかが重要になりそう。
ApplicationContextの初期化
Spring Reference 3.8.4. Convenient ApplicationContext instantiation for web applications
Listenerを使う方法とServletを使う方法がある。
ContextLoaderListenerを使う
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
applicationContext.xmlはBean定義ファイルと呼ばれるもの。
ContetLoaderServletを使う
<servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
DispatcherServlet
「org.springframework.web.servlet.DispatcherServlet」はStrutsでいうActionServletに近い存在。Front Controllerデザインパターンで表現され、リクエストの受信、レスポンスの送信を一番フロントで行ってくれる。
web.xmlには以下のように定義する。サーブレット名を「sampleapp」としている。
<servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>*.form</url-pattern> </servlet-mapping>
DispatcherServletの初期化で、WEB-INFフォルダににある「[servlet-name]-servlet.xml」ファイルが検索される。DispatcherServletごとにBean定義ファイルを設定することができる。
今回の場合はWEB-INFフォルダに「DispatcherServlet-servlet.xml」を配置した。中身はまだ空っぽ。
Controller
MVCのうち「C」の役割を持つのがController。DispatcherServletから委譲され、かわってRequest、とResponseを受け取り、ModelAndViewを返す。
下の例では、単にindex.jspに遷移するだけのController。
public class IndexController implements Controller {
public ModelAndView handleRequest( HttpServletRequest req, HttpServletResponse res) throws Exception{
return new ModelAndView("/index.jsp"); }}
bean定義ファイルには以下のように書いた。この定義はどうもDispatcherServlet-servlet.xmlに書かないとだめらしい。
<bean name="/index.do" class="com.daipresents.spring204.controller.IndexController"/>
これでMappingが完了するはず。あとはデプロイして「/ContextPath/index.do」をたたくと、IndexControllerが呼ばれてindex.jspに遷移する。
以上が、SpringのWebMVCを使った簡単なWebアプリの作り方。




