//注意:不推荐中文文件名如"目的页面.jsp",此处仅为了教程需要而使用
// 带session,不带request的跳转(客户端跳转)
responst.sendRedirect("目的页面.jsp");
// 带session,带request的跳转(服务器端跳转)
// 需要在request中添加参数: request.setAttribute("myVar", "value");
// 在目的页面中获取参数: String myVar = request.getAttribute("myVar") == null ? "" : (String)request.getAttribute("myVar");
request.getRequestDispatcher("目的页面.jsp").forward(request, response);
jsp中两种跳转的区别 在jsp中有两种跳转,客户端跳转和服务器端跳转,,他们之间存在下面4点的区别:
1.<jsp:forward page=""/>做为服务器端跳转,跳转后地址栏地址是当前地址,而不是目的页面。而response.sensRediresct("")作为客户端跳转地址栏会变成目的页面的地址.
2.客户端跳转当程序执行到此句时,是所有代码执行完成后再执行跳转动作,也就是说其后的代码有被执行的机会,而服务器端的跳转是强硬的,执行到此句时,强制跳转,不执行其后的代码。
3.从传递参数的角度上看,客服端跳转可以通过地址重写的方式传递参数,如response.sendRedirect(*.jsp?ref=pokoo&ref2=pokoo2) .而服务器的跳转可以采用<jsp:param name="ref" value="pokoo"/>来传递参数。
4.jsp中有四种属性保存范围,如在当前资源中在request中保存了属性,那么客户端的跳转到目的页是拿不到,request容器里的东西的,而服务器端的跳转可以取道.
下面说说自己理解的jsp中四种属性保存范围和jsp中的9个内置对象,和jstl标签库,和简单的jsp标签的开发
在servlet中不能有<jsp:forward page=""/>,那服务器跳转是用 RequestDispatcher rd=request.getRequestDispatcher("*.jsp"); rd.forward(request,response);
客户端跳转时用HttPservletResopse对象的sendRedirect函数实现,服务器端跳转是使用RequestDispather对象的forward方法实现的。这两者之间的区别主要体现在三个方面:
1. 使用服务器端跳转时,客户浏览器的地址栏并不会显示目标地址的URL,而是用客户端跳转时,地址栏当中会显示目标资源的URL;
2. 服务器端跳转是由客户端发送一个请求,请求一个服务器资源——如JSP和Servlet——,这个资源又将请求转到另一个服务器资源,然后再给客户端发送一个响应,也就是说服务器端跳转是客户端发送一次请求,服务器端给出一次响应;而客户端跳转的流程则不同。客户端同样是发送一个请求给服务器端资源,这个服务器资源会首先给客户端一个响应,客户端再根据这个响应当中所包含的地址,再次向服务器端发送一个请求,也就是说客户端跳转是两次请求,两次响应;
3. 在进行客户端跳转和服务器端跳转时,都需要指定目标资源的URL,如果这个路径以“/”开始。在客户端跳转当中“/”代表的是应用服务器根目录,而在服务器端跳转当中代表的是应用程序根目录。
使用:<jsp forward/>服务器跳转:
1.地址栏不变,
2.执行到跳转后无条件跳转---之后的代码不再执行;
3.若使用此种跳转,一定要保证跳转后释放掉全部的资源(比如数据库链接);
4.跳转后,设置的request属性仍然保留,(setAttribute());
使用:response.sendRedirect("url")重定向:
1.地址栏改变,客户端跳转
2.所有代码执行完毕后再跳转;
3.不再保存request属性---地址改变了, 客户端跳转,属于请求的改变!
使用重定向客户端跳转时,可以借助重写url的操作,传递必要的参数到跳转后的页面!