1.会话信息保存在服务器内存上,可以断续访问,和cookie相比,其保存在服务器上。
2.男人就像蓝牙:只有在你接近时,他才会找上你。当你离开后,他便又去找其他的“设备”了。女人就像Wi-Fi:她能看到周围所有的“设备”,但只选择强壮的那个“接入”。
3.会话关闭:浏览器关闭,主动关闭,会话超时
4.会话底层实现:cookie和url重写(保存的是sessionID,就是调用response.encodeURL,那么自动加上id)
5.session里有创建时间和最后访问时间,不同于cookie(还得自己写),不过返回的是毫秒数,那么new Date(方法)
6.javabean的类必须是public的,否则不能访问的!!!一定要用public申明
7.BeanUtils主要提供了对于JavaBean进行各种操作。
8.forward是服务器转发,在servlet内部,而sendRedirect是重定向(通过浏览器)。

  1. forward转发是在容器内部实现的同一个Web应用程序的之间的转发,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变,而sendRedirect方法可以重定向到任何URL, 因为这种方法是修改http头来实现的,URL没什么限制,重定向后浏览器地址栏URL改变。
  2. forward重定向将原始的HTTP请求对象(request)从一个servlet实例传递到另一个实例,而采用sendRedirect方式两者不是同一个application。
  3. 基于第二点,参数的传递方式不一样。forward的form参数跟着传递,所以在第二个实例中可以取得HTTP请求的参数。sendRedirect只能通过链接传递参数,response.sendRedirect(“login.jsp?param1=a”)。 
  4. 使用forward重定向的过程,是浏览器先向目的Servlet发送一次Request请求,然后再服务器端由Servlet再将请求发送到目的url,再由服务器端Servlet返回Response到浏览器端。浏览器和服务器一次请求响应(3次操作)。使用sendRedirect转发的过程,浏览器先向目的Servlet发送一次请求,Servlet看到sendRedirect将目的url返回到浏览器,浏览器再去请求目的url,目的url再返回response到浏览器。浏览器和服务器两次请求响应(四次操作)。可以看出哪种方式稍快一些。

  • forward方法的调用者与被调用者之间共享Request和Response,sendRedirect方法由于两次浏览器服务器请求,所以有两个Request和Response。如果使用request.setAttribute传递一些属性就需要用forward,如果想要跳转到别的应用的资源,就需要用sendRedirect。
  • 无论是forward方法还是sendRedirect方法调用前面都不能有PrintWriter输出到客户端。
       forward方法报错: java.lang.IllegalStateException: Cannot forward after response has been committed
       sendRedirect报错:java.lang.IllegalStateException
    at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
  •         再来看一个具体例子!!!参考:http://zhaoyuqiang.blog.51cto.com/6328846/1132795

    <html>
    
    <head>
    
    <title>web</title>
    
    </head>
    
    <body>
    
    <h1>我的技术博客:http://zhaoyuqinag.blog.51cto.com</h1>
    
    </body>
    
    </html> 
    <%@ page  language="java" contentType="text/html" pageEncoding="gbk" %>
    
    <html>
    
    <head>
    
    <title>web</title>
    
    </head>
    
    <body>
    
    <%
    
        System.out.println("====forward跳转之前=========");
    
    %>
    
    <jsp:forward page="turnAfter.html"/>
    
    <%
    
        System.out.println("====forward跳转之后=========");
    
    %>
    
    </body>
    
    </html> 

            运行一下,看浏览器的结果,的确是跳转了,但是地址栏并没有发生改变,更有趣的是看一下服务器的结果,如下图所示:

            根据结果显示,只有跳转之前,而没有跳转之后。我们再来看另一种跳转方式会怎么样。

    <%@ page  language="java" contentType="text/html" pageEncoding="gbk" %>
    
    <html>
    
    <head>
    
    <title>web</title>
    
    </head>
    
    <body>
    
    <%
    
        System.out.println("====response跳转之前=========");
    
    %>
    
       <% response.sendRedirect("turnAfter.html");%>
    
    <%
    
        System.out.println("====response跳转之后 =========");
    
    %>
    
    </body>
    
    </html> 

            运行一下,看一下服务器的结果如下:

               

            可以看出forward属于无条件的跳转。跳转之前的语句会执行,而跳转之后的语句将不会执行,那么如果现在在jsp中使用了JDBC的话,很明显必须子啊跳转之前进行数据库的关闭,否则数据库就再也无法关闭了;sendredirect跳转是在所有语句都执行完之后才完成的操作。

    <jsp:forward>、requestDispatcher和sendRedirect()的区别的更多相关文章

    1. JSP的getRequestDispatcher()与sendRedirect()的区别

      getRequestDispatcher()与sendRedirect()的区别   1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ; r ...

    2. Servlet学习笔记(四)之请求转发与重定向(RequestDispatcher与sendRedirect)

      ServletContext可以实现请求转发(ServletContext请求转发相关内容见之前博客:http://blog.csdn.net/megustas_jjc/article/details ...

    3. forward和sendRedirect的区别

      部分内容转自:http://blog.csdn.net/zhouysh/article/details/380364和http://blog.csdn.net/frank_jay/article/de ...

    4. jsp:forward response.sendRedirect

      jsp中<jsp:forward page=""/>和response.sendRedirect("")两种跳转的区别 一.response.sen ...

    5. Jsp重定向(response.sendRedirect())和转发(request.getRequestDispatcher().forward(request,r)的差别

      <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

    6. jsp forward跟redirect区别

      forward 相当于php的 require/include 属于服务器包含/跳转 request.getRequestDispatcher("result.jsp").forw ...

    7. response.sendRedirect跳转 jsp:forward跳转

      response.sendRedirect跳转 <% response.sendRedirect("online.jsp"); %> jsp:forward跳转 < ...

    8. jsp中jsp:forward 与 redirect区别

      部分转载:http://hi.baidu.com/168zlf/item/2f4b2ad4351b881c20e2500c 在网上看到一些帖子,总结了一些区别,可以从以下几个方面来看: 1.从地址栏显 ...

    9. getRequestDispatcher()与sendRedirect()的区别

      1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ; response.sendRedirect()是重新定向,前后页面不是一个request ...

    随机推荐

    1. 局域网内使用linux的ntp服务

      假设我们的饿局域网无法连接外网,但又需要同步时间,怎么办? 1. 已局域网内的一台机器作为基础,适用date修改其他机器的时间,date -s ...,很不方便,这里不介绍. 2. 适用ntp服务,自 ...

    2. C#随机函数random()典型用法集锦

      C#随机函数random()典型用法集锦 Random.Next() 返回非负随机数: Random.Next(Int) 返回一个小于所指定最大值的非负随机数 Random.Next(Int,Int) ...

    3. HttpWebRequest结合HtmlAgilityPack实现网页form提交

      年前一个项目,需要在某个系统实现系统自动操作. 系统页面使用form提交,页面参数较多,也参数设计一系列计算逻辑,改动一个值,其他值自动改变. 传统方法使用正则表达式匹配参数,构建post参数进行请求 ...

    4. PHP能得到你是从什么页面过来的,r…

      在开发web程序的时候,有时我们需要得到用户是从什么页面连过来的,这就用到了referer. 它是http协议,所以任何能开发web程序的语言都可以实现,比如jsp中是: request.getHea ...

    5. 【原创教程】鲸吞HTML

      首先,我们的angularJS课程分为三大模块: HTML/CSS/JS基础. angularJS详解. angualrJS的一些实用框架讲解. 其中,第一大模块的对象是对前端开发技术有点了解但不熟悉 ...

    6. Canvas保存图片保存到本地

      使用Canvas绘图,将图片保存到本地方法 一.使用HTML5 a标签的download属性,将图片保存到本地,不需要链接服务器 关于download属性:HTML5 <a>标签downl ...

    7. asp.net各种获取客户端ip方法

      Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真 ...

    8. c语言学习之基础知识点介绍(二):格式化控制符和变量的补充

      上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...

    9. Windows服务安装方法

      操作系统:Win8.1 安装方法:在命令行窗口中输入:InstallUtil service.exe 出错原因:需要以管理员身份启动命令行.

    10. ios专题 - GCD(2)

      何为Dispatch Sources 简单来说,dispatch source是一个监视某些类型事件的对象.当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中. ...