关于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;
}

代码在上,为什么不跳转……

问题很简单

conn.createStatement
应该是
conn.createPreparedStatement

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

从控制台可以看出是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);