<%@ page import="java.sql.*"%>
<%!
public static final String dbdriver="oracle.jdbc.driver.OracleDriver";
public static final String dburl="jdbc:oracle:thin:@localhost:1521/orcl";
public static final String dbuser="scott";
public static final String dbpass="tiger"; 
%><%
boolean flag = false ;
String id = request.getParameter("userid");
String pwd = request.getParameter("password");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
Class.forName(dbdriver);
   conn = DriverManager.getConnection(dburl,dbuser,dbpass);
   String sql = "select * from tuser where userid=? and password=? ";
   pstmt = conn.prepareStatement(sql);
   pstmt.setString(1,id);
   pstmt.setString(2,pwd);
   rs = pstmt.executeQuery();
   if(rs.next()){
   flag = true ;
   }
}catch(Exception e){
}finally{
try{
conn.close();
}catch(Exception e){
}
}
%><%
if(flag){
%>
<jsp:forward page="success.jsp"/>
<%
}else{
%>
<jsp:forward page="failure.jsp"/>
<%
}
%>
数据库里添加了表,用该查询语句也能行,但是怎么总是跳到错误的页面?输入正确的口令也是!判断有错??

解决方案 »

  1.   

    pstmt.setString(1,id); 
      pstmt.setString(2,pwd); 应该改成 
    pstmt.setString(1,"id"); 
      pstmt.setString(2,"pwd"); 
      

  2.   

    rs.next()只有2条以上的数据才能进入这个条件里,你查询出来的是一条吧?
      

  3.   

    把flag打出来看看,可能rs.next()是空的
      

  4.   

    just try:<% 
    if(flag == true){ 
    %> 
    <jsp:forward page="success.jsp"/> 
    <% 
    }else{ 
    %> 
    <jsp:forward page="failure.jsp"/> 
    <% 

    %>another question:
    did you mind here "request" is of type "HttpServletRequest". if so, you need to import packages  "javax.servlet.*" and
    "javax.servlet.http.*"
      

  5.   

    request是jsp中的内置对象,不需要使用import的.
    估计是取出来的rs中没有数据,可以再flag=true的位置使用调试语句,看程序是否进入了if(rs.next()).
      

  6.   


    3楼好好看看java.sql.ResultSet中的next()方法吧,不要误导人,要是那样的话你怎么登陆上来的?我想你自己的账号在数据库中是唯一的吧。“将指针从当前位置下移一行。ResultSet 指针最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。”这是API中对next()方法的解释.数据库中可能没数据,也可能数据库中的值和实际页面输入的值不一致,比如某个值后面或者前面有空格,建议楼主好好检查下。