2012-09-23 4 views
0

내가 서블릿을 호출하면 원하는 JSP 페이지로 이동하지 않습니다. 아래의 두 코드서블릿이 호출 될 때 no 전달

이런 말을 로그에 오류가있다

입니다하지만 정말 URL 맵핑

의 확신이 코드 서블릿을 호출 대상

 java.sql.SQLException: Bad format for number 'bb' in column 4. 

에 전달하지 않는 이유, 아니에요

<a href="/Store/DisplayOrders"> Display Orders</a> 



     package admin; 

     import data.ConnectionPool; 
     import data.DBUtil; 
     import java.io.IOException; 
     import java.io.PrintWriter; 
     import java.sql.Connection; 
     import java.sql.PreparedStatement; 
     import java.sql.ResultSet; 
     import java.sql.SQLException; 
     import java.util.ArrayList; 
     import javax.servlet.RequestDispatcher; 
     import javax.servlet.ServletException; 
     import javax.servlet.http.HttpServlet; 
     import javax.servlet.http.HttpServletRequest; 
     import javax.servlet.http.HttpServletResponse; 

     /** 
     * 
     * @author One 
     */ 
     public class DisplayOrdersServlet extends HttpServlet { 

      @Override 
      public void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException { 
       response.setContentType("text/html"); 
       PrintWriter out = response.getWriter(); 

       ConnectionPool pool = ConnectionPool.getInstance(); 
       Connection connection = pool.getConnection(); 
       PreparedStatement ps = null; 
       ResultSet rs = null; 

       ArrayList al = null; 
       ArrayList ordersList = null; 
       ordersList = new ArrayList(); 

       String query = "select * from orders order by order_id"; 

       try { 
       ps = connection.prepareStatement(query); 
       rs = ps.executeQuery(query); 


       while (rs.next()) { 

        al = new ArrayList(); 

        al.add(rs.getString("order_id")); 
        al.add(rs.getString("product_quantity")); 
        al.add(rs.getString("product_name")); 
        al.add(rs.getDouble("user_name")); 
        al.add(rs.getDouble("user_address")); 
        out.println("al :: " + al); 
        ordersList.add(al); 
       } 

       request.setAttribute("ordersList", ordersList); 

       String url = "/admin/orders.jsp"; 

        RequestDispatcher dispatcher = 
        getServletContext().getRequestDispatcher(url); 
        dispatcher.forward(request, response); 
      } 

      catch (SQLException e) { 
        e.printStackTrace(); 
       } finally { 
        DBUtil.closeResultSet(rs); 
        DBUtil.closePreparedStatement(ps); 
        pool.freeConnection(connection); 

     } 
      } 

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

      } 
     } 

JSP 페이지

  <%@page contentType="text/html" pageEncoding="UTF-8"%> 
      <%@ page language="java" import="java.util.*;"%> 
      <!DOCTYPE html> 
      <HTML> 
      <HEAD> 
      <TITLE>Orders CRUD</TITLE> 

      </HEAD> 

      <BODY> 
      <br> 
      <table> 

      </table> 
      <br> 
      <table > 
      <tr><td></td></tr> 

       <tr><td ><a href="/Store/admin/#.jsp">#</a></td></tr> 
      <tr><td></td></tr> 
      <tr> 
       <td>order_id</td><td>product_quantity</td><td>product_name</td> 
        <td>user_name</td><td>user_address</td> 
        <td>Edit</td><td>Delete</td> 
      </tr> 
        <% 
        int count=0; 
        List viewList = new ArrayList(); 
        Iterator viewItr; 

        if(request.getAttribute("ordersList")!=null && request.getAttribute("ordersList")!="") 
        { 
          List orderList = (ArrayList)request.getAttribute("ordersList"); 
          Iterator itr = orderList.iterator(); 

          while(itr.hasNext()) 
          { 



            viewList = (ArrayList)itr.next(); 
            int product_id = Integer.parseInt(viewList.get(0).toString()); 
            viewItr = viewList.iterator(); 
            %> 
            <tr> 
            <% 
            while(viewItr.hasNext()) 
            { 

              %> 
              <td><%=viewItr.next()%></td> 

              <% 

            } 
            count++; 
            %> 
            <td><input type="button" name="edit" value="Edit" onclick="editRecord(<%=product_id%>);" ></td> 
              <td><input type="button" name="delete" value="Delete" onclick="deleteRecord(<%=product_id%>);"></td> 
            </tr> 
            <% 
          } 
        } 
        if(count==0) 
        { 
          %> 
          <tr><td > </td></tr> 
         <tr><td>No Record Avaliable</td></tr> 
          <% 
        } 
        %> 
       <tr><td></td></tr> 
      </table>  
      </BODY> 
      </HTML> 

답변

1
try { 
    ... 
    al.add(rs.getDouble("user_name")); <-- Exception thrown 
    al.add(rs.getDouble("user_address")); 
     ... 
    String url = "/admin/orders.jsp"; 
    RequestDispatcher dispatcher = 
    getServletContext().getRequestDispatcher(url);       
    dispatcher.forward(request, response); 
} catch (SQLException e) { <-- Exception catch 
    e.printStackTrace();  

67.43 명명 된 의심

rs.getDouble("user_name"); 

에 의해 발생 예외 후 코드까지 건너 뜁니다 예외는 catch됩니다. 리디렉션 코드는 전혀 실행되지 않습니다. 즉, 이름이나 주소를 이중으로 사용하는 것은 드문 경우입니다.

+0

감사합니다! 나는 displayproduct 서블릿을 복사하여 거기에 빠졌고 정말로 지난 시간 동안 계속 점검 할 때마다 그것을 간과했음을 간과했다. :)) 이제는 코드를 복사하는 전형적인 경우이다. – TrackmeifYouCan

+0

그래서'e.printStackTrace()'가 예외를 관리하는 나쁜 방법입니다 ... – SJuan76

+0

어떻게이 예외 비즈니스에 대해 더 자세히 알 수 있습니까? 또는 어떤 제안? – TrackmeifYouCan

1

좋은 이유가 서블릿이 JSP 페이지로 전달하지 못하도록합니다. 전달하기 전에 하나의 명령문이 SQLException을 던집니다. 따라서 나머지 명령은 건너 뛰고 catch 블록이 실행됩니다. 전달은 예외를 throw하는 명령문 다음에있는 명령의 일부이므로 (예외로 인해 건너 뛴다) 앞으로 전달되지 않습니다.

예외는 아마 당신이 예외를 얻을 때 사용자가 3.452과 ;-)

+0

감사합니다. 나는 displayproduct 서블릿을 복사하여 거기에 빠졌고 정말로 지난 시간 동안 계속 점검 할 때마다 그것을 간과했음을 간과했다. :)) 이제는 코드를 복사하는 전형적인 경우이다. – TrackmeifYouCan

+0

사람은 당신의 정말로 자바 괴물입니다. 나는 당신의 프로필과 닌자 분대를 보았습니다. (귀하의 프로필은 재미있는 하하입니다.) 나는 대학 이래로 지속적으로 코딩 되었으면 좋겠어. 나는 다른 분야에서 일을 멈추고 일했고, 지금 큰 시간에 돌아오고 있습니다. 그들이 뇌 os hahaha에 대한 Java 설치 프로그램을 발명했는지 궁금합니다 – TrackmeifYouCan

+0

글쎄요, 고마워요. 원본 프랑스어 텍스트의 영어 번역이 적어도 한번은 읽혀 졌다는 것을 알고 있습니다 .-) –

관련 문제