2017-05-09 17 views
0

何らかの理由で、以下のキャッチブロックで、出力エラーメッセージをjspページにリダイレクトしていません。代わりにデフォルトのtomcats例外レポートがHTTP Status 500で表示されます。コンソールウィンドウにエラーメッセージが正しく表示されます。しかし、以下に述べるように、JSPページにエラーメッセージを表示していません。私は何が欠けていますか?SQL例外が.jspページにリダイレクトされない

register.jsp

<p><font color="#ff0000"><c:out value="${status}"/></font></p> 
<form action="<%=context%>/RegisterServlet" method='post'> 
... 
... 
... 

RegisterServlet:

try (Statement st = con.createStatement()) { 
      System.out.println(sql); 
      st.executeUpdate(sql); 

      } catch(SQLException sqle) { 
       System.out.println("Unable to register user: "+sqle.getMessage()); 
       //Check if we are getting duplicate key exception on userName 
       if(sqle.getMessage().indexOf("Duplicate entry")!=-1) { 
        System.out.println("User already exists"); 
        strUserMsg = "User name "+request.getParameter("userid")+" already " + 
          "exists. Please try another user name."; 
       } else { //If other SQLException than dup key exception 
        strUserMsg = "Unable to register user "+request.getParameter("userid")+ 
        ". Please try again later."; 
       } 
       setRequestAttributes(request); 
       request.setAttribute("status", strUserMsg); 
       rd.forward(request, response); 
       response.sendRedirect("register.jsp"); 

      } catch(Exception e) {//If it goes into Exception other than SQLException 
       System.out.println("Unable to register user: "+e.getMessage()); 
       strUserMsg = "Unable to register user "+request.getParameter("userid") 
       +". Please try again later."; 
       setRequestAttributes(request); 
       request.setAttribute("status", strUserMsg); 
       rd.forward(request, response); 
       response.sendRedirect("register.jsp"); 

      } 

スタックトレース以下:

exception 

org.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: "" 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:555) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.focus.servlets.RegisterServlet.doPost(RegisterServlet.java:113) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

root cause 


Unable to register user: Duplicate entry 'test_user' for key 'PRIMARY' 
User already exists 
May 09, 2017 1:45:40 PM org.apache.catalina.core.ApplicationDispatcher invoke 
SEVERE: Servlet.service() for servlet jsp threw exception 
java.lang.NumberFormatException: For input string: "" 
    java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
java.lang.Integer.parseInt(Integer.java:592) 
java.lang.Integer.parseInt(Integer.java:615) 
org.apache.jsp.common.register_jsp._jspService(register_jsp.java:227) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.focus.servlets.RegisterServlet.doPost(RegisterServlet.java:113) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
+0

デフォルトの例外とは何ですか?スタックトレースを質問に追加します。 –

+0

OK、スタックトレースを追加しました。 – raptor496

答えて

0

私は完全に理解しすぎてわからない、しかし、あなたは、例外をキャッチした場合その例外のデフォルトのハンドラが発生し(jsp上に表示されます)、そのアプリケーションはオーバーライドされます続行してください。

0

私はそれを理解しました。自分のコードのどこかにエラーがありました。私が今投稿したものとはまったく異なっています。

関連する問題