servlet问题,求助 getServletContext().getRequestDispatcher("","").forward() 与response.sendRedirect()的区别是什么啊?请详细说明,最好再说下这两个语句的含义 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 request.getRequestDispatcher(url).forward(request,response)是直接将请求转发到指定URL,所以该请求能够直接获得上一个请求的数据,也就是说采用请求转发,request对象始终存在,不会重新创建。而sendRedirect()会新建request对象,所以上一个request中的数据会丢失。 redirect 会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器, 然后服务器发新的response给浏览器. 这时页面收到的request是一个新从浏览器发来的.forward 发生在服务器内部, 在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来了,可能己经放了数据. Sendredirect Forward是不同的request 虽然是不同的对象,但是,可以取到上一个页面的内容send后的语句会继续执行,除非return forward后的语句不会继续发送给客户端速度慢 速度快 request是请求,即客服端发来的请求、 response是响应,是服务器做出的响应,request.getRequestDispatcher(url).forward(request,response)是在地址栏不改变的情况下做出的跳转,地址栏只显示servlet的地址,不显示跳转的地址。最主要的区别是:request.getRequestDispatcher("/a.jsp").forward(request,response)它跳转的是http://localhost:8080/xiangmuming/a.jsp而response.sendRedirect("/a.jsp")跳转的是http://localhost:8080/a.jsp 顶!request.getRequestDispatcher(url).forward(request,response)目标url仍然可以取到当前request里表单的值,response.sendRedirect()就取不到了! 简单来说是将 request转发,request不能在两个页面之间进行数据共享,一般用session等方法在页面之间进行数据共享,但若用getServletContext().getRequestDispatcher("","").forward() 的话就可以讲request转发,即可达到request在页面之间共享response.sendRedirect() 说白了就是个跳转页面的命令 response.sendRedirect()使用这个客户端会再次发送请求,request.getRequestDispatcher().forward(request, response);则是在服务端内跳转,不会重新发送请求 正确简单的说:request.getRequestDispatcher(url).forward(request,response)这个方法不会改变浏览器的地址栏的网页地址而redirect 会改地址栏的地址,会把地址栏的值改为url request.getRequestDispatcher(url).forward(request,response)是直接将请求转发到指定URL,所以该请求能够直接获得上一个请求的数据,也就是说采用请求转发,request对象始终存在,不会重新创建。而sendRedirect()会新建request对象,所以上一个request中的数据会丢失。 redirect 会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器, 然后服务器发新的response给浏览器. 这时页面收到的request是一个新从浏览器发来的. forward 发生在服务器内部, 在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来了,可能己经放了数据. JAVA中七段码 编译器中输完一个点之后会出现相应的提示,这个功能是怎么实现的? 有没有像VC6.0这样的Java编译器阿? 一个简单的问题!!!编译通过了但不能运行,这是怎么回事啊???????????? 算法问题:如何进行文章相似性匹配 求教怎么再知道图片的倾斜角后,校正图片 问一个简单问题 为什么在applet中TextArea不能显示内容 如何判断a.txt文件的大小 再将这个a.txt文件另存为b.txt文件呀 关于jb6的问题 JList.getModel()强制转换的问题 java中读取远程数据库中数据的编码问题
redirect 会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器, 然后服务器发新的response给浏览器. 这时页面收到的request是一个新从浏览器发来的.forward 发生在服务器内部, 在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来了,可能己经放了数据.
是不同的request 虽然是不同的对象,但是,可以取到上一个页面的内容
send后的语句会继续执行,除非return forward后的语句不会继续发送给客户端
速度慢 速度快
response是响应,是服务器做出的响应,
request.getRequestDispatcher(url).forward(request,response)是在地址栏不改变的情况下做出的跳转,地址栏只显示
servlet的地址,不显示跳转的地址。
最主要的区别是:
request.getRequestDispatcher("/a.jsp").forward(request,response)它跳转的是http://localhost:8080/xiangmuming/a.jsp
而response.sendRedirect("/a.jsp")跳转的是http://localhost:8080/a.jsp
request.getRequestDispatcher(url).forward(request,response)目标url仍然可以取到当前request里表单的值,response.sendRedirect()就取不到了!
getServletContext().getRequestDispatcher("","").forward() 的话就可以讲request转发,即可达到request在页面之间共享
response.sendRedirect() 说白了就是个跳转页面的命令
request.getRequestDispatcher().forward(request, response);则是在服务端内跳转,不会重新发送请求
正确
简单的说:request.getRequestDispatcher(url).forward(request,response)这个方法不会改变浏览器的地址栏的网页地址
而redirect 会改地址栏的地址,会把地址栏的值改为url
redirect 会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器, 然后服务器发新的response给浏览器. 这时页面收到的request是一个新从浏览器发来的. forward 发生在服务器内部, 在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来了,可能己经放了数据.