houiqwer
2014-12-08 07:44
采纳率: 100%
浏览 3.7k
已采纳

关于servlet的跳转问题

if(action.equals("/log")){

        String name          = request.getParameter("name");
        String password      = request.getParameter("password");

        try {
            LoginDAO loginDao = (LoginDAO)LoginDAOFactory.getInstance("LoginDAO");
            Login e = new Login();
            e.setName(name);
            e.setPassword(password);
            int flag=loginDao.reg(e);
            if (flag==1)
            {   
                response.sendRedirect("index.jsp");
                }
            else
            {
                response.sendRedirect("logerror.jsp");
                }

        } catch (Exception e) {
            e.printStackTrace();
            throw new ServletException(e);
        }
    }



    public int reg(Login e)throws Exception{
    Connection conn = null;
    int flag=0;
    try {
        conn = DBUtil.getConnection();
        Statement stat = conn.createStatement();
        String sql = "select * from t_log where name=? and pw=?";
        PreparedStatement prep = conn.prepareStatement(sql);
        prep.setString(1,e.getName());
        prep.setString(2,e.getPassword());
        ResultSet rst = stat.executeQuery(sql);
        if(rst!=null){
            flag=1;             
           }
        else
        {
            flag=0;             
        }
       } catch (Exception e1) {
             e1.printStackTrace();
                throw e1;
       }finally{
           DBUtil.close(conn);
        }
    return flag;
}

代码在上,为什么不跳转……
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Coursera 2014-12-09 01:25
    已采纳

    问题很简单

    conn.createStatement
    应该是
    conn.createPreparedStatement

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 疯狂燃烧的岁月 2014-12-08 08:03

    代码看了下 逻辑上是正确的 看是不是其他问题 比如web.xml 中配置是否正确

    评论
    解决 无用
    打赏 举报
  • 疯狂燃烧的岁月 2014-12-09 08:51

    从控制台可以看出是SQL程序出现问题  stament  和 preparedment 的用法  你用混淆了

    ##  把Statement stat = conn.createStatement();  去掉 

    stament接口是用于执行不含参数的静态SQL语句 preparedment使用来执行含有或不含有参数的预编译的SQL语句

     stament创建和执行SQL语句时有创建语句(Statetment statement = connection. createStatement())和执行语句(statement.executeUpdate("sql语句");)

    preparement 不需要上面你写的Statement stat = conn.createStatement();语句 还有ResultSet rst = stat.executeQuery(sql);这句不对应该为ResultSet rst = prep.executeQuery();里面的sql去掉 因为前面已经执行了SQl语句: PreparedStatement prep = conn.prepareStatement(sql);

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题