fc2ブログ

Webアプリを作る(2)

Eclipseはインストール済みという前提でstruts1.xでWebアプリを作ります。

■strutsでの作成
・Apache Software Foundationのホームページからstrutsの「Full Distribution」をダウンロード。ダウンロード元
・ダウンロードしたzipファイルを展開。さらにその「struts-1.X.X\apps」配下にある「struts-blank-1.X.X.war」もjarコマンドで展開する。
・Eclipseを起動後、プロジェクトを新規作成。プロジェクトタイプは「Web/動的 Web プロジェクト」。プロジェクト作成における属性は以下の通り。
 - ターゲット・ランタイム = Tomcat
 - 動的 web モジュール バージョン = 2.5
 - 構成 = Apache Tomcat vX.X デフォルト構成
・「struts-blank-1.X.X.war」を展開した中から「WEB-INF」フォルダの内容を、そのままEclipseの「Web/動的 Web プロジェクト」で作成された「WEB-INF」フォルダに被せる。必要のないファイルもコピーされるが動作に支障ないのでスルー。
・プロジェクトの「WebContent」フォルダ配下にjspを作成する。「WEB-INF」配下には作成しないように注意。サンプルはこんな感じ。

(1)入力用(start.jsp)

<%@ page contentType="text/html; charset=Shift-JIS" %>
<%@ taglib uri="http://struts.apache.org/tags-html"
prefix="html" %>
<html:html>
<head>
<title>Today's weather</title>
</head>
<html:form action="/test">
<table border="0">
<html:errors/>
<tr><td>
今日の天気は?<br>
<html:text property="weather" size="20" maxlength="30" />です。
</td></tr>
<tr><td>
<html:submit value="OK" />
</td></tr>
</table>
</html:form>
</html:html>


(2)出力用(result.jsp)

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="http://struts.apache.org/tags-html"
prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean"
prefix="bean" %>

<html:html>
<head>
<title>Result</title>
</head>
<html:form action="/test">
<h2>今日の天気は<bean:write name="TestForm" property="weather" />です。<h2/>
</html:form>
</html:html>

・上記手順で作成したプロジェクト配下の「Java Resources/src」にアクションとフォームを作成。サンプルはこんな感じ。
(1)アクション

package test;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import test.form.TestForm;

public class TestAction extends Action {

Log log = LogFactory.getLog(TestAction.class);

public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {

request.setCharacterEncoding("Windows-31J");
TestForm testForm = (TestForm) form;
log.info(" weather = "+testForm.getWeather());

return mapping.findForward("success");
}
}

(2)フォーム

package test.form;

import org.apache.struts.action.ActionForm;

/**
* TestForm.java
*/
public class TestForm extends ActionForm {

private String weather;

/**
*
* @return
*/
public String getWeather() {
return weather;
}
/**
*
* @param weather
*/
public void setWeather(String weather) {
this.weather = weather;
}
}

・「Eclipse All in One」としてダウンロードしたTomcatのフォルダから、「\tomcat\X.X\webapps\examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.java」を「Java Resources/src」配下にプログラムソースとして配置する。パッケージは適当に調整。
・デフォルトで用意される「web.xml」の「web-app」XMLタグ内の「display-name」タグと「welcome-file-lis」タグの間に以下のXMLタグを追加。適当に配置するとタグの順番が違うとエラーになるので注意。

<filter>
<filter-name>EncodeFilter</filter-name>
<filter-class>test.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>Shift_JIS</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- Standard Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

・Eclipseプロジェクト配下の「WebContent\WEB-INF\struts-config.xml」を以下の内容で丸ごと差し替える。

<?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<!-- ========================= Form Bean Definitions -->
<form-beans>
<form-bean name="TestForm" type="test.form.TestForm" />
</form-beans>

<!-- ========================= Global Exception Definitions -->
<global-exceptions>
</global-exceptions>

<!-- ========================= Global Forward Definitions -->
<global-forwards>
</global-forwards>

<!-- ========================= Action Mapping Definitions -->
<action-mappings>
<action
attribute="TestForm"
input="/pages/start.jsp"
name="TestForm"
path="/test"
type="test.TestAction"
scope="session"
validate="true">
<forward name="success" path="/pages/result.jsp" />
</action>
</action-mappings>

<!-- ========================== Message Resources Definitions -->

<!-- ========================== Plug Ins Configuration -->

<!-- ========================== Tiles plugin -->

<!-- ========================== Validator plugin -->
</struts-config>

・ソースファイルや設定ファイルのバグを除去したら、Eclipseの「サーバー」ビューを表示し、「新規サーバー・ウィザード」からサーバを新規作成。サーバー上に構成するリソースとして当該プロジェクトも追加。
・サーバを起動後、ブラウザを起動して「http://localhost:8080/{作成プロジェクト名}/{jspを配置したサブフォルダ名}/start.jsp」とアドレスバーに入力すれば、プログラムが起動される。
スポンサーサイト



Webアプリを作る(1)

まっさらな状態からWebアプリの開発環境を作るための手順・ノウハウを書き殴りレベルで記したものです。
Eclipseをベースにしています。

■Eclipseのセットアップ
・日本語化が面倒なので、「Pleiades All in One」を使用。タイプはUltimate、バージョンは3.7(4.2は遅いらしい)。ダウンロード元
・Zipファイルを解凍。JDKやTomcatのフォルダもあるので、解凍先のフォルダを作った上で解凍。

■Servlet/JSPの作成
・Eclipseを起動後、プロジェクトを新規作成。プロジェクトタイプは「Web/動的 Web プロジェクト」(Java プロジェクトだとデバッグができない)。プロジェクト作成における属性は以下の通り。
 - ターゲット・ランタイム = Tomcat
 - 動的 web モジュール バージョン = 2.5
 - 構成 = Apache Tomcat vX.X デフォルト構成
・上記手順で作成したプロジェクト配下の「Java Resources/src」にサーブレットを作成。サンプルはこんな感じ。
package test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=Shift_JIS");

request.setAttribute("test", "今日は晴天なり");

getServletContext().getRequestDispatcher("/hello.jsp").forward(request, response);
}
}

・プロジェクトの「WebContent」フォルダ配下にjspを作成する。「WEB-INF」配下に作成すると(デフォルトでは)外部からアクセス不可(フォワード先として無効)なので注意。サンプルはこんな感じ。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<html>
<%
String item = "Hello JSP!";
if( request.getAttribute("test") != null && request.getAttribute("test").toString().length()>0 ){
item = request.getAttribute("test").toString();
}
%>
<head>
<title>Hello! JSP</title>
</head>
<body>
<h2>
<%=item%>
<h2/>
</body>
</html>

・デフォルトで用意される「web.xml」の「web-app」XMLタグ内に以下のXMLタグを追加。

<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>test.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-namev
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>

・ソースファイルや設定ファイルのバグを除去したら、Eclipseの「サーバー」ビューを表示し、「新規サーバー・ウィザード」からサーバを新規作成。サーバー上に構成するリソースとして当該プロジェクトも追加。
・サーバを起動後、ブラウザを起動して「http://localhost:8080/{作成プロジェクト名}/TestServlet」とアドレスバーに入力すれば、プログラムが起動される。サーバをデバッグモードで起動すればServlet、JSPのスクリプトレット(<%~%>)部分でプログラム実行のブレイクが可能。
プロフィール

白虎

Author:白虎

最新記事
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク