サイト検索
検索
サイトメニュー
Menu
RTB SoftLab ラテベ ソフトラボ (ラテベラボ)
私の知っているソフトの操作を解りやすく、解説していきます。
サイト検索
検索
サイトメニュー
Menu

投稿日:2020年10月3日

更新日:2020年9月29日

今までとこれからの内容

前回で、JAVAとJSPの初めての開発を行いました。

Jave+Tomcatとはを断念して、いきなり開発

順調にJAVAの勉強は、進んでいます。

今回は、始めてのJSPとJAVの通信がを行いましたので、記事にすることとしました。

今回の目標は!

  1. JSP⇒Javaで、きちんと表示が出来る事!
  2. それを理解する事!

たぶん、このぐらいではないでしょうか!?

早速、作業開始!

早速実践

前回使用したフォルダーを全て使っていきます。

今までの操作しているディレクトリ

  • D:\Tomcat\Tomcat\webapps\Hello
  • D:\Tomcat\Tomcat\webapps\Hello\WEB-INF
  • D:\Tomcat\Tomcat\webapps\Hello\WEB-INF\classes

前回の記事をみて頂けると、これからの事が、詳しくわかると思います。

新規で、HTMLを作成します。(JSPでも可能)

保存場所:D:\Tomcat\Tomcat\webapps\Hello

ファイル名:form.html

<!DOCTYPE HTML>
<head>
    <meta charset="utf-8">                  <!--    文字コード指定  -->
</head>
<body>
    <form method="post" action="RequestServ">  
        <input type="text" name="name1"><br><br>
        <input type="checkbox" name="vehicle" value="車">車<br>
        <input type="checkbox" name="vehicle" value="バイク">バイク<br>
        <input type="checkbox" name="vehicle" value="飛行機">飛行機<br><br>
        <input type="submit" value="submit">
    </form>

</body>
</html>

これは、ただのHTMLなので、特記はありません。

web.xmlをに追加する。

保存場所:D:\Tomcat\Tomcat\webapps\Hello\WEB-INF\


    <servlet>
		<servlet-name>RequestServ</servlet-name>	<!--	リンク文字列	-->
		<servlet-class>RequestServ</servlet-class>	<!--	JAVAファイルID	-->
	</servlet>
	<servlet-mapping>
		<servlet-name>RequestServ</servlet-name>	<!--	リンク文字列	-->
		<url-pattern>/RequestServ</url-pattern>		<!--	JAVAファイルID	-->
    </servlet-mapping>

Javaを作成する。

保存場所:D:\Tomcat\Tomcat\webapps\Hello\WEB-INF\classes

ファイル名:RequestServ.java

//パッケージをインポートします。
import java.io.*;
import java.util.*;					//	型:Enumerationに必要
import javax.servlet.*;
import javax.servlet.http.*;		//	GenericServletクラス

/**
 * ▼	継承	HttpServletクラス
 * @param	null	なし		:	なし
 * @return	null	void		:	void:戻り値なしの意味	
 */
public class RequestServ extends HttpServlet {

	/**
	 * ▼	イベント	doPostであった場合
	 * @param	array	req			:	In	:受取パラメータ
	 * @param	array	res			:	Out	:受渡パラメータ
	 * @return	null	void		:	void:戻り値なしの意味	
	 */
    public void doPost(HttpServletRequest req	,HttpServletResponse res)
        throws ServletException, IOException {
        
		res.setContentType("text/html; charset=UTF-8");     //	出力用の文字コード
        PrintWriter out = res.getWriter();		            //	レスポンスライター

		//	ヘッダー情報
		Enumeration headers = req.getHeaderNames();
		String	head		=	"";
		while (headers.hasMoreElements()) {
            head			=	head	+headers.nextElement() + "<br>";
		}
		
		//	パラメータの取得
		req.setCharacterEncoding("UTF-8");								//	ポストパラメータの文字コード

		Enumeration	paraS	=	req.getParameterNames();				//	全てのパラメータ
		if	(	!	paraS.hasMoreElements()	){
			out.println("パラメータなし");
			return;
		}

		String	name		=	req.getParameter("name1");
		String	vehicleS[]	=	req.getParameterValues("vehicle");
		
		String	para		=	"";
		while (paraS.hasMoreElements()) {
			para			=	para		+paraS.nextElement() 	+"<br>";
		}

		String	vehicle		=	"";
		for (int i = 0; i < vehicleS.length; i++ ){
			vehicle			=	vehicle		+vehicleS[i] 	+"<br>";
        }

		//HTML出力
		String	url		=	"";
		url				=	"http://www.javaroad.jp/servletjsp/sj_servlet2.htm";

		String	html	=	"";
		html	+=	"<!DOCTYPE HTML>";
		html	+=	"<html>";
		html	+=	"	<meta charset=\"UTF-8\">";
		html	+=	"<head>";
		html	+=	"</head";
		html	+=	"<body>";
		html	+=	"<h1>2.クライントからのデータ取得	RequestServ 200815-03</h1>";

		html	+=	"<h2>ヘッダ情報</h2>";
		html	+=	"<p>head	=	"	+head		+"</p>";

		html	+=	"<h2>全てのパラメータ</h2>";
		html	+=	"<p>para	=	"	+para		+"</p>";

		html	+=	"<h2>受取パラメータ</h2>";
		html	+=	"<p>name	=	"	+name		+"</p>";
		html	+=	"<p>name	=	"	+vehicle	+"</p>";

		html	+=	"<a href=\""	+url	+"\""	+" target=\"_blank\">こちらから</a>";
		html	+=	"</html>";
		html	+=	"</body>";
		
		out.println(html);	//outオブジェクトにて、ブラウザに返却
        out.flush();  		//データ返信の終了qqqq

	}
	
	/**
	 * ▼	リクエスト(GET、POST)を分析し、???
	 * 		※	serviceメソッドをオーバーライドした場合は、doXxxメソッドは呼び出されません。
	 * 			呼び出す場合は、serviceメソッド内で意識的にdoXxxメソッドを呼び出す必要があります。
	 * @param	array	req			:	なし
	 * @param	array	res			:	なし
	 * @return	null
	 */
	public void doGet(HttpServletRequest req	,HttpServletResponse res)
		throws ServletException, IOException {
	
	}
	
}

ビルドバッチにRequestServ.javaを追加する

保存場所:D:\Tomcat\Tomcat\webapps\Hello\

その前に、現在の環境変数

変数名パス
CATALINA_HOMED:\Tomcat\Tomcat
CLASSPATHD:\Tomcat\Tomcat\lib
JAVA_HOMED:\Java\jdk1.8.0_261
JRE_HOMED:\Java\jdk1.8.0_261\jre
Path%JAVA_HOME%\bin
Path%JAVA_HOME%\jre\bin
Path%JAVA_HOME%
Path%CLASSPATH%\servlet-api.jar
Path%CLASSPATH%
システム環境変数の設定
(将来使うものも含む)

バッチのファイル名は、なんでもOK!

rem	d:
rem	cd Tomcat\Tomcat\webapps\Hello
	javac -encoding UTF-8 -classpath %CLASSPATH%/servlet-api.jar .\WEB-INF\classes\HelloServlet.java
	javac -encoding UTF-8 -classpath %CLASSPATH%/servlet-api.jar .\WEB-INF\classes\RequestServ.java

	cmd /k

バッチを実行し、エラーがないことを確認する。

テスト

Tomcatを起動して、下記でアクセスする

Tomcatの起動方法が解らない方は、こちらで、説明しています。

form.html
form.html

適当にチェックをつけて、サブミット!

クライントからのデータ取得後
クライントからのデータ取得後

問題なく実行されました(祝♪)

ハマった所

今回は、順調!順調!;

参考サイト

ありがとうございました♪

残っている懸案

分類懸案結論完了
Javamainは、.netと同じmain?
VSCodeターミナルにでてきたけど、
ブラウザはどうするの?
javathrows ServletException, IOException 
java日本語が文字化け。
UTF-8の指定でしょうたぶん!
言語コードを指定すればOK完了
VSCodeVSCode赤表示は、エラーの事?
これからの懸案一覧

懸案増えましたね~www^^;

今回のまとめ

今回のメモは!

  • クライアントからの受信は!
    • PostとGetによって、Functionが変わってくる。
  • 言語コードは、明示的に指定しないといけない。

今回参照したサイトは、いいかも知れません♪
このサイトをどしどし進めて、問題点のみを記事にするかな?

どんどん、JAVAに浸かっていきますよ~(笑)

でも、そろそろ、VSCodeの環境見直しが必要?

さて、がんばりますよ~♪
(でも、ハマりたくないよ~(笑))

RTB カレンダー

30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
通販サイト(ECサイト)デモへ
ラテベラボブログへ
ナノシスへ

RTBアーカイブ(旧 Widget 版)

RTB ポストランキング (旧)

RTBアーカイブ(旧 Widget 版)