4月 7th, 2008at 17:40

Tags: ,

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

このエントリーをはてなブックマークに追加