在你的servlet里这样写:
try {
if (rs != null && rs.next()) { out.print(
"<SCRIPT LANGUAGE='JavaScript'>location='../index.jsp';</SCRIPT>");
} else
out.print(
"<SCRIPT LANGUAGE='JavaScript'>location='../login.jsp?enter=errUser';</SCRIPT>");
} catch (Exception e) {
System.out.print("login.java:登录错误:" + e);
}

解决方案 »

  1.   

    如果你在servlet中是使用下面方法转向的,是不会错的  
    ServletContext sc=getServletContext();
      RequestDispatcher rd=sc.getRequestDispatcher("../XXX.jsp");
      //如果你的servlet不映射到user/Login,而是映射到Login的话,上面转向的参数为"/XXX.jsp"或"./XXX.jsp"
      rd.forward(request,response);
      

  2.   

    我在servlet中用response.sendRedirect("/index.jsp");就直接转向到首页,并且浏览器URL仍然是index.jsp的路径。index.jsp前的/表示根目录!
      

  3.   

    造成主页上链接路径错误??
    怎么会有错呢,不明白。ie地址栏的url和你主页的<href>连接没有直接关系。所有的连接都用根目录作参考!!!
    不是这样吗?
      

  4.   

    response.sendRedirect("index.jsp");可以的
      

  5.   

    楼主的情况真是奇怪,难道你的servlet里有frame?不太可能啊|!
      

  6.   

    我没有用sendRedirect()。我的书上没有讲过这个方法,我知道这个方法,用过一次失败了,说IllegaleStateException。
    我用的是RequestDispatcher:
    RequestDispatcher dispatcher=request.getRequestDispatcher("/index.jsp");
    dispatcher.forward("request,response");
    这样的话可以把原来的request里面的参数什么的一起给转向后的页面。但是URL还是servlet的URL。另外,我做网页避免使用根目录开头的超链接,这很好理解。我都是文档为起点的,比如一个/user/index.jsp页面中指向/index.jsp的链接一定是../index.jsp而从来不做成/index.jsp。这样比较灵活。
      

  7.   


    JSP页面中:
    <%
    if(request.getParameter("err")!=null)
    {
    String err=URLDecoder.decode(new String(request.getParameter("err").getBytes("iso8859_1"),"gbk"));
    out.print(err);
    }
    %>JAVA中这样写
    Error = URLEncoder.encode("提交成功!");
        response.sendRedirect("/cyvod/manage/actadd.jsp?err="+Error);我这样写可以返回信息的不知道楼主是不是这个意思
      

  8.   

    我的意思:
    用于登陆的页面是http://localhost/user/login.htm,用于登陆验证的servlet映射到/user/Login,所以htm的form里面action就写"Login",因为相当于在同一目录下。提交并通过验证后用RequestDispatcher重定向到/index.htm,但是这时候浏览器的URL仍然是http://localhost/user/Login,结果造成/index.htm里面的超链接错误,比如原来有个超链接指向user/login.htm,用servlet登陆后由于当前目录是user,该链接指向了user/user/login.htm,不能正常使用了。
      

  9.   

    如果网页里面用“/”开头的链接的话,要把所在的module名字放进去,也就是说如果用tomcat,东西放在test这个context下面的话,用“/”链接要指向test下的index.html要把链接写成/test/index.html。WAS也是这样。但是我学长说他用weblogic,不是这样的,weblogic会把根目录映射到你的module目录下,也就是只要写成/index.html,就指向test下面的index.html了。
    所以说链接都用“/”开头是不上品的,必须在/后面跟上module的路径。
    用sendRedirect()确实可以让URL变成转向后的地址,但是不会把request里面的东西一起传过去,用forward()可以传递request,但是浏览器认为URL还是servlet的URL,有可能造成网页里链接不对,如果它们不是以“/”开头,而是以当前路径作参考。
    所以!请问!商业项目中是怎么做的!Sun是怎么做的!IBM是怎么做的!到底应该是怎么做的!!!
      

  10.   

    除了用了frameset以后IE地址栏不变化外,没碰到过这种情况.
      

  11.   

    回复人: djws(void)
    用../xxx.jsp不要捣浆糊好不好?你这样servlet转向以后可以用了,但是我直接访问/index.html的时候怎么办?根目录的上一层是什么?..指向什么?
      

  12.   

    楼主的问题我也想知道!!
    因为要正常访问index页面必然要通过一个servlet转向!!!
    通过login页面经过servlet验证转象到index
    如果直接访问index就会有问题出现,,如果index再通过一个servlet进行数据库操作则问题更大
    把代码全写在 jsp页面里是不会有这样的问题的!!!
    不知道有什么方法可以很好的解决问题!!!
      

  13.   

    哪位高手发点声音呀!哪怕说我做事方式不对,应该用Struts或者其他什么做我也服了,虽然我还不懂,但是我可以去学了呀!
    事实证明这是一个问题呀!楼上的也碰到了呀!
      

  14.   

    我投降了,现在用Apache+Tomcat,所有servlet映射到/servlet下,所有网页里的链接以根目录开头。