Java/Cactus
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
----
//ここにコンテンツを記述します。
**Cactusとは [#qd04ede8]
[[Cactus:http://jakarta.apache.org/cactus/index.html]]と...
JUnitのクラスを拡張して、コンテナ上でテストを行うためのク...
具体的には、requestパラメータにいろいろな値をセットしてブ...
またCactusで対象としているモジュールははServlet,JSP,Filte...
#contents
**ダウンロード [#l74a60e4]
[[ここ:http://jakarta.apache.org/cactus/downloads.html]]...
ダウンロードして、サンプルコーディングを作りながら試して...
**サンプルの説明 [#df14f0da]
今回はサーブレットとフィルタとJSPを使ったモジュールのテス...
#ref(01.png)
テストのサーブレット(kino.servlet.SampleServlet)はユーザ...
フィルタ(kino.filter.RequestEncodingFilter)はrequest.setC...
***サンプルの一部 [#n765869a]
-SampleServlet
public void doGet(HttpServletRequest request, HttpServle...
throws ServletException, IOException {
String param1 = request.getParameter("param1");
String param2 = request.getParameter("param2");
// パラメタに値が入ってたら値を連結
if (param1 != null && param2 != null) {
String answer = param1 + param2;
request.setAttribute("answer", answer);
request.setAttribute("param1", param1);
request.setAttribute("param2", param2);
}
sc.getRequestDispatcher("/WEB-INF/index.jsp").forward(...
}
-index.jsp
<jsp:useBean id="answer" class="java.lang.String" scope=...
<jsp:useBean id="param1" class="java.lang.String" scope=...
<jsp:useBean id="param2" class="java.lang.String" scope=...
<meta http-equiv="Content-Type" content="text/html; char...
<title>サンプルアプリケーション</title>
</head>
<body>
<p>サンプルアプリケーション</p>
<form action="<%=request.getContextPath()%>/SampleServle...
<table border="0">
<tbody>
<tr>
<td>param1</td>
<td><input type="text" name="param1" size="20" val...
</tr>
<tr>
<td>param2</td>
<td><input type="text" name="param2" size="20" val...
</tr>
<tr>
<td></td>
<td><input type="submit" name="action" value="実行...
</tr>
</tbody>
</table>
<p><%=answer%></p>
</form>
-RequestEncodingFilter
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain)
throws ServletException, IOException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
**Cactusでテストを行うための準備 [#jd3e8f56]
***jarファイルの配置 [#wc3e19be]
WEB-INF/lib ディレクトリに
junit-3.8.1.jar
aspectjrt-1.1.1.jar
cactus-1.6.1.jar
commons-httpclient-2.0.jar
commons-logging-1.0.3.jar
を配置しておきます。
***cactus.propertiesの配置 [#q992af08]
次にクラスパスが通っているディレクトリにcactus.properties...
このファイルに記述する内容は
cactus.contextURL=http://localhost:9080/CactusTest
のみでOKです(テスト対象のURL)。
***jspRedirector.jspの配置 [#s1e9c708]
jspRedirector.jspをルート直下に配置します。
最終的にディレクトリ構成は以下のようになりました。
#ref(03.png)
*** web.xmlの編集 [#u1c3cb52]
Cactusはテスト対象のプログラムを直接呼び出すのではなく、...
クライアント(テストクラス) -> リダイレクタ -> テストクラ...
という方式でテストを行います。というわけでweb.xmlにリダイ...
登録する内容は
<filter>
<filter-name>FilterTestRedirector</filter-name>
<filter-class>org.apache.cactus.server.FilterTestRedir...
</filter>
<filter-mapping>
<filter-name>FilterTestRedirector</filter-name>
<url-pattern>/FilterRedirector</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>ServletTestRedirector</servlet-name>
<servlet-class>org.apache.cactus.server.ServletTestRed...
</servlet>
<servlet>
<servlet-name>jspRedirector</servlet-name>
<jsp-file>/jspRedirector.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>ServletTestRedirector</servlet-name>
<url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jspRedirector</servlet-name>
<url-pattern>/JspRedirector</url-pattern>
</servlet-mapping>
などです。
以上で準備は完了です。
**ようやくテストクラスの記述 [#n6df8ed7]
ようやくテストクラスを記述します。
*** [#u3be3a1b]
**TIPS [#c96516bd]
*** リクエストURLを偽造する。 [#pacedaa3]
webRequest.setURL("localhost:8080","/[context]","/[Servl...
-http://www.ingrid.org/jajakarta/cactus/doc/howto_testcas...
----
この記事は
#vote(おもしろかった[15],そうでもない[9])
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
#topicpath
----
//ここにコンテンツを記述します。
**Cactusとは [#qd04ede8]
[[Cactus:http://jakarta.apache.org/cactus/index.html]]と...
JUnitのクラスを拡張して、コンテナ上でテストを行うためのク...
具体的には、requestパラメータにいろいろな値をセットしてブ...
またCactusで対象としているモジュールははServlet,JSP,Filte...
#contents
**ダウンロード [#l74a60e4]
[[ここ:http://jakarta.apache.org/cactus/downloads.html]]...
ダウンロードして、サンプルコーディングを作りながら試して...
**サンプルの説明 [#df14f0da]
今回はサーブレットとフィルタとJSPを使ったモジュールのテス...
#ref(01.png)
テストのサーブレット(kino.servlet.SampleServlet)はユーザ...
フィルタ(kino.filter.RequestEncodingFilter)はrequest.setC...
***サンプルの一部 [#n765869a]
-SampleServlet
public void doGet(HttpServletRequest request, HttpServle...
throws ServletException, IOException {
String param1 = request.getParameter("param1");
String param2 = request.getParameter("param2");
// パラメタに値が入ってたら値を連結
if (param1 != null && param2 != null) {
String answer = param1 + param2;
request.setAttribute("answer", answer);
request.setAttribute("param1", param1);
request.setAttribute("param2", param2);
}
sc.getRequestDispatcher("/WEB-INF/index.jsp").forward(...
}
-index.jsp
<jsp:useBean id="answer" class="java.lang.String" scope=...
<jsp:useBean id="param1" class="java.lang.String" scope=...
<jsp:useBean id="param2" class="java.lang.String" scope=...
<meta http-equiv="Content-Type" content="text/html; char...
<title>サンプルアプリケーション</title>
</head>
<body>
<p>サンプルアプリケーション</p>
<form action="<%=request.getContextPath()%>/SampleServle...
<table border="0">
<tbody>
<tr>
<td>param1</td>
<td><input type="text" name="param1" size="20" val...
</tr>
<tr>
<td>param2</td>
<td><input type="text" name="param2" size="20" val...
</tr>
<tr>
<td></td>
<td><input type="submit" name="action" value="実行...
</tr>
</tbody>
</table>
<p><%=answer%></p>
</form>
-RequestEncodingFilter
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain)
throws ServletException, IOException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
**Cactusでテストを行うための準備 [#jd3e8f56]
***jarファイルの配置 [#wc3e19be]
WEB-INF/lib ディレクトリに
junit-3.8.1.jar
aspectjrt-1.1.1.jar
cactus-1.6.1.jar
commons-httpclient-2.0.jar
commons-logging-1.0.3.jar
を配置しておきます。
***cactus.propertiesの配置 [#q992af08]
次にクラスパスが通っているディレクトリにcactus.properties...
このファイルに記述する内容は
cactus.contextURL=http://localhost:9080/CactusTest
のみでOKです(テスト対象のURL)。
***jspRedirector.jspの配置 [#s1e9c708]
jspRedirector.jspをルート直下に配置します。
最終的にディレクトリ構成は以下のようになりました。
#ref(03.png)
*** web.xmlの編集 [#u1c3cb52]
Cactusはテスト対象のプログラムを直接呼び出すのではなく、...
クライアント(テストクラス) -> リダイレクタ -> テストクラ...
という方式でテストを行います。というわけでweb.xmlにリダイ...
登録する内容は
<filter>
<filter-name>FilterTestRedirector</filter-name>
<filter-class>org.apache.cactus.server.FilterTestRedir...
</filter>
<filter-mapping>
<filter-name>FilterTestRedirector</filter-name>
<url-pattern>/FilterRedirector</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>ServletTestRedirector</servlet-name>
<servlet-class>org.apache.cactus.server.ServletTestRed...
</servlet>
<servlet>
<servlet-name>jspRedirector</servlet-name>
<jsp-file>/jspRedirector.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>ServletTestRedirector</servlet-name>
<url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jspRedirector</servlet-name>
<url-pattern>/JspRedirector</url-pattern>
</servlet-mapping>
などです。
以上で準備は完了です。
**ようやくテストクラスの記述 [#n6df8ed7]
ようやくテストクラスを記述します。
*** [#u3be3a1b]
**TIPS [#c96516bd]
*** リクエストURLを偽造する。 [#pacedaa3]
webRequest.setURL("localhost:8080","/[context]","/[Servl...
-http://www.ingrid.org/jajakarta/cactus/doc/howto_testcas...
----
この記事は
#vote(おもしろかった[15],そうでもない[9])
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: