重定向到不同页面的条件?

时间:2012-05-28 12:07:42

标签: java servlets

我编写了一个servlet,其目的是仅在查询执行时才登录到应用程序...现在用于无效用户名和id的条件是什么...我无法写入条件..pls帮助我... servlet是......

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl ","scott","tiger");
            System.out.println("cnnection est");
        int Id = Integer.parseInt(request.getParameter("id"));
        String Name=request.getParameter("firstname");
        boolean b=true;

        //Connection con =JdbcConnectionUtil.getConnection();

        PreparedStatement pst = con.prepareStatement("select * from login where id=? and firstname=?");
        pst.setInt(1, Id);
        pst.setString(2, Name);

        ResultSet rs = pst.executeQuery();
        if(rs!=null && rs.next())
        {

        //while(rs.next()){
            PrintWriter pw = response.getWriter();
            System.out.println("here");
            pw.println("hello");
            pw.println(rs.getInt(1));
            pw.println(rs.getString(2));
            pw.println(rs.getString(3));

        }
        //}
        else
        {
            RequestDispatcher rd = request.getRequestDispatcher("/LoginFailed.html");

        }
//      


        }
        catch(Exception ex){

            ex.printStackTrace();

        }
    }

2 个答案:

答案 0 :(得分:1)

使用rd.forward将解决我认为的问题。

How to forward requests from Servlet to JSP

答案 1 :(得分:1)

首先检查正确的参数,然后执行逻辑。另外,不要忘记关闭语句和连接以避免内存泄漏。

以下是重构代码:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //get parameters from request
    try {
        String idParam = request.getParameter("id");
        String name = request.getParameter("firstname");

        //check if request contains such parameters
        if (idParam == null || name == null) {
            throw new IllegalArgumentException(
                    "Id and Name parameters must not be null.");
        }

        //try casting idParam to int
        Integer id = null;
        try {
            id = Integer.parseInt(idParam);
        } catch (NumberFormatException nfe) {
            throw nfe;
        }

        PreparedStatement pst = null;
        Connection con = null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            con = DriverManager.getConnection(
                    "jdbc:oracle:thin:@localhost:1521:orcl ", "scott", "tiger");

            pst = con.prepareStatement(
                    "select * from login where id=? and firstname=?");
            pst.setInt(1, id);
            pst.setString(2, name);

            //check if result returned any data
            ResultSet rs = pst.executeQuery();
            if (!rs.next()) {
                throw new Exception(
                        "No such user for id: " + id + " and name: " + name);
            }

            PrintWriter pw = response.getWriter();
            pw.println("hello");
            pw.println(rs.getInt(1));
            pw.println(rs.getString(2));
            pw.println(rs.getString(3));

        } catch (Exception ex) {
            throw ex;
        } finally {
            try {
                if (pst != null) {
                    pst.close();
                }
                if (con != null) {
                    con.close();
                }
            } catch (SQLException sqle) {
                throw sqle;
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
        RequestDispatcher rd = request.getRequestDispatcher("/LoginFailed.html");
        rd.forward(request, response);
    }
}

我认为这样的事情是合适的。