转发,重定向以及区别和简单的session对象

1.转发
     作用:在多个页面交互过程中实现请求数据的共享.
     过程:Web服务器内部将一个request请求的处理权交给另外一个资源,属于同一个访问请求和响应过程,所以request对象的信息不会丢失.

2.重定向
  重定向就是通过各种方法将各种网络请求重新定个方向转到其他位置(如:网页重定向,域名重定向,路由选择的变化也是对数据报文经有路由的一种重定向.)
  重定向使用的是response对象的sendRedirect()方法.
  过程:Web服务器向浏览器返回的一个响应,浏览器接受此响应后再发送一个新的http请求到服务器,这属于两次不同的请求,则上一次请求的request信息将丢失.

例:登录页面Login:<body>

<form  name="form"  method="post"   action="control.jsp">

用户名:<input  type="text"  name="username">

密码:<input  type="password"  name="pwd">

<input  type="submit"  value="登录">

</form>

</body>

welcome 页面:<html>

<head><title>欢迎页面</title></head>

<body>欢迎进入本页面</body>

</html>

control.jsp页面:<html>

                 <head>登录处理页面</head>

                 <body>

            <% request.setCharacterEncoding("UTF-8");

String  name=request.geyParameter("userName");

                         String  pwd=request.geyParameter("pwd");

if(name.equals("admin")&&pwd.equals("123")){

request.getrequestDispatcher("welcome.jsp").forword(request,reponse);//转发

}else{

reponse.sendRedirect("Login.jsp");//重定向

}

%> 

</body>

</html>

3.重定向和转发的区别:
<1>重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。
       怎么选择是重定向还是转发呢?通常情况下转发更快,而且能保持request内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用。如果你不想看到这样的情况,则选择转发。
<2>不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题。
重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。
<3>转发是在服务器端发挥作用,通过RequestDispatcher对象的forword()方法将提交信息多个页面间进行传递.重定向是在客户端发挥作用,通过请求新的地址实现页面转向.

4.会话

一个会话就是用户通过浏览器与服务器之间进行的一次通话.

session对象用于存储特定的用户会话所需的信息.session对象的引入是为了弥补http协议的不足,http协议是一种无状态的协议.

session对象的失效方式:超时失效  手动实效

超时失效的实现方式:<1>在页面中:通过setMaxInactiveInterval()方法设置session的非活动时间      例:<% session.setAttribute("Login","admin"); session.setMaxInactiveInterval(600); response.sendRedirect("admin.jsp"); %>

<2>在项目web.xml中设置.  <session-config>     <session-timeout>10<session-timeout>     </session-config>              10的单位十分钟,设置0,-1表示永不超时 <3>在应用服务器中设置,在Tomcat目录/conf/web.xml中找到<session-config>元素,其中<session-timeout>元素中的30就是默认的时间,单位是分钟,可以修改其值. 手动实效:通过调用invalidate()方法实现,主要应用于用户注销场合.但若想清空session中的某个对象,则可以调用session.removeAttribute(String key)方法,将指定的对象从session中清除,session仍然有效.

session对象的常用方法:<1>void  setAttribute(String key,Object value)      以key/value的形式将对象保留到session中

<2>Object  getAttribute(String key)   通过key获取session中保存的对象

<3>void   invalidate()               设置session对象失效

<4>String getId()     获取sessionid

             <5>void setMaxInactiveInterval(int  interval)        设置session的非活动时间

             <6>int  getMaxInactiveInterval()         获取session的有效活动时间,以秒为单位

<7>void  removeAttribute(String key)     从session中删除指定名称(key)所对应的对象

时间: 2024-10-29 02:41:25

转发,重定向以及区别和简单的session对象的相关文章

深入研究Application和Session对象

用ASP编写虚拟社区.网上购物等程序时,Application和Session对象具有举足轻重的作用,能够灵活合理地运用这两个对象是提高程序质量的关键.下面让笔者根据自己在这方面的经验,向大家深入介绍一下ASP的这两个内建对象. 一.Application对象的成员概述 Application对象成员包括Application对象的集合.方法和事件. ⒈Application对象的集合 Contents集合:没有使用<OBJECT>元素定义的存储于Applicaiton对象中的所有变量的集合

3--springMVC中redirect重定向和forward转发的区别---一些简单的问题的解决

https://www.cnblogs.com/conswin/p/6973528.html SpringMvc请求方式分为转发.重定向两种,是用forward和redirect关键字在controller层进行处理. 下面代码实现了这两种不同的请求方式: import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.stereotyp

转发与重定向的区别总结

重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求.因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变.重定向的速度比转发慢,因为浏览器还得发出一个新的请求.同时,由于重定向方式产生了一个新的请求,所以经过一次重 定向后,request内的对象将无法使用. 怎么选择是重定向还是转

servlet之转发与重定向的区别

转发(服务器端跳转):  一次请求 <jsp:forward> request.getRequestDispatcher("new.jsp").forward(request, response); 重定向(客户端跳转):  两次请求 response.sendRedirect("new.jsp"); <a href="new.jsp">new.jsp</a> 转发重定向: 1.转发是在服务器端完成,因此称为服

http页面转发和重定向的区别

一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下:request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jspresponse.sendRedirect("new.jsp");//重定向到new.jsp 在jsp页面中你也会看到通过下面的方式实现转发:<jsp:forward page="apage.jsp" /> 当

SERVLET API中转发与重定向的区别?

SERVLET API中转发与重定向的区别? 1.转发(forward方法) 转发仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址. 转发是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址. 2.重定向(sendRedirect方法) 重定向是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接.这样,从浏览器的地址栏中可以看到跳转后的链

jsp中转发和重定向的区别!

请求是单向的,如果A请求B,之后A请求C的时候 A到B的请求断开! 转发和重定向的区别! 01.转发 request 001.转发是服务器端的行为 002.数据不会丢失 003.url不会发生变化,永远是第一次请求的url 004.每转发一次,作用域延迟一次请求! 02.重定向 response 001.转发是客户端的行为 002.数据会丢失 003.url会发生变化,永远是最后一次请求的url 004.至少两次访问服务器

URL转发和301重定向的区别

URL转发和301重定向区别是什么?URL转发和301重定向对于搜索引擎和权重转移都一样吗?下面我们一起来分析下: 一.从用户体验角度分析 在用户角度上,URL转发和301重定向完全是一样的,没有任何区别. 二.从操作使用URL转发和301重定向角度分析 URL转发操作起来更加容易,而301重定向在IIS服务器上相对比较麻烦,而且虚拟主机用户无法操作,apache服务器也比较容易实现. 三.从搜索引擎爬行和权重转移角度分析 URL转发没有权重转移,所以对于权重转移的站点没有任何帮助,如果你的站点

转发与重定向的区别

转发和重定向的区别    1>        转发只能转发同一个web应用工程里面的内容,        重定向可以重定向到任何工程的内容.    2>        转发:/代表当前工程目录        重定向:/代表webapps目录.    3>        转发时:浏览器地址栏不变        重定向时:浏览器地址栏不变.    4>        转发是服务器的内部行为,浏览器不知        重定向是浏览器和服务的的协同行为.    5>        转