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 | 更新情報をチェックする

2012年04月03日

HelloWorld(jsp)の表示

ServletでHelloWorldを表示したので、今度はjspでHelloWorldを表示します。

まずjspを保存するフォルダを作成します。
メニューバーよりファイル>新規>フォルダを選択します。
親フォルダに「hello」を指定して、フォルダー名に「jsp」と入力し、完了ボタンを押下します。
3-1dlg1.PNG

するとjspフォルダが作成されます。
3-2menu1.PNG

jspフォルダを選択した状態で、メニューバーよりファイル>新規>ファイルを選択します。
ファイル名に「helloworld.jsp」と入力し、完了ボタンを押下します。
3-3dlg2.PNG

するとjspフォルダ配下に、helloworld.jspのファイルが作成されます。
3-4menu2.PNG

作成されたhelloworld.jspを以下の通り、入力します。

helloworld.jsp

<%@ page contentType="text/html; charset=Shift_JIS" %>
<html>
<head>
<title>HelloWorld</title>
</head>
<body>
<h1>
<%="HelloWorld!!"%>
</h1>
</body>
</html>


メニューバーよりTomcat>Tomcat起動を選択する事により、Tomcatが起動します。
起動後、ブラウザを開きhttp://localhost:8080/helloServlet/jsp/helloworld.jspを指定すると、以下の画面が表示されます。
3-5result.PNG

jspファイルは実行する際にjavaファイルが作成されます。
今回の例ではworkフォルダの下にhelloworld_jsp.javaが作成されています。
3-6eclipse1.PNG

しかし何故かエラーの表示が・・・
調べてみるとtomcat-api.jarがビルドパスに含まれていないとエラーが出るそうです。http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1463885029

さっそくメニューのプロジェクト>ビルドパスよりビルドパスを確認してみます。3-7build_path1.PNG
やはり設定されてませんでした。

ビルドパスにtomcat-api.jarを加えてOKボタンをクリックします。3-8build_path2.PNG

すると無事にエラーが取れました。
3-9eclipse1.PNG
(警告は残ってますが、とりあえず放置で・・・)


posted by mamanigo at 21:57| Comment(0) | tomcat | 更新情報をチェックする

2012年03月24日

HelloWorld(servlet)の表示

eclipseに対し、TOMCATの設定を施したので、webアプリケーションが開発できるようになりました。
今度はservletで「hello world」を出力したいと思います。

大まかな流れは以下の通りになります。
1.プロジェクトの作成
2.パッケージの作成
3.ソースファイルの作成
4.ソースファイルの入力
5.web.xmlの設定

【1.プロジェクトの作成】
メニューバーよりファイル>新規>Tomcatプロジェクトを選択します。
(またはファイル>新規>新規プロジェクトで、新規プロジェクトダイアログからJava>Tomcatプロジェクトを選択します)

新規Tomcatプロジェクトウィンドウが表示されるので、プロジェクト名を指定して、次へボタンを押下します。
2-1dlg1.PNG

続いてコンテキスト名を指定して、完了ボタンを押下します。
2-2dlg2.PNG

するとパッケージ・エクスプローラーにhelloプロジェクトが追加されます。
2-3menu1.PNG

【2.パッケージの作成】
メニューバーよりファイル>新規>パッケージを選択します。

新規Javaパッケージウィンドウが表示されるので、名前を指定して完了ボタンを押下します。
2-4dlg1.PNG

するとパッケージ・エクスプローラーに指定した名前のパッケージが作成されます。
2-5menu2.PNG

【3.ソースファイルの作成】
メニューバーよりファイル>新規>クラスを選択
新規Javaクラスウィンドウが表示されるので、パッケージに先程作成したパッケージを指定します。
またソース・フォルダーと名前を指定し、完了ボタンを押下します。
2-6dlg1.PNG

すると作成したパッケージの下に、指定した名前のソースファイルが作成されます。
2-7menu3.PNG

【4.ソースファイルの入力】
以下の通り、ソースファイルを入力する。

HelloServlet.java


package helloworld;

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

public class HelloServlet extends javax.servlet.http.HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}



【5.web.xmlの設定】
上記ソースを保存することにより、classファイルが作成される訳ですが、ブラウザにて表示するにはweb.xmlの設定が必要になります。
メニューバーよりファイル>新規>ファイルを選択
新規ファイルウィンドウが表示されるので、親フォルダーにWEB-INFを指定し、ファイル名にweb.xmlを指定して完了ボタンを押下します。
2-8dlg1.PNG

作成された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-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/servlet/test</url-pattern>
</servlet-mapping>
</web-app>



メニューバーよりTomcat>Tomcat起動を選択する事により、Tomcatが起動します。
起動後、ブラウザを開き「http://localhost:8080/helloServlet/servlet/test」を指定すると、以下の画面が表示されます。
2-9window.PNG

一応表示されましたが、どれとどれがどのような関係なのか分かり辛いため、以下に関係をまとめてみました。
2-10relation.PNG

まずURLに指定した"/helloServlet"ですが、これはプロジェクト生成時に指定した"コンテキスト名"になります。
続いてURLの"/servlet/test"ですが、これはweb.xmlの<url-pattern>に記載した箇所になります。
そして、<url-pattern>の"/servlet/test"は何かというと、<servlet-name>で定義されている"hello"で繋がれた<servlet-class>の"helloworld.HelloServlet"であることがわかります。
そして、"helloworld.HelloServlet"は何かというと、パッケージ名"helloworld"のソースファイル名"HelloServlet.java"ということになります。
以上が、各ファイルの繋がりの説明になります。
posted by mamanigo at 15:47| Comment(0) | TrackBack(0) | tomcat | 更新情報をチェックする
×

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