2014-11-09 2 views
0

서블릿이 내 iD (int로 변환 할 수는 없지만 INT 임)가 작동하는 것을 허용하지 않으므로 http://puu.sh/cGvGN/6d29084aec.png (이들은 학교용으로 가짜입니다)int 서블릿의 값

어떻게 작동합니까? 내가 올바르게했는데 서블릿이 작동을 멈춘다 고 생각했습니다.

id INT가 작동하지 않기 때문에 페이지가 ViewStudentSchedule 페이지로로드되지 않습니다.

@WebServlet(urlPatterns = {"/StudentLoginServlet"}) 
     public class StudentLoginServlet extends HttpServlet { 

      /** 
      * Processes requests for both HTTP <code>GET</code> and <code>POST</code> 
      * methods. 
      * 
      * @param request servlet request 
      * @param response servlet response 
      * @throws ServletException if a servlet-specific error occurs 
      * @throws IOException if an I/O error occurs 
      */ 
      protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException { 
       response.setContentType("text/html;charset=UTF-8"); 
       try (PrintWriter out = response.getWriter()) { 
        /* TODO output your page here. You may use following sample code. */ 


        int iD = Integer.valueOf(request.getParameter("iD")).intValue(); 
        String pw = request.getParameter("pw"); 
        System.out.println(iD); 
        System.out.println(pw); 


        Student s1=new Student(); 
        s1.findDB(iD); 


        String fn=s1.getFirstName(); 
        System.out.println(fn); 

        String ln=s1.getLastName(); 
        System.out.println(ln); 

        String pwdb=s1.getPassword(); 
        System.out.println(pwdb); 
        RequestDispatcher rd; 

        HttpSession ses1=request.getSession(); 
        ses1.setAttribute("s1", s1); 

        if (pw.equals(pwdb)){ 
         rd= request.getRequestDispatcher("/ViewStudentSchedule.jsp"); 
         rd.forward(request,response); 

        } 
        else{ 
         rd= request.getRequestDispatcher("/LoginError.jsp"); 
         rd.forward(request,response); 

        } 

       } 
      } 

      // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
      /** 
      * Handles the HTTP <code>GET</code> method. 
      * 
      * @param request servlet request 
      * @param response servlet response 
      * @throws ServletException if a servlet-specific error occurs 
      * @throws IOException if an I/O error occurs 
      */ 
      @Override 
      protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException { 
       processRequest(request, response); 
      } 

      /** 
      * Handles the HTTP <code>POST</code> method. 
      * 
      * @param request servlet request 
      * @param response servlet response 
      * @throws ServletException if a servlet-specific error occurs 
      * @throws IOException if an I/O error occurs 
      */ 
      @Override 
      protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException { 
       processRequest(request, response); 
      } 

      /** 
      * Returns a short description of the servlet. 
      * 
      * @return a String containing servlet description 
      */ 

      @Override 
      public String getServletInfo() { 
       return "Short description"; 
      }// </editor-fold> 

     } 

문제는 여기에

int iD = Integer.valueOf(request.getParameter("iD")).intValue(); 

아래에있는 비즈니스 오브젝트됩니다 (IT 저에게 빈 페이지를 부여) :

public class Student implements Serializable { 

    private int iD; 
    private String password; 
    private String firstName; 
    private String lastName; 
    private String street; 
    private String city; 
    private String state; 
    private double zip; 
    private String eMail; 
    private double gpa; 
    private String message; 

    /** 
    * No arg constructor that sets the default value of all 
    * customer properties to an empty string value. 
    */ 
    public Student() { 
     this.iD = 0; 
     this.password = ""; 
     this.firstName = ""; 
     this.lastName = ""; 
     this.street = ""; 
     this.city = ""; 
     this.state = ""; 
     this.zip = 0; 
     this.eMail = ""; 
     this.gpa = 0; 
    } 


    public void setID(int id) { 
     this.iD = iD; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 


    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 


    public void SetLastName(String lastName) { 
     this.lastName = lastName; 
    } 


    public void setStreet(String street) { 
     this.street = street; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 

     public void setState(String state) { 
     this.state = state; 
    } 

     public void setZip(double zip) { 
     this.zip = zip; 
    } 

      public void setEMail (String email) { 
     this.eMail = email; 
    } 
      public void setGpa(double gpa) { 
     this.gpa = gpa; 
    } 

    public int getID() { 
     return iD; 
    } 


    public String getPassword() { 
     return password; 
    } 


    public String getFirstName() { 
     return firstName; 
    } 


    public String getLastName() { 
     return lastName; 
    } 


    public String getStreet() { 
     return street; 
    } 

    public String getCity() { 
     return city; 
    } 
    public String getState() { 
     return state; 
    } 

    public double getZip() { 
     return zip; 
    } 
     public String getEMail() { 
     return eMail; 
    } 

    public double getGpa() { 
     return gpa; 
    } 
    public String getMessage() { 
     return this.message; 
    } 


    public boolean login(String password) throws SQLException { 
     boolean yes_no = false; 

     /* Verify password against database password for the userId */ 
     if (password.equals(this.password)) { 
      this.message = "Thank you, you are logged in."; 
      yes_no = true; 
     } else { 
      this.message = "Sorry Your Login Information seems to be incorrect."; 
      yes_no = false; 
     } 

     /* Returns true or false based on the condition statement above */ 
     return yes_no; 
    } 

    /** 
    * Establishes connection with the database containing the customer information 
    * @return Connection 
    */ 
    public Connection studentConnect() { 
     try { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     } catch (ClassNotFoundException e) { 
      System.out.println("Errors: " + e); 
     } 

     Connection connect = null; 
     try { 
      connect = DriverManager.getConnection("jdbc:odbc:RegisDB"); 
     } catch (SQLException e) { 
      System.out.println("You have Errors: " + e); 
     } 

     return connect; 
    } 

    /** 
    * Takes the student Id and retrieves the information from the customers 
    * data table and stores it in the properties of the customer object. 
    * @param iD 
    * @throws SQLException 
    */ 
    public void findDB(int iD) { 

     Connection con = studentConnect(); 
     Statement statement = null; 
     ResultSet result = null; 

     String sql = "Select * From Students Where iD = " + iD + ";"; 

     try { 
      statement = con.createStatement(); 
      result = statement.executeQuery(sql); 
      while (result.next()) { 
       this.iD = result.getInt("iD"); 
       this.password = result.getString("password"); 
       this.firstName = result.getString("firstName"); 
       this.lastName = result.getString("lastName"); 
       this.street = result.getString("street"); 
       this.city = result.getString("city"); 
       this.state = result.getString("state"); 
       this.zip = result.getDouble("zip"); 
       this.eMail = result.getString("eMail"); 
       this.gpa = result.getDouble("gpa"); 
      } 
      con.close(); 

     } catch (SQLException e) { 
      System.out.println("Errors: " + e); 
     } 
    } 

    /** 
    * Takes in the parameters of the customer database and inserts the parameters taken into 
    * the database for the addition of customers to the database. 
     * @param password 
    * @param firstName 
    * @param lastName 
    * @param street 
    * @param city 
    * @param state 
     * @param zip 
    * @param email 
    * @param gpa 
    * @throws SQLException 
    */ 
    public void insertDB(String password, String firstName, String lastName, String street, String city, String state, double zip, String email, double gpa) throws SQLException { 
     Connection con = studentConnect(); 
     Statement statement; 
     ResultSet result; 
     int resultVal; 
     String sql = "INSERT INTO Students (password, firstName, lastName, street, city, state, zip, eMail, gpa) VALUES ('" + password + "','" + firstName + "','" + lastName + "','" + street + "','" + city +"','" + state +"','" + zip + "','" + eMail +"','" + gpa + "');"; 

     try { 
      statement = con.createStatement(); 
      resultVal = statement.executeUpdate(sql); 

      System.out.println(resultVal); 
     } catch (SQLException e) { 
      System.out.println("Error: " + e); 
      System.out.println(e.getStackTrace()); 
     } finally { 
      con.close(); 
     } 
    } 

    /** 
    * Takes in student id and locates the customer in the database, performs 
    * an sql update and deletes the customer from the database. 
    * @param iD 
    * @throws SQLException 
    */ 
    public void deleteDB(int iD) throws SQLException { 
     Connection con = studentConnect(); 
     Statement statement; 
     int resultVal; 

     String sql = "DELETE FROM Students WHERE iD = " + iD + "';"; 

     try { 
      statement = con.createStatement(); 
      resultVal = statement.executeUpdate(sql); 
      System.out.println(resultVal); 
     } catch (SQLException e) { 
      System.out.println("Errors: " + e); 
     } finally { 
      con.close(); 
     } 
    } 
} 
+0

많은 System.out.println이 있습니다. 그 결과를 보여주세요. –

+0

서블릿에 전달 된 iD 매개 변수는 int가 아닙니다. 그렇다면이 예외는 발생하지 않습니다. 서블릿을 호출하는 데 사용되는 URL은 무엇입니까? GET 또는 POST입니까? 예외의 스택 추적은 무엇입니까? –

+0

정수가 아닌 것 같아요. System.out.println (iD) 앞에 넣으십시오. 전에 int iD = Integer.valueOf (request.getParameter ("iD")). intValue(); –

답변

0

사용있는 Integer.parseInt() 귀하의 문자열을 구문 분석하고 그것을 원시 변수 유형으로 변환 하시겠습니까?

here을 참조하십시오.