投稿日:2020年10月3日
更新日:2020年9月29日
今までとこれからの内容
前回で、JAVAとJSPの初めての開発を行いました。
順調にJAVAの勉強は、進んでいます。
今回は、始めてのJSPとJAVの通信がを行いましたので、記事にすることとしました。
今回の目標は!
- JSP⇒Javaで、きちんと表示が出来る事!
- それを理解する事!
たぶん、このぐらいではないでしょうか!?
早速、作業開始!
早速実践
前回使用したフォルダーを全て使っていきます。
今までの操作しているディレクトリ
- 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_HOME | D:\Tomcat\Tomcat |
CLASSPATH | D:\Tomcat\Tomcat\lib |
JAVA_HOME | D:\Java\jdk1.8.0_261 |
JRE_HOME | D:\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の起動方法が解らない方は、こちらで、説明しています。
適当にチェックをつけて、サブミット!
問題なく実行されました(祝♪)
ハマった所
今回は、順調!順調!;
参考サイト
ありがとうございました♪
残っている懸案
分類 | 懸案 | 結論 | 完了 |
---|---|---|---|
Java | mainは、.netと同じmain? | ||
VSCode | ターミナルにでてきたけど、 ブラウザはどうするの? | ||
java | throws ServletException, IOException | ||
java | 日本語が文字化け。 UTF-8の指定でしょうたぶん! | 言語コードを指定すればOK | 完了 |
VSCode | VSCode赤表示は、エラーの事? | ||
懸案増えましたね~www^^;
今回のまとめ
今回のメモは!
- クライアントからの受信は!
- PostとGetによって、Functionが変わってくる。
- 言語コードは、明示的に指定しないといけない。
今回参照したサイトは、いいかも知れません♪
このサイトをどしどし進めて、問題点のみを記事にするかな?
どんどん、JAVAに浸かっていきますよ~(笑)
でも、そろそろ、VSCodeの環境見直しが必要?
さて、がんばりますよ~♪
(でも、ハマりたくないよ~(笑))