質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

25017閲覧

JSP画面にてエラーメッセージが表示できない

kyasubaru

総合スコア21

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2016/03/28 15:27

いつもお世話になっております。今回もご指導の程宜しくお願い致します。

実行環境
eclipse 4.5Mars
java
JSP+Servletのみの開発

※JSP値入力→servletにて入力値のチェック処理→エラーだったら元のJSP画面へ遷移してエラーメッセージ表示をする

エラーメッセージを元JSP画面へ表示をしたいです。
現在の状況としてはエラーの場合は元のJSP画面へ遷移するところまでは完了しています。しかし問題でありますエラーメッセージが表示されません。
以下ソース

↓JSP画面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="model.ERROR_MSG_form"%>

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css"href="<%request.getContextPath();%>/JSP/CSS/MMPC002.css>"> <script type="text/javascript"src="./JSP/javascript/jquery-2.2.0.min.js"></script> <script type="text/javascript" src="./JSP/javascript/seinengappi.js"></script> <link href="./JSP/CSS/MMPC002.css" rel="stylesheet" type="text/css" /> <title>新規アカウント作成</title> </head> <body bgcolor="white"> <img src="./JSP/images/My Maneger logo.jpg" width="230" height="70"> <form method="POST" action="./Logout"> <input type=submit name="mmpc2" value=login class=login> </form> <br></br> <% if (!session.isNew()) { ERROR_MSG_form msg = (ERROR_MSG_form) session.getAttribute("error_msg_form"); msg.getEr(); msg.getEr1(); } %> <pre> </pre> <center> <form action="/MyManager/MMPC002" method="POST"> <table border="1" bordercolor="#00008b"> <tr> <td align="left"><b> 名前</b></td> <td><input type="text" name="name" size="30" maxlength="20"></td> </tr>
<tr> <td align="left"><b>メールアドレス(ID)</b></td> <td><input type="text" name="mail" size="30" maxlength="20"> </td> </tr> <tr> <td align="left"><b> パスワード</b></td> <td><input type="password" name="pass" size="6" maxlength="4"></td> </tr> </table> <br> <input type="image" src="./JSP/images/shinkitourokubottn.jpg" width="100" height="30"> </form> </center>
</body> </html>

↓Servletソース
package servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import dao.C001;
import model.ERROR_MSG_form;
import model.MMPC002form;
import validate.S002;
import validate.S010;

/新規登録画面サーブレット/

@WebServlet("/MMPC002")
public class MMPC002 extends HttpServlet {
private static final long serialVersionUID = 1L;

/* 値取得の為"POSTメッソド"指定 */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); request.setCharacterEncoding("UTF-8"); /* リクエストパラメーター取得 */ String name = request.getParameter("name"); String mail = request.getParameter("mail"); String password = request.getParameter("password"); /* パラメータ保持Bean */ MMPC002form mmpc002 = new MMPC002form(); mmpc002.setName(name); mmpc002.setMail(mail); mmpc002.setPassword(password); /* 以下エラーチェッククラス */ /* メールアドレス重複チェック */ S002 s002 = new S002(); String er = s002.validate(mmpc002.getMail()); /* 半角文字チェック */ S010 s010 = new S010(); String er1 = s010.validate(mmpc002.getMail()); /* エラーメッセージ保持Bean */ ERROR_MSG_form error_msg_form = new ERROR_MSG_form(); error_msg_form.setEr(er); error_msg_form.setEr1(er1); /* mmpc002をセッション保持 */; HttpSession session = request.getSession(); session.setAttribute("mmpc002", mmpc002); session.setAttribute("error_msg_form", error_msg_form); /* 遷移先選定 */ if (!(er.equals(""))) { RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/MMPC002.jsp"); dispatcher.forward(request, response); } else if (!(er1.equals(""))) { RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/MMPC002.jsp"); dispatcher.forward(request, response); } else { C001 c001 = new C001(); c001.create1(); RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/MMPC003.jsp"); dispatcher.forward(request, response); } }

}

以上が実行ソースです。
デバッグにてエラーメッセージの取得、それからセッションへ格納は目視済です。
原因はJSP内部のセッションの有無を確認するロジックでしょうか。。?
また掲載したHTMLソースやServletソースのコーディング内容に関しましてもご指導頂けるようですとありがたいです。
皆さまご指導の程宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

msg.getEr();
msg.getEr1();

取得はしてても出力してませんね。

投稿2016/03/28 21:37

編集2016/03/28 21:39
tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyasubaru

2016/03/29 14:03 編集

ご回答有難うございます。 <% if (session.isNew()) { ERROR_MSG_form msg = (ERROR_MSG_form) session.getAttribute("error_msg_form"); %> <%= msg.getEr() %> <br> <%= msg.getEr1() %> <% } %> 上記ソースへ修正致しましたが、以前出力できていません。 何が原因でしょうか?
tkturbo

2016/03/30 01:59

コピペミスだと思いたいのだが、「if (session.isNew()) {」←これでは新規アクセス時のみif文に入るのでは。。。
kyasubaru

2016/03/30 15:09

引き続きご回答有難うございます。 単純ミスでした。 今回はエラーで遷移できない状態です。 <% if (!(session.isNew())) { ERROR_MSG_form msg = (ERROR_MSG_form) session.getAttribute("error_msg_form"); %> <FONT color="red"><%= msg.getEr() %></FONT> <br> <FONT color="red"><%= msg.getEr1() %></FONT> <% } %> エラー文 org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/MMPC002.jsp at line 40 37: if (!(session.isNew())) { 38: ERROR_MSG_form msg = (ERROR_MSG_form) session.getAttribute("error_msg_form"); 39: %> 40: <FONT color="red"><%= msg.getEr() %></FONT> 41: <br> 42: <FONT color="red"><%= msg.getEr1() %></FONT> 43: <% Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:575) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) servlet.MMPC001.doPost(MMPC001.java:25) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 原因 java.lang.NullPointerException org.apache.jsp.WEB_002dINF.jsp.MMPC002_jsp._jspService(MMPC002_jsp.java:126) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) servlet.MMPC001.doPost(MMPC001.java:25) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) エラーを見ると初回時にif文条件内に入ってしまい、<%= msg.getEr() %>が出力できませんよというようなエラーになっているのでしょうか?
tkturbo

2016/03/31 00:02

sessionは初回アクセス時に生成、以降はsession time outするまで残り続けます。 「session.isNew()」はその初回アクセス時にのみtrueとなり、ブラウザをシャットダウンしてもその後はしばらくfalseのままです。 単純に「if(session.getAttribute("error_msg_form") != null){」とかで判定してはどうですか?
kyasubaru

2016/04/04 14:59

お返事遅れて大変申し訳ございません。 無事解決できました。ご丁寧にご指導有難うございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問