2011年11月17日木曜日

[Spring][web.xml][設定ファイル]Springの設定ファイル記述について

Springフレームワークに必要となる設定ファイルはいくつかあるが、まずは "web.xml" の設定を行う。
他の全ての設定ファイルを作る前に、このファイルを作成する。
(設定ファイルは上位→下位の順に作成していくと分かりやすい)

web.xmlはフレームワークを使わないサーブレットプログラムと同様、クラスパス上に置く。(WEB-INF/web.xmlなど)
Tomcat等のAPサーバが持っているweb.xmlにない、アプリケーション独自の設定を追加するために必要である。
Springフレームワークを使うときは、最初にXMLのバージョンとエンコードを設定する。

<?xml version="1.0" encoding="Shift_JIS"?>

昨今のプロジェクトでは、UTF-8が増えているがここではShift_JISで解説する。
(ただし設定ファイルごとにエンコードは変えてもいいので、別のファイルはUTF-8で作成する。後述)

次に、web-appタグを記述する。
次の記述は、Spring3.0.2(Java1.6、Tomcat6.0)を動かしたときの設定。

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">

JSP中で使えるEL式等が異なるため、この設定は重要。
(例えばこの設定だと、Java1.5、Tomcat5.5で動かない)
ネットを調べて探し当てるのは時間と労力の無駄遣いなので、ダウンロードしたSpringフレームワークに付属しているサンプルの設定ファイルをコピーすること。
そうでなければ既存の動いている信頼性のあるサンプル(書籍のおまけでも何でも)からコピーする。

日本語対応させるためには、次の設定を記述する。

  <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>Shift_JIS</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

ここでは日本語コードをShift_JISとしている。
encodingの箇所を変更すれば、日本語コードを変更できる。

Springの設定ファイルを読み込ませるためのリスナ設定は、次の通り。

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

Springフレームワーク使う宣言のようなもので、こう記述するとSpringの設定ファイルとして "/WEB-INF/applicationContext.xml" を読むようになる。
applicationContext.xmlというファイル名はデフォルトで、通常はこの名前を用いる。

サーブレットの設定は、次の通り。

  <servlet>
    <servlet-name>[プロジェクト名]</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>[プロジェクト名]</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>

[プロジェクト名]の箇所はeclipseのプロジェクト名を記述する、で構わない。(後で変更してもよい)
Tomcat等のAPサーバを起動後、"http://localhost:8080/[プロジェクト名]/index.html"といったアクセスとなる。
servlet-mappingは"index.html"の部分のことを示す。
ブラウザのURLに"http://localhost:8080/[プロジェクト名]/index.html"と入力してEnterを押した場合、index.htmlに対応するコントローラをSpringフレームワークが探すこととなる。
ちなみにこう書いた場合"index.jsp"を指すが、それは別の設定ファイルでprefixとsuffixを操作しなくてはならない。(後述)

ここまでの設定を順番に記述し、</webapp>タグで閉じればweb.xmlの記述は完了。

0 件のコメント:

コメントを投稿