本帖最后由 moshucong2011 于 2010-07-25 10:52:31 编辑

解决方案 »

  1.   

    forward使用比较多的,还有真要跳转应该用servlet更好 ,那既可以转发(URL不变,但页面跳转),也可以重定向(URL与页面都变)
    一般JSP做展现,而SERVLET做控制,
      

  2.   

    我搜到点资料:
    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。http://topic.csdn.net/u/20091213/21/4BB20C4C-761D-4C52-B600-562B571639FF.html
      

  3.   

    为什么 只用 jsp呢 有很多逻辑吗?
      

  4.   

    你没说全。
    第一种你说的对了,那个实际上是javascript控制的,在客户端有浏览器进行跳转
    第二种你说对了部分。跳转后面的代码是不会执行的。还有第三种,重定向。这个必须由服务器来控制,服务器发一个重定向指令到浏览器(实际上是在http头中加上相关指令)指令中包含目标路径,浏览器立即终止当前请求并发跳转到服务器指定的路径中。1,2两种,当前请求的参数和数据一般不会丢失,前后两个请求可以在request范围内共享数据。
    3,请求前后无法在request范围共享数据,但session,application是可以的,但不绝对。如果重定向到另一个web程序,则无法共享任何数据。
      

  5.   

    跳转的方式就好几种呀,你上面跟了两个简单的跳转方式
    你的第一种
    重定像URL,不过,我也是刚学完JSP,不是很了解,当时我问老师,重定向URL传参会不会带来不安全性,因为传的参数那些会显示在地址栏。
    还有个就是你用的JSP客户端跳转,跳转后地址栏地址不会变,跳没有跳转,你可以写个测试页面,看看会不会显示信息。
    还有种是服务器端跳转,服务器端跳转一般不用,那样会加重服务器负担。
    我是新手,不对的地方,请多多指教,我需要提高。
      

  6.   


    1.<jsp:forward page="xxx.jsp"/>
    2.RequestDispatcher rd = request.getRequestDispatcher("xxx.jsp");
    rd.forward(request,response);
    3.response.sendRedirect("xxx.jsp");
    三者关系如下:
    1和2其实是相同的。只不过表现形式不同。
    主要是1和2区别于3。
    首先他们的请求次数不同。在forward方式下,把request和response对象作为参数传递到目标文件对应的对象,其实就是方法的调用,请求一次。在redirect方式下,用于首先请求了当前文件,当前文件把目标文件的地址返回给了客户端,客户端再次发送请求,请求目标文件,实际上是发送了两次请求。
    2、传值不同。在forward方式下,当前文件和目标文件属于同一次请求,共享request对象,所以可以使用request对象传值。在redirect方式下,当前文件和目标文件属于不同的请求,每次请求会单独创建request和response对象,这样就不能使用request对象来传值。
    3、客户端在地址栏中看到的地址不一样。
      

  7.   

    response.sendRedirect():服务器跳转,有时候活学活用的,我有时候跳转还用<form ><hidden></form>这种表单存参数的形式跳转呢
      

  8.   

    我总结一下我的理解,各位看看我理解得对不对:
    1.out.println("<meta http-equiv='refresh' content=跳转等待时间;url=目标页面> ");

    response.sendRedirect("green.jsp");
    原理是一样的,都是服务器将跳转地址发送给客户浏览器,然后再由浏览器请求目标页面。因此这种方法在等待跳转的时间里面,后面的代码也会被执行,而且跳转后浏览器的URL也会变为目标页面的URL。2. 
    <jsp:forward page="目标页面" />

    request.getRequestDispatcher("目标页面").forward(request, response);
    原理是等价的,都是由服务器将目标页面转发给浏览器,因此浏览器的地址栏不变.是这样吧?
    参考了这里 :http://www.family168.com/tutorial/jsp/html/jsp-ch-03.html
      

  9.   

    页面间进行跳转不安全,先提交到Serverlet 或者Action中在跳转,
      

  10.   

    forward 不会清空PageContext 中的值
    redirect 会清空 PageContext 中的值传值的话用 forward
    直接跳转用 redirect
      

  11.   

    如果你使用js呢,我建议你使用你的第一个方法进行跳转
    你的第二个跳转一般不会用,不过你是写jsp的,用到的几率就多了,
    要是你在后台进行跳转呢,我建议你看看7楼兄台的2,3两个,OK
      

  12.   

    <jsp:forward page="目标页面" />用的比较多。
    如果用了servlet,response.sendRedirect("目标页面")也行