Servlet连接(INT到STRING)OR(String到Int)

时间:2014-11-10 19:29:00

标签: java servlets

Servlet拒绝我的iD(无法将String转换为INT,但它是一个INT)工作,它是来自http://puu.sh/cGvGN/6d29084aec.png的int(这些对学校来说是假的)

我怎样才能让它发挥作用?我以为我做得对,但Servlet停止工作

所发生的情况是该页面没有加载到ViewStudentSchedule页面,因为id INT不起作用。 (它给我一个空白页)

问题:

  • ID是否为Int?
  • 如果是,如何将它连接到Servlet,Strings工作得很好但是处理INTS现在变得很麻烦
  • 从显示数据库的图片中,是否一切都在数据库中提取信息?

提前致谢。

这是Servlet

@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.parseInt("iD");
             iD = request.getParameter("iD");

            System.out.println(iD); 

            String pw = request.getParameter("pw");

            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);
                System.out.println("works");

            }
            else{
                rd= request.getRequestDispatcher("/LoginError.jsp");
                rd.forward(request,response);
                System.out.println("no works");

            }

        }
    }

    // <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>

}

这是业务对象

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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

看看这两行:

int iD = Integer.parseInt("iD");
iD = request.getParameter("iD");

Integer.parseInt(String s)会尝试从传递给它的int参数中解析String个数字。例如,Integer.parseInt("34")将返回int个数字34。在您的情况下,您将String "iD"传递给它,因为无法解析数字,因此会抛出NumberFormatException

如果上述代码可以继续,则下一行将尝试将类型为request.getParameter("iD")的{​​{1}}的返回值赋给类型为{{1}的变量String }}这也是不可能的,因为iD会返回intrequest.getParameter()

尝试以下方法:

String

它的作用是获取请求参数null的值,该参数的类型为int iD = Integer.parseInt(request.getParameter("iD")); ,并尝试在可能的情况下解析"iD"。如果成功,结果将分配给String。如果没有,则会抛出int

最好还检查iD的结果:

NumberFormatException