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)所对应的对象

最新文章

  1. &lt;八&gt;JDBC_重构DAO查询方法
  2. (转) 变分自编码器(Variational Autoencoder, VAE)通俗教程
  3. protocol buffers的使用示例[z]
  4. sqlite3之基本操作(二)
  5. 端口扫描之王——nmap入门精讲(一)
  6. 多网卡 指定网卡到指定IP
  7. CodeForces 702 A Maximum Increase (贪心,高效算法)
  8. Java 解析epub格式电子书,helloWorld程序,附带源程序和相关jar包
  9. 树莓派学习路程No.1 树莓派系统安装与登录 更换软件源 配置wifi
  10. leetcode解析回文子串拆分
  11. Oracle SQL Lesson (4) - 使用转换函数和条件表达式
  12. javascript2
  13. 实战3--项目开始--准备:::资源分类, 日志系统, 写BaseDao
  14. 解决failed to push some refs to git
  15. 「mysql优化专题」90%程序员面试都用得上的索引优化手册(5)
  16. 使用css控制文字显示几行并且剩余部分隐藏(移动端和PC端同样适用)
  17. python操作三大主流数据库(4)python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示
  18. 原生js实现九宫格,全解析
  19. typescript handbook 学习笔记2
  20. [转]01分数规划算法 ACM 二分 Dinkelbach 最优比率生成树 最优比率环

热门文章

  1. IOS-Storyboard全解析-第二部分
  2. 最近ES遇到discover老是失败问题,ping主节点和node节点正常,抓包发现了大量的retransmission、tcp out of order、dup ack问题。
  3. 2793 [Poi2012]Vouchers
  4. C++复习14 构造函数初始化调用顺序
  5. ZOJ 2283 Challenge of Wisdom 数论,Dilworth Theorem,求最长反链 难度:2
  6. bzoj3495
  7. SCM-MANAGER
  8. 建造者模式(Builder和Director)
  9. zookeeper数据一致性与paxos算法
  10. vs 添加第三方库lib的两种方法