Q.JSPで「pageEncoding=”UTF-8″, contentType charset=”UTF-8″」のように2つも文字コードを指定するのはなぜですか?
 
A:
pageEncodingは、アプリケーションサーバ側でJSPをServletに変換するときにどの文字コードを使うかという指定。
contentTypeは、クライアント側で画面表示する際にどの文字コードを使うかという指定という違いがあります。
contentTypeの方が(HTML)コンテンツのタイプなので意味がとりやすいかと思います。
なお、2つの文字コードは統一するようにしましょう。
 
 
Q.MySQLに接続できません。グラスフィッシュのログには「重大: java.sql.SQLNonTransientConnectionException: Cannot open file…」というメッセージが出ています。
 
A:
MySQL8.xを使っているからかと思います。
バージョンが上がるとセキュリティ強度が上がって接続文字列に加える文字列が増えます。
接続文字列の?の後に「characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B9&rewriteBatchedStatements=true」と加えてみてください。
接続できない:”jdbc:mysql://localhost:3306/sample?serverTimezone=JST”
接続できる:”jdbc:mysql://localhost:3306/sample?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B9&rewriteBatchedStatements=true”
 
Q.サーブレットとJSPのファイルの指定方法が混乱します。
 
A:
当社の研修では、
サーブレットを指定するにはurlPatternsを使います。
一般的にJSP(HTML)を指定するには相対パスで指定します。
 
サーブレットのurlPatternsはそのサーブレットがどのような名前で呼ばれるかを決めるものです。
urlPatterns = {“/NewServlet”}のように頭に”/”が入ります。
そして、urlPatternsは物理的なファイルの場所とは関係がありません。
どこからでも「NewServlet」という名前で呼び出すことができます。(拡張子ナシ)
これはセキュリティのためです。
ユーザーが実行されているサーブレットのアドレスを見ても、どこにそのファイルがあるのかが隠されています。
JSPからサーブレットを呼ぶ場合には、/は抜いて指定します。
一方、JSP(HTML)は物理的なファイルの場所をパスで指定します。
ファイル同士の相対的な位置関係で指定するか、
/がWebページのルートフォルダなので、そこからのパスを指定すれば良いでしょう。
 
実際にはurlPatternsの書き方は以下の4種類があります。
  • 完全パス指定
    パス指定
    拡張子指定
    サフィックス指定

余裕があれば調べてみてください。

Q.画面遷移の方法にはどのようなものがありますか?
 
A:
一般的によくある画面遷移の方法として次の3つをご紹介しておきます。
 

<!–通常のaタグ(ハイパーリンク)による画面遷移指定–>

<a href=”http://www.saycon.co.jp”>goto</a>

<!–JavaScript(onclick)を使用したinputタグよる画面遷移指定–>

<input type=”button” onclick=”location.href = ‘http://www.saycon.co.jp'” value=”goto”>

<!–JavaScript(onclick)を使用したbuttonタグによる画面遷移指定–>

<button onclick=”location.href = ‘http://www.saycon.co.jp'”>goto</button>