2022/08/24
-
動的web
- html:httpサーバー(Apacheなど)がファイル(htmlやimg)を送り返すだけ。今どきのページではJavascriptで埋め込んだコンテンツ(動画など)を同時に送り返すものも多いが。
-
JAVAの動的web:httpサーバーからアプリケーション・サーバー上で実行されているプログラム(JAVAなど)を呼び出して実行された結果をhtmlで受け取とる。
- JAVAの場合、サーブレットとJSPで実装される。
- サーブレットはクラスファイル:JAVAのクラスの一種。htmlを出力するメソッドを持っているイメージ。
- JSPファイルで中身はhtmlに近い。htmlにjavascriptを埋め込んだようなイメージ。
サーブレット
- javaプログラムとhtmlの部分以外は、決り文句なのでコピペでOK。
-
doGet(),doPost() で受け取る
- doGet はブラウザのアドレスバーから呼び出されたような場合やgetメソッドで呼び出された時に実行されるメソッド。
- doPost()は他のサーブレットやJSP、htmlのリンクから呼び出された時に実行される。
- htmlを書き出すときは「PrintWriter out = response.getWriter()」 で宣言したインスタンス(この場合はout)のprintlnメソッドにhtml文字列を引数として渡す。このパターンで覚えておけばいい(前に書いたものからコピペすればいい)。
-
サーブレットの特徴
- サーブレットはメソッドだが、「サーバー上で実行」されたときにインスタンス化されているので、どこかでnewすることはない。サーバー上に常駐し、リクエストを待っている状態と考えればよい。
- サーブレットはクラスなので、htmlの書き出し部分でもjavaで作った変数をそのまま使える。
- サーブレットはJAVAのクラスなので、src配下に置く。
- URLパターン:サーブレットを呼び出すためのURLは、基本的にはサーバー/プロジェクト名/サーブレット名と考えれば良い。サーブレット名はサーブレット内の@WebServlet("/ExServlet") に書かれる。
2022/08/29
- 前先生
JSP
- JavaServletPage
- Eclipsの管理上はhtmlと同じフォルダに置く。(授業ではWebContent)サーブレットと異なることに注意。
- htmlにJAVAのコードを埋め込むような感じなので、凝ったレイアウトのhtmlファイルを作りやすい。作り込んだhtmlをもらってJAVAを埋め込むといった使い方が主流。
- JAVAのifやloopでhtmlの出力を動的に変えることが可能。
- サーブレットと同様、htmlとJSPの決り文句はコピペでOK。
-
コメントの書き方が異なるので注意。間違えると、画面に表示されたりサーバーエラーになる。
- if分やfor分のブロックを閉じる閉じのカッコ”<%}%>”を忘れやすいので注意。インデントを勝手にやってくれないので見ずらい。
- 練習問題
-
通常のJAVAクラスを作って、JSPから呼び出す練習をした。
- import する必要がある。それ以外は普通のクラスの呼び出しと一緒。
Form
- html 部分は通常のhtmlファイルと同様。
- submit を post でするとURLに入力した値は表示されない。getだと表示される。
- ラジオボタンとチェックボックスの取得方法は次回。
2022/08/31
- フォーム
-
StringBuilder sb = new StringBuilder();
- sb.append(value);
- ストリング変数に+で追加するよりメモリ効率が良く速い。Stirngはオブジェクトで+すると新しくオブジェクトを作って値を入れる。
- forward は同じプログラム内のサーブレット、JSPしか呼べない
- Redirect は制限がない。ネットでつながっているところならどこでも呼べる。
-
下の行はコメントアウトすること
//response.getWriter().append("Served at: ").append(request.getContextPath());
- knowledge.length : 配列の個数を調べるときは()がいらない。普通はhensu.length()
2022/09/07
10章
- 練習課題:7章の例題をコピペすればOK。来週の修了テストもほとんど同じなので、回答をもらって名前とLogicを触ればいい(はず)。
-
model:
- DataType: データをやり取りするためのjavabeans(クラス):input,input2,input3とそれぞれのgetter,setterを持つだけ。
- Logic: 入力された文字列をつないでDataTypeのinput3にsetするだけのクラス(Control.javaの中で呼び出される:引数はDataType)
-
servlet
- Control.servlet :postを受けてDataTypeをnewし、Logicで文字列をつないでリクエストスコープにDataTypeを保存して、 result.jspをforward
-
WebContent
- index.jsp:入力フォーム:postでControlに文字列を2つ投げるだけ
-
Web-INF(フォルダ)jsp(フォルダ)
- output.jsp: Control.servlet からforward で呼び出される。リクエストスコープに入っている DataTypeを受け取って表示するだけ。
2022/09/08
import java.sql.*;
mySQLの場合
public static void m01() throws Exception {
System.out.println( "===== m01() Mysql Sys に接続" );
Class.forName("com.mysql.cj.jdbc.Driver");
String dburl = "jdbc:mysql://localhost:3306/sys?characterEncoding=UTF-8&serverTimezone=Asia/Tokyo";
String sql = "SELECT * FROM version"; ----テーブル名
Connection conn = DriverManager.getConnection(dburl, "root", "root");---MySQLのログイン情報
Statement statement = conn.createStatement();
// statement.executeUpdate(sql); ---select 以外
ResultSet rs = statement.executeQuery(sql);---select の場合
//結果の表示
while( rs.next() ) {
String sysVer = rs.getString("sys_version");
String mysqlVer = rs.getString("mysql_version");
System.out.println( sysVer + ", " + mysqlVer );
}
//開いた順番と逆に閉じる事
rs.close();
statement.close();
conn.close();
}
-
MySQL につなぐための準備 connector/j をダウンロード
- https://dev.mysql.com/downloads/connector/j/8.0.html
- https://dev.mysql.com/downloads/file/?id=513221
- "C:\pleiades\tomcat\9\lib\mysql-connector-java-8.0.30.jar"
-
ビルドパスの構成が必要になるので注意。(外部JARを追加する)
- ビルドパス>ビルドパスの構成(ダイヤログ)>ライブラリータブ選択>モジュールパスを選択>外部JARの追加ボタン>ファイルダイヤログでダウンロードしたJARを選択>適用して閉じる
動的webプロジェクト作成手順:スッキリわかるサーブレット&JSP入門第2版に合わせるための設定
- java11,tomcat9 を使うこと
- ファイルメニュー「新規」:動的webプロジェクト
- プロジェクト名入力
- ターゲット・ランタイム確認:
-
構成ボタンを押す
- javaのバージョンが一致しているか確認(今は11)。必要があれば修正:次へボタン
- 表示されているフォルダを選んで「除去」ボタンを押し消す
- 「フォルダーの追加」ボタンを押し、 「src」 を作成:「次へ」ボタン
- コンテンツ・ディレクトリーを「WebContent」に変更し完了
- (出来上がったプロジェクトをパッケージ・エクスプローラーで開く)
- srcフォルダを右クリックし「新規」フォルダー:model
- srcフォルダを右クリックし「新規」フォルダー:servlet
- WebContentの中のWEB-INFフォルダを右クリックし「新規」フォルダー:jsp
運用
- javaのクラスファイルはmodelフォルダに入れる
- servlet はservlet フォルダに入れる
- jspファイルはWebContent/ENF-WEB/jsp に入れる。ここに置いたjspファイルはservletから(redirect,forward)で呼ばないと開かない。
- 外部からアクセスできるjspは WebContent 直下に入れる
スコープ:共有みたいなところ
- スコープにはインスタンス(クラスからnewしたもの)しか置けない。
- intやdoubleは置けないが String はおける(Stringはそれ自体がオブジェクトだから)。
添付ファイル:macのファイルなのでwindowsで関係ないファイルが見えることがあるかもしれません。削除しても放置しても構いません。
- Chap99.zip 基本
- Chap99 -remake.zip フッターを動的インクルードで入れたもの
- JAVApdf Chap99の説明
- java2.pdf 入力チェックの説明
2022/09/14
- 正規表現 数値でマイナスと小数点を受け付ける:"^[+-]?([1-9]\\d*|0)(\\.\\d+)?$"