菜鸟求教:JSP页面跳转问题 本帖最后由 moshucong2011 于 2010-07-25 10:52:31 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 forward使用比较多的,还有真要跳转应该用servlet更好 ,那既可以转发(URL不变,但页面跳转),也可以重定向(URL与页面都变)一般JSP做展现,而SERVLET做控制, 我搜到点资料:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。http://topic.csdn.net/u/20091213/21/4BB20C4C-761D-4C52-B600-562B571639FF.html 为什么 只用 jsp呢 有很多逻辑吗? 你没说全。第一种你说的对了,那个实际上是javascript控制的,在客户端有浏览器进行跳转第二种你说对了部分。跳转后面的代码是不会执行的。还有第三种,重定向。这个必须由服务器来控制,服务器发一个重定向指令到浏览器(实际上是在http头中加上相关指令)指令中包含目标路径,浏览器立即终止当前请求并发跳转到服务器指定的路径中。1,2两种,当前请求的参数和数据一般不会丢失,前后两个请求可以在request范围内共享数据。3,请求前后无法在request范围共享数据,但session,application是可以的,但不绝对。如果重定向到另一个web程序,则无法共享任何数据。 跳转的方式就好几种呀,你上面跟了两个简单的跳转方式你的第一种重定像URL,不过,我也是刚学完JSP,不是很了解,当时我问老师,重定向URL传参会不会带来不安全性,因为传的参数那些会显示在地址栏。还有个就是你用的JSP客户端跳转,跳转后地址栏地址不会变,跳没有跳转,你可以写个测试页面,看看会不会显示信息。还有种是服务器端跳转,服务器端跳转一般不用,那样会加重服务器负担。我是新手,不对的地方,请多多指教,我需要提高。 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、客户端在地址栏中看到的地址不一样。 response.sendRedirect():服务器跳转,有时候活学活用的,我有时候跳转还用<form ><hidden></form>这种表单存参数的形式跳转呢 我总结一下我的理解,各位看看我理解得对不对: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 页面间进行跳转不安全,先提交到Serverlet 或者Action中在跳转, forward 不会清空PageContext 中的值redirect 会清空 PageContext 中的值传值的话用 forward直接跳转用 redirect 如果你使用js呢,我建议你使用你的第一个方法进行跳转你的第二个跳转一般不会用,不过你是写jsp的,用到的几率就多了,要是你在后台进行跳转呢,我建议你看看7楼兄台的2,3两个,OK <jsp:forward page="目标页面" />用的比较多。如果用了servlet,response.sendRedirect("目标页面")也行 总听说云计算云计算的 到底什么是云计算 怎么让数据在编辑区不可见 hiberanet查询问题 怎样组合查询?要求在java中组合并得出结果,jsp中只是显示 jsp新闻系统中的点击率问题 SQL 语句查询 Struts2拦截器 developer 7.0 从网页上的登陆框直接打开ftp? 有谁知道,进来看一下 有关java中cookie的问题 上传图片到数据库 请问有谁知道一个java库,可以将html转成image的?
一般JSP做展现,而SERVLET做控制,
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。http://topic.csdn.net/u/20091213/21/4BB20C4C-761D-4C52-B600-562B571639FF.html
第一种你说的对了,那个实际上是javascript控制的,在客户端有浏览器进行跳转
第二种你说对了部分。跳转后面的代码是不会执行的。还有第三种,重定向。这个必须由服务器来控制,服务器发一个重定向指令到浏览器(实际上是在http头中加上相关指令)指令中包含目标路径,浏览器立即终止当前请求并发跳转到服务器指定的路径中。1,2两种,当前请求的参数和数据一般不会丢失,前后两个请求可以在request范围内共享数据。
3,请求前后无法在request范围共享数据,但session,application是可以的,但不绝对。如果重定向到另一个web程序,则无法共享任何数据。
你的第一种
重定像URL,不过,我也是刚学完JSP,不是很了解,当时我问老师,重定向URL传参会不会带来不安全性,因为传的参数那些会显示在地址栏。
还有个就是你用的JSP客户端跳转,跳转后地址栏地址不会变,跳没有跳转,你可以写个测试页面,看看会不会显示信息。
还有种是服务器端跳转,服务器端跳转一般不用,那样会加重服务器负担。
我是新手,不对的地方,请多多指教,我需要提高。
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、客户端在地址栏中看到的地址不一样。
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
redirect 会清空 PageContext 中的值传值的话用 forward
直接跳转用 redirect
你的第二个跳转一般不会用,不过你是写jsp的,用到的几率就多了,
要是你在后台进行跳转呢,我建议你看看7楼兄台的2,3两个,OK
如果用了servlet,response.sendRedirect("目标页面")也行