我在一个Servlet的dopost方法中调用如下方法: RequestDispatcher rd = null;
rd = getServletConfig().getServletContext().getRequestDispatcher("/login.jsp");
rd.forward(request, response);它执行完之后页面的确是跳转了,但是地址是:http://localhost:8080/UPCOA/servlet/register(这是为什么?)
我想让它的地址变成http://localhost:8080/UPCOA/login.jsp要怎么办呢?谢谢!

解决方案 »

  1.   

    sendRedirect 重定向
    你的跳转时请求login.jsp的资源,地址栏不会变
      

  2.   

    转发和重定向区别百度下就知道了response.sendRedirect(request.getContextPath + "/login.jsp");
      

  3.   


    另外
    rd = getServletConfig().getServletContext().getRequestDispatcher("../login.jsp");
            rd.forward(request, response);应该也可以吧,试试
      

  4.   


    这是 RequestDispatcher.forward 的一个特征。即地址栏的地址不会改变。
    你可以使用 HttpServletResponse.sendRedirect 方法进行转发。但这个方法与 forward 有着很大的区别。
    如果使用 forward 则在转向前和转向后都同属于一次客户端请求。
    如果使用 sendRedirect ,实则是“转发”,也就是相当于客户端的两次请求。
      

  5.   

    sendRedirect 应该是“重定向”。不好意思。误导了。
      

  6.   


            RequestDispatcher rd = null;
            rd = request.getRequestDispatcher("/login.jsp");
            rd.forward(request, response);楼主这样试试。