Loading [MathJax]/jax/output/HTML-CSS/config.js

Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java JSP/Servlet

JSP/Servletでポップアップを表示する方法について

投稿日:2021年11月20日 更新日:

 

<目次>

(1) JSP/Servletでポップアップを表示する方法について
 (1-1) 実現したい事
 (1-2) 構文
 (1-3) サンプルプログラム

(1) JSP/Servletでポップアップを表示する方法について

(1-1) 実現したい事

JSP/Servletの画面でエラーを表示する際に、ポップアップを表示して、その中にエラーメッセージを表示して通知する方法についてご紹介します。

例えば、次の図のようなJSP画面(初期表示)⇒Sevlet(入力チェック処理)⇒JSP画面(エラー表示)という画面遷移があった際に、遷移後のJSP画面でポップアップ(エラー表示)を出力しています。

(図111)

(1-2) 構文

ポップアップにエラーメッセージを表示する際に、ポイントとなる処理に絞って構文として纏めてご紹介します。
 
またイメージを湧きやすくするため、具体的な画面をイメージして構文を見ていきます。例えば画面上に「氏名」項目があったとして、その項目に対して「必須チェック」が掛かっているとします(空欄で送信するとエラーになる)。
 
(図121)

そのうえで、実装のポイントとなる4つの構文をご紹介します。実装箇所はそれぞれ下図の箇所になります。
(図122)
 
・①処理対象のエラーメッセージのセット
「request.setAttribute」でリクエストの属性にエラーメッセージをセットし、遷移先のJSPで受け取れるようにしています。
(構文)
  1. request.setAttribute("error_msg", "「氏名」は空欄にできません。");
 
⇒(参考)request.setAttributeについて
 
・②エラー表示をするJSP画面に遷移
エラーメッセージ(ポップアップ)を表示するJSP(元の入力画面)へ画面遷移(forward)させます。
(構文)
  1. RequestDispatcher rd = getServletContext().getRequestDispatcher(“遷移先画面名.jsp”);
  2. rd.forward(request, response);
 
⇒(参考)画面遷移(forwardやformのsubmitなど)
 
・③JSP画面にてエラーメッセージの取得
遷移した先のJSP画面にて、①でリクエストの属性にセットしたエラーメッセージを抽出します。その彩にif文でメッセージが「nullでない」場合に取得をしています。
(構文)

  1. <%
  2. if(request.getAttribute("error_msg")!=null){
  3. String error_msg = (String)request.getAttribute("error_msg");
  4. %>

・④JavaScriptでAlertメッセージを出力
最後にJSP側でJavaScriptを組み込み、エラーメッセージをポップアップ(alert)に乗せて出力しています。「<%=error_msg%>」でメッセージの内容を取得しています。
(構文)
  1. <script type="text/javascript">
  2. var msg = "<%=error_msg%>";
  3. alert(msg);
  4. </script>

(1-3) サンプルプログラム

項目の必須チェックでポップアップを出すServletJSPのサンプルプログラムをご紹介します。

●JSP①

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>ITxxxx_エラー時ポップアップ出力</title>
  8. </head>
  9. <form method="POST" action="ITxxxx_ShowPopUpServlet" name="validataion">
  10. 名前を入力して「送信」を押して下さい。<br /><br />
  11. <body>
  12. ①氏名: <input type="text" name="g_name" id="name" />
  13. <br />
  14. <input type="submit" value="送信" /></td>
  15. </body>
  16. <%
  17. if(request.getAttribute("error_msg")!=null){
  18. String error_msg = (String)request.getAttribute("error_msg");
  19. %>
  20. <script type="text/javascript">
  21. var msg = "<%=error_msg%>";
  22. alert(msg);
  23. </script>
  24. <%}%>
  25. </form>
  26. </html>
(図131)

目次にもどる

●Servlet

  1. package studyc;
  2.  
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5.  
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import javax.servlet.RequestDispatcher;
  12.  
  13. @WebServlet("/ITxxxx_ShowPopUpServlet")
  14. public class ITxxxx_ShowPopUpServlet extends HttpServlet {
  15. private static final long serialVersionUID = 1L;
  16. public ITxxxx_ShowPopUpServlet() {
  17. super();
  18. }
  19. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  20. {
  21. //# GET時の必須入力チェックの実行
  22. MandatoryCheck(request,response);
  23. }
  24.  
  25. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  26. {
  27. doGet(request, response);
  28. }
  29. //# エラーメッセージを格納するためのArrayList
  30. public ArrayList<String> errs = new ArrayList<String>();
  31. //# エラーメッセージを格納したArrayList「errs」のメッセージをHTML形式に整形(タグを付与)したり、文字色を赤くする処理をしています。
  32. //# StringBuffer型の変数に格納していき、その結果を戻り値にしています。
  33. public String getErrorList() {
  34. StringBuffer buf = new StringBuffer();
  35. if(errs.size()>0) {
  36. for(int i=0; i<errs.size(); i++) {
  37. buf.append("・"+errs.get(i));
  38. }
  39. }
  40. return buf.toString();
  41. }
  42. //# 必須入力チェックを行うメソッドです。
  43. public void requiredCheck(String value, String name) {
  44. //もし「引数(value)がnull」OR「引数(value)の空白削除値が空」なら
  45. if(value==null || value.trim().isEmpty()) {
  46. //入力値がブランクであると見なし、入力を求めるメッセージを出力
  47. errs.add(name+" は必須項目です。値を入力してください。");
  48. }
  49. }
  50. //# 必須入力チェックの全体処理
  51. //# 入力値の取得→必須チェック→エラーメッセージのセット→画面遷移までの一連の処理を行うメソッド
  52. public void MandatoryCheck(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  53. errs = new ArrayList<String>();
  54. String v_name = request.getParameter("g_name");
  55. //# もし必須入力のいずれかが「null」OR「ブランク」の場合
  56. if(v_name==null || v_name=="") {
  57. //# 必須入力項目のチェックを実行
  58. //# (requiredCheckを実行して空なら「[項目名] is a mandatory~」のエラーメッセージがArrayListに格納される)
  59. requiredCheck(request.getParameter("g_name"),"[①氏名]");
  60. //# エラーメッセージをリクエストの属性としてセット
  61. request.setAttribute("error_msg", getErrorList());
  62. //# エラーメッセージを表示するため、再び項目の入力画面に戻る
  63. String nextpage="/ITxxxx_ShowPopUpMsg.jsp";
  64. RequestDispatcher rd = getServletContext().getRequestDispatcher(nextpage);
  65. rd.forward(request, response);
  66. }
  67. //# 必須入力項目がnullかブランクでない場合、各項目の値をリクエストの属性(末尾に2を付けた項目名)としてセットしていく
  68. else {
  69. //# バリデーションの結果問題なければ、次画面に遷移する
  70. String nextpage="/ITxxxx_ShowPopUpMsgResult.jsp";
  71. RequestDispatcher rd = getServletContext().getRequestDispatcher(nextpage);
  72. rd.forward(request, response);
  73. }
  74. }
  75.  
  76. }
(図132)

目次にもどる

●JSP②(※今回は使用せず)

正常に処理された際の結果表示用の画面です。今回はエラー処理で元の入力画面に戻るため、本画面は使いませんでしたが、一応掲載しておきます。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>ITxxxx_エラー時ポップアップ出力</title>
  8. </head>
  9. <body>
  10. <br />
  11. 必須チェック成功です。
  12. <br />
  13. こんにちは "<%=request.getParameter("g_name")%>"" さん!
  14. <br />
  15. <a href="ITxxxx_ShowPopUpMsg.jsp">→前ページに戻る</a>
  16. </body>
  17. </html>

(図133)

Adsense審査用広告コード


Adsense審査用広告コード


-Java, JSP/Servlet

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

EclipseでJavaプロジェクトを同一サーバ内で別名コピーする方法

(0)目次&概説 (1) プロジェクトの別名コピーの手順  (1-1) プロジェクトのコピー&ペースト  (1-2) コピーしたプロジェクトをTomcatへ登録  (1-3) Tomcatサーバの再起 …

Javaのenumでフィールドを複数定義したり、値を取得する方法

<目次> (1) Javaのenumでフィールドを複数定義したり、値を取得する方法  (1-1) enumでフィールドを定義・取得する  (1-2) enumでフィールドを複数定義・取得する (1) …

JFreeChartを使ってJavaで様々なグラフを簡単に描画する方法

(0)目次&概説 (1) 記事の目的  (1-1) 目的 (2) JFreeChartの概要  (2-1) JFreeChartとは?  (2-2) JFreeChartのアーキテクチャについて (3 …

JSP/Servletで値を受け渡す方法(画面に入力された値を画面遷移で渡す方法)

<目次> (1) JSP/Servletで値を渡す方法(画面に入力された値を画面遷移で渡す方法)  (1-1) 構文  (1-2) サンプルプログラム (1) JSP/Servletで値を渡す方法(画 …

Twitter APIのRate Limit Exceedエラー(code – 88)の意味について

  <目次> (1) Twitter APIのRate Limit Exceedエラー(code – 88)の意味について  (1-1) APIコールのリミット(Rate Limit)につい …

  • English (United States)
  • 日本語
S