jsp中跳转 jsp的两种跳转方式及区别

来源:互联网 发布:程序员笔记本推荐 编辑:程序博客网 时间:2024/05/29 19:16

//注意:不推荐中文文件名如"目的页面.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的操作,传递必要的参数到跳转后的页面!

 

 


 

原创粉丝点击