这是一段验证用户的代码,请问不知为什么当用户不存在的时候总有"[Microsoft][ODBC 驱动程序管理器] 无效的游标状态"这样的错误,如果这里把if...else...配套使用,则不会出错.很显然当用户不存在的时候运行到window.top.location='index.jsp',页面跳转以后,这个页的下面程序也是执行的.请问一下想要当用户不存在的时候,运行到window.top.location='index.jsp',这个页的下面程序不被执行,请问一下这个功能怎样实现.谢谢!
(我想把这代码上半部分制作成一个 单独 的jsp文件中,然后在其它页中插入这个文件,以此来验证用户的合法性,所以这个页面不想配套使用if...else...)<%
String username=(String)session.getAttribute("username");
Connection con=dbconnection.getConnection();
String sql="select * from user where username=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1,username);
ResultSet rs=pstmt.executeQuery();
if(!rs.next()){
out.println("<script language='javascript'>alert('请输入用户名!');window.top.location='index.jsp';</script>");
}String depart=rs.getString(3));
...........
...........%>

解决方案 »

  1.   

    代码写在页面里啊 强烈建议不要这样做 尤其是数据库操作得 建议看下dao设计模式
    if(!rs.next()){
    out.println("<script language='javascript'>alert('请输入用户名!');<jsp:forward page='index.jsp'/>">
    }这样试试~
      

  2.   

    都是先执行完服务器的代码,然后才会执行生成的HTML代码的。而楼主的页面跳转是通过Javascript来实现的,当然会先执行完所有的服务器代码,再执行你的javascrip脚本啦。
      

  3.   

    那看来只能用jsp:forward 来实现跳转了,不过它跳转的作用只能和javascript中的window.location一样,关键我这网页是在frameset框架中,所以想完全跳出这个frameset框架.请问一下怎样设置jsp:forward 才能使转向的网页跳出这个frameset框架,从而代替window.top.location的功能.