2012年04月18日

jsp→servlet→jsp値の受け渡し

jsp(input.jsp)で入力した年月日から、servlet(WeekReturn.java)で曜日を取得し、jsp(result.jsp)にて結果を表示するという一連の流れを作ってみたいと思います。
イメージ的には以下のような感じです。
4-1image.PNG

まずソースの配置から。
HelloWorldにて使用したプロジェクトをそのまま使用します。
(新たに作るのが面倒なので…)
4-2package.PNG
赤枠の箇所が新たに追加した部分です。
weekパッケージを作成し、その中にWeekReturn.javaを作成します。
jspフォルダにinput.jspとresult.jspを作成します。

またweb.xmlは以下の赤字の部分を追記しました。

web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>helloworld.HelloServlet</servlet-class>
</servlet>

<servlet>
<servlet-name>week</servlet-name>
<servlet-class>week.WeekReturn</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/servlet/test</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>week</servlet-name>
<url-pattern>/week/test</url-pattern>
</servlet-mapping>


</web-app>


ソースファイルの入力は以下の通りです。
input.jsp
<%@ page contentType="text/html; charset=Shift_JIS" %>
<html>
<head>
<title>input</title>
</head>
<body>
<form method="POST" action="/helloServlet/week/test">
<input type="text" name="year" size="6">年
<input type="text" name="month" size="6">月
<input type="text" name="day" size="6">日は
<input type="submit" value="何曜日?">
</form>
</body>
</html>


WeekReturn.java
package week;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class WeekReturn extends HttpServlet {

public void doPost( HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
// 曜日の定義
String week[] = {"","日","月","火","水","木","金","土"};

// 値の取得&設定
String year = request.getParameter("year");
String month = request.getParameter("month");
String day = request.getParameter("day");
request.setAttribute("year", year);
request.setAttribute("month", month);
request.setAttribute("day", day);

// 曜日の取得
Calendar cal = Calendar.getInstance();
cal.set(Integer.parseInt(year),
Integer.parseInt(month)-1,
Integer.parseInt(day));
request.setAttribute("week",
week[cal.get(Calendar.DAY_OF_WEEK)]);

// result.jspへ遷移
getServletConfig().getServletContext().
getRequestDispatcher("/jsp/result.jsp" ).
forward( request, response );
}
}


result.jsp
<%@ page contentType="text/html; charset=Shift_JIS" %>
<html>
<head>
<title>input</title>
</head>
<body>
<form method="POST" action="/helloServlet/week/test">
<%= request.getAttribute( "year" ) %>年
<%= request.getAttribute( "month" ) %>月
<%= request.getAttribute( "day" ) %>日は
<%= request.getAttribute( "week" ) %>曜日
</form>
</body>
</html>


実際はjspやservletで値が正しいかの検証を行う必要がありますが、面倒なので省いています。
あとHTMLやJAVAは基本的の基本的な事は理解しているという前提の基に記載していますので、各処理の説明も省いています。(ただ説明できないだけという噂も…)

ちなみに実行結果は以下の通りになってます。
入力画面(input.jsp)
4-3input.PNG

結果表示画面(result.jsp)
4-4result.PNG

WEBアプリは入力(jsp)して、処理(servlet)して、表示(jsp)するという一連の繰り返しですから、ここら辺をガシガシ作っていけば、それなりのモノが作れるかなと思ったりしています。(実際はそんなに甘くないけど)
posted by mamanigo at 23:48| Comment(0) | TrackBack(0) | tomcat | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/265419771

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。