Announcement

Collapse
No announcement yet.

Exception Fehlermeldung vom Java-Code auf JSP-Seite umleite?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Exception Fehlermeldung vom Java-Code auf JSP-Seite umleite?

    Hallo Zusammen,

    ich versuche mittels setter und getter Methoden die Exception Fehlermeldung im Try-Catch Block im Java-Code auf JSP-Seite umzuleiten. Also ich habe 2 Java Klassen. Eine DB-Klasse, mit der ich Verbindung zur DB aufbauen und paar SQL-Statement ausführen kann. Die zweite dient dazu, die aufgefangenen Fehlern in setter-Methode einzulesen und später, wenn ein Verbindungsfehler auftritt diese mittels getter-Methode anzuzeigen. So zumindest habe ich vor.
    Auszug aus der 1-Klasse:
    Code:
     public static Connection getMySqlConnection() throws Exception {
    		 ErrorHandler errohandler = new ErrorHandler();
    		 try {
    				Class.forName(driverDB);
    				
    			} catch (ClassNotFoundException e) {
    				errohandler.addErrorMessage("Driver class not found");
    				
    			}
    		       Connection con = null;
    			try {
    				con =(Connection) DriverManager.getConnection(urlDB,userDB,pwdDB);
    			} catch (SQLException e1) {
    				errohandler.addErrorMessage("Error establishing database connection");
    				e1.printStackTrace();
    			}
    			
    
    		    return con;
    		  }
    Die 2-Klasse sieht so aus:
    Code:
    import java.util.List;
    import java.util.Vector;
    
    
    public class ErrorHandler {
    
    	private List<String> errorMessages;
    	private String errorh;
    	
    	public ErrorHandler() {
    		this.errorMessages = new Vector<String>();
    	}
    	
    	public List<String> getErrorMessages() {
    		return errorMessages;
    	}
    
    	public void addErrorMessage(String error) {
    		this.errorMessages.add(error);
            public void reset() {
    		this.errorMessages.clear();
    	}
    	
    	public boolean isError() {
    		return (errorMessages != null && errorMessages.size() > 0);
    	}
    	}
    in der JSP-Seite binde ich die Errorhandler.java mittels <jsp:Usebean id="error" class"package.ErrorHandler" scope="request">ein.
    Code:
    <% if(error.isError()) { %>
    		       <div style="position:absolute;top:100px;left:50px;border:1px solid #000;width:auto;height:auto;">
    					<ul class="error"> 
    						<% for(String e : error.getErrorMessages()) { %>
    						<li><%= e %></li>
    						<% } %>
    					</ul>
    				 </div>	
    					<% }
                                             
                                          %>
    Das Problem ist nun, dass selbst wenn es Verbindungsfehlern gibt, wird nixt angezeigt.

    Ich hoffe, dass ich mein Problem genug verdeutlichen konnte und mir jemand helfen kann.

    Vg,
    fartos

  • #2
    Es reicht nicht, der JSP mur die Klasse bekannt zu machen, du musst auch ihren aktuellen Inhalt der JSP bekannt machen durch setzen der Daten in die Session
    Christian

    Comment


    • #3
      Danke @Christian für Deine Antwort.

      Also Daten ausm Formular in session-variablen einzulsen hab schon gemacht. Aber die aus einer entfernte Java-Klasse in Session einzupacken, da fehlt mir leider noch einbisschen bis ich das hinbekommen kann. Vielleicht weist Du mir auf die richtige Schreibweise, wie ich die return-wert von getErrorMessages() in Session-Variable speichern könnte.

      Bg,
      Fartos

      Comment


      • #4
        Also, ich hab es bis jetzt so versucht zu implementieren:
        HTML Code:
        <body>
        <jsp:useBean id="error" scope="request" class="formpackage.ErrorHandler" />
        <%
        List<String> handelError=  new Vector<String>();
        		    handelError= error.getErrorMessages();
        		      
        		      if(error.isError()) {
        						request.setAttribute("error", handelError);
        					      session.getAttribute("error");
        				}
        		     
        		   	 
        		// Senden Der Form-Daten für DB-Connection	  
                       if(dbDrv!=null && dbDrv.length()>0) {
                    	   
         if(error.isError()) { %>
            <div style="position:absolute;top:100px;left:50px;border:1px solid #000;width:auto;height:auto;color:red">
        		<ul class="error"> 
        		  <% for(String e : error.getErrorMessages()) { %>
        		   <li><%= e %></li>
        		 <% } %>
                       </ul>
             </div>	
           <% }
            else{  
                 
                   ............................
                 ............................ 
        %>
        Leider tut sich gar nixt. Ich weis, dass es da irgendwo an der Schreibweise liegt.

        Comment


        • #5
          List<String> handelError= new Vector<String>()
          Erst eine neue Liste, dann
          handelError= error.getErrorMessages();

          ?

          Setzen in die Session hier?? Wozu?
          request.setAttribute("error", handelError);

          session.getAttribute("error");
          gleich wieder lesen, aber keine Zuweisung? Die Zeile ist obsolet


          Klasse in Bean bekannt machen
          Der Klasse mit session.getAttribute("error"); die Fehler aus der Session zuweisen

          Über die Liste laufen und ausgeben.

          Allerdings sehe ich nicht den Teil, wo die Datenin die Session geschrieben werden sollen. Wie gesagt, das Gefrickel mit nur einer JSP ohne Servlet führt genau zu diesem Ergebnis

          Ggf. erstelle ich dir ein Demo
          Zuletzt editiert von Christian Marquardt; 18.11.2011, 16:42.
          Christian

          Comment


          • #6
            Demo
            Servlet
            [highlight=java]
            public class DemoServlet extends HttpServlet
            {
            private String parameter1="";
            private String parameter2="";

            protected void processRequest(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
            {
            if(request.getParameter("text1")!=null)
            {
            parameter1=request.getParameter("text1");
            request.getSession().setAttribute("p1",parameter1) ;
            }
            if(request.getParameter("text2")!=null)
            {
            parameter2=request.getParameter("text2");
            request.getSession().setAttribute("p2",parameter2) ;
            }
            Error error=new Error();
            request.setAttribute("error",error);
            response.sendRedirect("index.jsp");
            }

            @Override
            protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
            {
            processRequest(request,response);
            }

            @Override
            protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
            {
            processRequest(request,response);
            }

            }

            [/highlight]

            index.jsp
            [highlight=java]
            <%@page contentType="text/html" pageEncoding="ISO-8859-1"
            import="servlets.Error"
            %>
            <!DOCTYPE html>
            <html>
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
            <title>Demo</title>
            </head>
            <body>
            <jsp:useBean id="error" scope="request" class="servlets.Error" />
            <%
            String p1="";
            String p2="";
            if(session.getAttribute("p1")!=null)
            {
            p1=(String)session.getAttribute("p1");
            }
            if(session.getAttribute("p2")!=null)
            {
            p2=(String)session.getAttribute("p2");
            }
            %>
            <h1>Demo</h1>
            <p>Form1</p>
            <form name="form1" action="DemoServlet" >
            <input type="text" name="text1" value="<%=p1%>" size="30" />
            <input type="submit" value="Submit1" name="submit1" />
            </form>
            <p>Form2</p>
            <form name="form2" action="DemoServlet" >
            <input type="text" name="text2" value="<%=p2%>" size="30" />
            <input type="submit" value="Submit2" name="submit2" />
            </form>
            <p>Error</p>
            <ul>
            <% for(String e:error.getErrorMessages())
            {%>
            <li><%= e%></li>
            <% }%>
            </ul>
            </body>
            </html>

            [/highlight]

            error-Klasse
            [highlight=java]
            public class Error
            {
            private List<String> errorMessages=new ArrayList<>();

            public Error()
            {
            errorMessages.clear();
            errorMessages.add("Fehler 1");
            errorMessages.add("Fehler 2");
            errorMessages.add("Fehler 3");
            }

            public List<String> getErrorMessages()
            {
            return errorMessages;
            }

            public void setErrorMessages(List<String> errorMessages)
            {
            this.errorMessages=errorMessages;
            }

            }

            [/highlight]
            WebApplication1.zip
            Christian

            Comment

            Working...
            X