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