这是我的第一张jsp,two.jsp:<%  String message= (String)session.getAttribute("message");
    session.removeAttribute("message");
    if (message!=null){
      out.print(message);
      }
      %>
<form action="TwoServlet" method="post"> 
学生姓名:<input type="text" name="username"/>  </br> 
学生学号:<input type="password" name="password"/> </br>
       <input type="submit" value="查询"/>
    </form>然后这是我的servlet,TwoServlet: public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
TwoJdbc jdbc = new TwoJdbc(); 
int i= jdbc.selectuser(username, password);
    String url = i==1?"success.jsp":"two.jsp";
if (url.equals("two.jsp")){
request.getSession().setAttribute("message","<font color='red'<b>用户名错误</b></font>");
}
response.sendRedirect(url);
}
最后这是我的jdbc,TwoJdbc:
public class TwoJdbc {
  public int selectuser(String username,String  password){
   int  i=0;
       try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orac","test","test");//连接池
connection.setAutoCommit(false);
PreparedStatement ps=connection.prepareStatement("select count(*) from one where username=? and password=?");
ps.setString(1,username);
ps.setString(2,password);
ResultSet rs=ps.executeQuery();
rs.next();
i=rs.getInt(1);


}catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block&
e.printStackTrace();
}
return i;

}问题是: 每次我进了two.jsp,输入了,我数据库里面有的信息,却老是跳回到two.jsp,不论怎么调试,就是跳不到success.jsp那边去,到底哪儿错了??

解决方案 »

  1.   

    设置断点调试,看一下i的值是多少,把sql语句放在数据库中执行一下,看结果
      

  2.   

    我数据库里面有数据啊!!!
    难不成,我jdbc没连接上数据库???
      

  3.   

    是不是SQL写的有问题?你把组装好的SQL用System.out.println();打到控制台上看看,注入方式的sql条件那是字符串的话两边要拼“'”在试试。。
      

  4.   

    Connection connection=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orac","test","test");//连接池
    ===================
    请问,这里有没有写错?
    呃,没用过oracle连数据库。我只用过mysql
    好像还有//吧
      

  5.   

    sorry,我刚百度过了,确实不用//
      

  6.   

    你的i值就不等于1,当然一直跳转错误页面了》。
    rs.next();
    i=rs.getInt(1);
      

  7.   


    和我想的差不多,我给你把程序改下吧:这是你写的:
    PreparedStatement ps=connection.prepareStatement("select count(*) from one where username=? and password=?");
    ps.setString(1,username);
    ps.setString(2,password);给你改下:
    PreparedStatement ps=connection.prepareStatement("select count(*) from one where username='"+username+"' and password='"+password+"'");注:看清我给你改动的地方!
      

  8.   

    SELECT * FROM people WHERE name='张三',这个能用,SELECT * FROM people WHERE name=张三这个不能用,并且你的用户名密码传回来的时候先看看编码是否为汉字,在看看去掉前导空格和后导空格试试。。估计是这个问题。
    如果还不是这个问题,我就无能为力了
      

  9.   

    String url = i==1?"success.jsp":"two.jsp";仔细查找你i的值有问题呀,看看你的SQL有没有写正确,把sql在数据库中执行一次,看看结果,然后看看你拿出来的结果是不是一致的。
      

  10.   

    谢谢各位的热心帮助,我最先看到3楼的帖子,于是,我就换了一张表B,结果问题就over了!!
    但是我之前的表A也没看出来有问题啊!!!
    烦死!!我于是又换回之前的表A,果断还是不行,但是我就是看不出来这表有什么问题!!
    纠结啊!!!!
    再次感谢各位的热心帮助!!
    我是小菜,java路还很长,愿意时不时给我提点儿意见的,加我好友啊,谢谢,我的Q,409126491!!!
      

  11.   

    ps.setString(1,username);
    ps.setString(2,password);
    改成
    ps.setString(0,username);
    ps.setString(1,password);
    试试,是从0开始还是从1,忘记了
      

  12.   

    看见楼主在12楼的回答,可能是A表中有两条数据满足添加吧!一开始看,猜是connection.setAutoCommit(false); 提交设为手动,
     下面没有 commit();  以为没有执行sql语句呢