在servlet里有两中方式可以进行跳转,一种是request的RequsetDisptcher的forwd方法.一种是response的sendRedirect方法不过它们好像都是get方式进行的.我想向大家请教一下还有其他的方式进行跳转的吗?在servlet里面可以有post方式进行跳转的吗?

解决方案 »

  1.   

    大哥 会操作access吗?  帮我看看
      

  2.   

    上面的两种跳转的区别你知道吧
    我就吧多说了forword是内部跳转,sendRedirect是客户端重定向
    这和你的Http请求方式没有什么太大关系,和你form 的设置的请求有关
      

  3.   

    这个我知道,不过在校内网编程的时候我跳转的时候设置的session的值是空的,而校内网要求的访问方式是post我想是不是和跳转方式有关?
      

  4.   

    跳转方式不会有多大影响 GET只是信息现实在地址栏上,而且会有长度限制。。
      

  5.   

    request.getRequestDispatcher("目标页面").forward(request, response);
    response.sendRedirect("目标页面");
    这两种跳转方式跟POST和GET请求无关!
    至于你说的session没有东西,估计是你还没有区分这两种跳转的区别!
    它们的区别:
        1.从地址栏判断(response跳转地址栏变为目标页面的地址栏,request还是原来的地址栏)
         2.从请求上判断:
          request跳转是一次请求: 客户端-->服务器-->服务器跳转到目标页面
           response跳转是两次请求:客户端-->服务器-->服务器到客户端-->客户端去寻找目标页面
        从请求上的判断联系到了第三个注意点:作用域(四大作用域)
        3.从作用域判断
           因为request是一次请求,所以把数据放到request.setAttribute("test",内容);来保存,用request跳转到目标页取是对的
           如果用response跳转,作用域还是request,到目标页取就取不到了,因为是两次请求
           所以如果用response跳转必须放到session及session以上的作用域
      

  6.   

    同意楼上和get post请求无关session 可以传递本页面和本页面的子页面。
    request 可以传递一次请求的。用request.getRequestDispatch().forward()是在服务器上跳转还是一次请求。
    你要是用第二种跳转的话就得就得用session  来传递。
      

  7.   

    感谢以上回答问题的大哥大姐们,虽然用这个方法没解决我的问题还是给了我启发. 顺便说一下我遇到的那个问题解决了,谢谢,呵呵! 特别感谢lijiaof16 的详细讲解.
      

  8.   

    可以在当前的那个页面内的form中设置method为post,再在跳转的JAVA类中重写doPost方法就可以了。
      

  9.   

    response.sendRedirect("BBB");
    这个是通知浏览器跳转, 就是说, 告诉浏览器: 你别来找我了, 找 BBB 去.
    浏览器收到这个通知,会放弃当前请求, 重新去请求那个 BBB-----------------------------------------------------------request.getRequestDispatcher("BBB").forward(request, response);
    这个是在服务端把 处理响应权 转让给 BBB.
    就是说,这个请求原来页面不处理了, 让给 BBB 来处理并响应这个请求这个转换,浏览器是不知情的
    如果浏览器请求的是 AAA
    但是 AAA 中 forward 给了 BBB浏览器并不知道 请求被 BBB 响应了, 浏览器还以为 AAA 响应了请求
    这个过程中,浏览器没有也不需要再重新请求服务端