Spring2.0.4のWebMVC

感想おまちしてます!

DIとかAOPとか、Springはビジネスロジックの実装が面白そうだけど、やっぱりしりたいのはWebとの連携部分。

ざっと読んでみたけど、Springのドキュメントはわかりにくい。手段がたくさんあるので、どれを選ぶかが重要になりそう。

Spring Reference III. The Web

スポンサーリンク

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アプリの作り方。