Mavenを使ったWebアプリケーションの詳細手順


Webアプリケーションを開発する構想
簡単なJSP/Servletを実現します。
  • は、Webアプリケーションエンジニアリングを作成する環境を構築する。
  • は、Webアプリケーションエンジニアリングを作成する。
  • Webアプリケーションプロジェクトのディレクトリ構造。
  • は、Webサーバと結合して、Webアプリケーションを発行する。
  • は、Webアプリケーションの開発とテストプロセスのリリースを体験する。
  • クラシックなMVCバージョンのユーザーCRUDを実現します。
  • 熟練している第1歩の中のいくつかの方面。
  • は典型的な業務ロジックを結合し、CRUDを実現する。
  • Web版ハローワールドを実現
    1)File→New→Othersコマンドを選択します。Create Maven Projectコマンドを選択し、「次へ」ボタンをクリックします。Webアプリケーションプロジェクトを作成するAchetypeを選択して、図1に示します。
    图 1 选择Web Archetype
    他の同様のものを選んでもいいです。maven-archetype-webappなどのWebアプリケーションを作成してもいいです。もちろん、インターネットから座標を見つけた後のアーチタイププラグインを選択してインストールすることもできます。
    どのように新しいアーチタイプをインストールしますか?図中のAdd Achetype…ボタンをクリックして、出現したウィンドウにネット上で見つけたプラグイン座標情報を入力して、図2に示すようにします。
    图 2 添加 Archetype
    OKボタンをクリックすると、MyEclipseが自動的にこのウィジェットをダウンロードします。新規作成プロジェクトのウィザードページを開くと、図3に示すように、追加されたばかりのAchetypeプラグインが追加されていることが分かります。
    图 3 选择 webapp-javaee6 Archetype
    2)「next」をクリックして、次の画面に新しく作成したWebプロジェクトの座標情報とパッケージ名を入力します。
    图 4 Maven项目坐标
    3)Finishボタンをクリックすると、M 2 Eclipseは自動的にWebプロジェクトMvnDemo 02を作成します。src/mainディレクトリにwebappディレクトリを追加しました。中にはWebアプリケーション特有のWEB-INFディレクトリ、web.xmlとindex.jspなどがあります。
    その中でもwebappディレクトリと内部のファイルと構造はMavenに固定されています。このようにしてWebアプリケーションプロジェクトを作成しました。
    サンプルコードの作成
    プロジェクトが作成されました。次はテストコードを書きます。次は3つのコード(2つのjspと1つのservlet)を書きます。
    index.jspの中に入力枠が表示され、入力内容を提出できます。コードは下記の通りです。
    
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Index JSP</title>
      </head>
      <body>
        <form action="welcomeServlet" method="post">
                 :<input type='text' name="name"/><br/>
          <input type='submit' value='  '/>
        </form>
      </body>
    </html>
    welcome.jspは、挨拶情報を表示し、コードは以下の通りです。
    
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Welcome JSP</title>
      </head>
      <body>
            :${welcome }
      </body>
    </html>
    welcome Servletは、index.jspから送られてきた名前を受信し、挨拶情報を生成し、welcome.jspに表示する。
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
    * Servlet implementation class WelcomeServlet
    */
    public class WelcomeServlet extends HttpServlet {
      private static final long serialVersionUID = 1L;
    
      /**
       * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
       *   response)
       */
      protected void service(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("name");
        String welcome = "Hello," + name;
        request.setAttribute("welcome", welcome);
        request.getRequestDispatcher("/index.jsp").forward(request, response);
      }
    }
    
    もちろん、コードの作成以外に、web.xml、servletの設定が必要です。web.xmlコードは以下の通りです。
    
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://java.sun.com/xml/ns/javaee"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      version="2.5">
      <display-name>MvnDemo02</display-name>
      <session-config>
        <session-timeout>30</session-timeout>
      </session-config>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <servlet>
        <description></description>
        <display-name>WelcomeServlet</display-name>
        <servlet-name>WelcomeServlet</servlet-name>
        <servlet-class>com.mengma.demo.MvnDemo02.WelcomeServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>WelcomeServlet</servlet-name>
        <url-pattern>/WelcomeServlet</url-pattern>
      </servlet-mapping>
    </web-app>
    Webプロジェクトの構築
    前期の構築過程は前の基本的なJavaプロジェクトと同じで、自分の必要に応じてpom.xmlに対応するプラグインを配置し、対応するグラフィックスメニューコマンドを実行すればいいです。ここでは説明を繰り返さないでください。
    一つのWebアプリケーションが構築された後、パッケージをコンパイルしてインストールすればいいだけでなく、Webサーバに公開してテストデバッグを行う必要があります。ここでは主に2つのTomcat 7サーバーにテストを開始する方法を紹介します。プロジェクト開発の過程で自分の必要に応じて、その中の一つを選ぶことができます。
    1.MavenのJettyプラグインを使ってWebを配置する
    pom.xmlにJettyプラグインの座標情報を追加すると、以下のようになります。
    
    <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>maven-jetty-plugin</artifactId>
      <version>6.1.26</version>
      <configuration>
        <webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory>
      </configuration>
    </plugin>
    MyEclipseにWebサーバの動作環境を設定します。
    MyEclipseメニューWindow→Preferencesコマンドを選択して、Preferencesウィンドウを開き、左ツリーServer→Runtime Evironmentを選択します。
    图 5 MyEclipse的Web服务器
    右のAdd...ボタンをクリックして、選択サーバのウィンドウが表示されます。選択したウィンドウのApache Tomcat v 7.0サーバを図6に示します。
    图 6 添加 Tomcat 7.0
    NextボタンをクリックしてTomat Server設定ページを選択し、TomcatのインストールディレクトリとJRE実行環境(JDK)を選択します。
    图 7 添加 Tomcat 的 Java home
    FinishとApple and Closeボタンをクリックして、すべての設定ウィンドウを閉じて、MyEclipseのWeb Server構成を完成します。
    「プロジェクト」を右クリックし、Run As→Maven buildコマンドを選択し、カスタムlaunchウィンドウを開き、Goalsに起動するプラグイン名とターゲット「ject:run」を入力して、図8に示すようにします。
    图 8 运行 jetty
    Runボタンをクリックして運転してから、その後は毎回Run As→Maven buildコマンドで重複運転を選択します。
    サーバーが起動しました。ブラウザを開けて入力します。http://localhost:8080/MvnDemo02/index.jspこれで最初のページにアクセスできます。
    2.cargo-maven 2-pluginプラグインを使ってWebを配置する
    cargoプラグインを使うのは比較的簡単で、pom.xmlに配置するだけで、アプリケーションの配置に必要な情報を指定して、Run As→Maven installコマンドを実行します。cargoプラグインは自動的にwarパッケージに作成されたアプリケーションを指定のWebサーバの配布ディレクトリに公開します。
    次に行うのはWebサーバを起動し、以前のようにブラウザを開いてページを閲覧することです。
    Gargoのpom.xmlにおけるプラグインの構成は以下の通りです。
    
    <project xmlns="http://maven.apache.org/POM/4.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
      http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>cn.com.mvnbook.demo</groupId>
      <artifactId>MvnDemo02</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <name>MvnDemo02 Web App</name>
    
      <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>javax</groupId>
          <artifactId>javaee-web-api</artifactId>
          <version>6.0</version>
          <scope>provided</scope>
        </dependency>
    
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.26</version>
            <configuration>
              <webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory>
            </configuration>
          </plugin>
          <plugin>
            <!--            -->
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.4.8</version>
            <configuration>
              <!--    ,  start、stop                   -->
              <wait>true</wait>
              <!--       -->
              <container>
                <!--   tomcat   -->
                <containerId>tomcat7x</containerId>
                <!--     :standalone, installed  -->
                <type>installed</type>
                <!--   Tomcat   , catalina.home -->
                <home>C:\work\servers\apache-tomcat-7.0.69</home>
              </container>
              <!--       -->
              <configuration>
                <!--   ,existing:   -->
                <type>existing</type>
                <!-- Tomcat   , catalina.home -->
                <home>C:\work\servers\apache-tomcat-7.0.69</home>
              </configuration>
              <deployables>  <!--      -->
                <deployable>  <!--    War    -->
                  <groupId>cn.com.mvnbook.demo</groupId>
                  <artifactId>MvnDemo02</artifactId>
                  <type>war</type>
                  <properties>
                    <context>MvnDemo02</context>  <!--      -->
                  </properties>
                </deployable>
              </deployables>
              <deployer>    <!--      -->
                <type>installed</type>    <!--    -->
              </deployer>
            </configuration>
            <executions>
              <!--       -->
              <execution>
                <id>verify-deployer</id>
                <phase>install</phase>   <!--   install -->
                <goals>
                  <goal>deployer-deploy</goal>
                </goals>
              </execution>
              <execution>
                <id>clean-deployer</id>
                <phase>clean</phase>
                <goals>
                  <goal>deployer-undeploy</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
    
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
              <source>1.6</source>
              <target>1.6</target>
              <compilerArguments>
                <endorseddirs>${endorsed.dir}</endorseddirs>
              </compilerArguments>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1</version>
            <configuration>
              <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.1</version>
            <executions>
              <execution>
                <phase>validate</phase>
                <goals>
                  <goal>copy</goal>
                </goals>
                <configuration>
                  <outputDirectory>${endorsed.dir}</outputDirectory>
                  <silent>true</silent>
                  <artifactItems>
                    <artifactItem>
                      <groupId>javax</groupId>
                      <artifactId>javaee-endorsed-api</artifactId>
                      <version>6.0</version>
                      <type>jar</type>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
        <finalName>MvnDemo02</finalName>
      </build>
    </project>
    「プロジェクト」を右クリックし、Run As→Maven installコマンドを選択した後、Tomcat 7のリリースディレクトリの下でMvnDemo 02.warを発見できます。起動したら自動的に発表して訪問できます。
    テスト
    前のどのような方式に関わらず、サーバーを起動したら、ブラウザを開けて、入力します。http://localhost:8080/MvnDemo02/index.jsp リンクしたらテストができます。
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。