一.JspWriter与PrintWriter的关系:

1.都是继承自java.io.Writer类.



JspWriter可以在JSP页面中直接用out对象输出.可以用pageContext.getOut();得到JspWriter对象.PrintWrietr在JSP页面中必须用response.getWriter();方法得到其对象.二者作用域不同.

2.在JSP页面中同时调用两种方法向页面输出数据,

PrintWriter中的数据会输出在JspWriter前面.如:  JspWriter out1 = pageContext.getOut(); //在JSP页面中可以直接使用out对象,而不用像这样用pageContext.getOut();来得到JspWriter对象.这样做得到的out1和JSP页面中封装的out对象是同

一个对象.(可以用out == out1 来判断两个对象是否相等.)

out1.print("222");

PrintWriter pw = response.getWriter();

pw.print("111");

*这样做的结果,在浏览器端还是先显示 "111",然后再显示"222".说明不管JspWriter与PrintWriter在程序中的顺序怎么样,始终先会输出PringWriter中的数据然后再输出JspWriter中的数据.这是因为out对象相当于插入到了PrintWriter前面的缓冲区中.out对象满足一定条件时,才会调用PrintWriter对象的print()方法,把out缓冲区中的内容输出到浏览器端.如果想让上面的代码的按代码的先后顺序输出可以写成:

JspWriter out1 = pageContext.getOut();

out1.print("222");



              out1.flush(); //刷新缓冲区

PrintWriter pw = response.getWriter();

       

              pw.print("111");

*out对象调用PrintWriter对象的print( )方法输出缓冲区中的内容的条件:



            ^设置page指令的buffer属性关闭了out对象的缓存功能

            ^写入到out对象中的内容充满了out对象的缓冲区

            ^整个JSP页面结束

^JSP中调用了out.flush()或response.flushbuffer()

二、JSP九个隐含对象

           1.JSP九个隐含对象(内置对象):直接在jsp文件里使用

              HttpServletRequest    request

              HttpServletResponse    response

              PageContext     pageContext (页面上下文)

              HttpSession     session

               ServletContext     application

               ServletConfig     config

               JspWriter     out

               Object      page

             Throwable     exception

2、四个作用域

              application作用域   ServletContext

               session作用域    HttpSession

               request作用域    HttpServletRequest

               page作用域    PageContext //生命周期是JSP页面编译成JAVA文件时的service方法.方法结束,生命周期也结束

3.pageContext的findAttribute方法会依次从四个作用域去找。是按什么先后顺序找的?

会按作用域由小到大的顺序来查找.即(page-->request-->session-->application).用pageContext.findAttribute("key");

               的好处就是不用指定作用域的类型.只要这四个作用域中有指定的key.就可以得到其对应的value;

三.全局错误处理

对页出现的相同的错误或异常不用在每个页面的指令头都追加errorPage="错误页面";指令.

             而可以在xml中配置全局错误处理.(必须写在xml文件的 <web-app></web-app>标签对中)

<error-page>

                      <error-code>404</error-code>

                      <location>/404Error.jsp</location>

            </error-page>

//用于处理404错误的全局配置.所有404错误都会转到404Error.jsp页面中.

<error-page>

               <exception-type>java.lang.ArithmeticException</exception-type>

              <location>/ArithmeticException.jsp</location>

           </error-page>



           //用于处理算术异常的全局配置.所有算术异常都会转到rithmeticException.jsp页面中.

四、EL表达式的简单介绍:

           1、从四个作用域中取值,可屏蔽null值,如果得到的value为空,则输出"",而不是null.而且不用指定作用域,从四个作用域的取值顺 序也是从小到大的顺序.

即(page--   >request-->session-->application).如果有两个作用域中有相同的"key".那么EL表达式取到的value是作用域较小的key所对应的value.而不会把两个作用域中

的值都取出来.



               ${key}

               ${key.propertityName}

.

2、取请求参数的值非常方便

                 ${param.paramName} //取得URL后的参数名所对应的参数值.如<jsp:forward page="2.jsp?name=aaa&age=14"></jsp:forward>

用${param.name}就可以得到"aaa",${param.age}就可以得到"14"

用EL表达式可以省略大量的代码.不用再调用作用域的getAttribute()方法,判断value是否为null的传统方法.



  3.可以取出JavaBean中的属性.

如:

class Person

{

   private String name;

  

   public void setName(String name)

   {

    this.name = name;

   }

  

   public String getName()

   {

    return this.name;

   }

}

可以在JSP页面写入以下代码,方便取出Bean中的属性.

Person person = new Person();

person.setName("aa");

request.setAttribute("per",person);



${per.name} //运行结果为"aa"

JspWriter与PrintWriter的关系的更多相关文章

  1. 辨析JspWriter和PrintWriter

    JspWriter和PrintWriter的区别? JspWriter相当于带缓冲的PrintWriter 如何控制out缓冲? 通过设置JSP页面page指令的buffer属性, 可以调整out缓冲 ...

  2. jsp 以及javabean内省技术

    l JSP l JavaBean及内省 l EL表达式 1.1 上次课内容回顾 会话技术: Cookie:客户端技术.将数据保存在客户端浏览器上.Cookie是有大小和个数的限制. Session:服 ...

  3. JSP(一)

    一.JSP概要 一]JSP的概念 1>JSP是SUN公司开发的一个基于服务端的一种动态WEB开发技术.         2>JSP的代码结构/内容 = HTML内容+JSP特有元素内容   ...

  4. JSP 内置对象(上)

    JSP 内置对象是 Web 容器创建的一组对象,不使用 new 关键字就可以直接使用的对象.如上一章中使用脚本实现打印九九乘法表中的out对象 <%-- 脚本:out对象是JSPWriter类的 ...

  5. IO流(五)__文件的递归、Properties、打印流PrintStream与PrintWriter、序列流SequenceInputStream

    一.文件的遍历 1.需求:对指定目录进行所有的内容的列出(包含子目录的内容)-文件的深度遍历 思想:递归的思想,在递归的时候要记住递归的层次. public class FileTest { publ ...

  6. Java Servlet(五):GenericServlet与Servlet、HttpServlet之间的关系(jdk7+tomcat7+eclipse)

    本篇主要记录下,对GenericServlet的作用理解,及其与Servlet/HttpServlet之间的关系. 示例完成业务: 1.新建一个login.jsp页面,要求改页面能输入username ...

  7. Java输入、输入、IO流 类层次关系梳理

    本文主要关注在Java编程中涉及到的IO相关的类库.方法.以及对各个层次(抽线.接口继承)的流之间的关系进行梳理 相关学习资料 http://baike.baidu.com/view/1007958. ...

  8. cookie与sessionID之间的关系实验

    上一篇介绍了cookie,这里来看看cookie与sessionID之间有什么关系. 一.编写测试用例代码 新建一个servlet如下: public class SessionServlet ext ...

  9. java IO选择流的原则及其与IO流相关类的关系

    1 按照用途进行分类 1.1 按照数据的来源(去向)分类 是文件:FileInputStream, FileOutputStream, FileReader, FileWriter 是byte[]:B ...

随机推荐

  1. Git 忽略特殊文件的功能

    有些时候,你必须把某些文件放到Git工作目录中.但是又不能提交他们,比如保存了数据库密码的配置文件等,每次git status都会 显示“untracked files”,如果有强迫症的你心里肯定不舒 ...

  2. 将数组写入plist文件

    data 加载plist [NSBundle mainBundle] [arr writeToURL:<#(NSURL *)#> atomically:<#(BOOL)#>]

  3. iOS开发之 用第三方类库实现ScrollView

    转自:http://www.cnblogs.com/qianLL/p/5369127.html   在github上面有很多的第三方类库,大大节约了大家的开发时间 下载地址:https://githu ...

  4. 小箭头的写法,z-index在ie7显示混乱问题

    一.jQuery 发布 1.9 正式版,最后支持 IE 6/7/8,2.0以上的版本都不支持这三个浏览器了. 二.小箭头的写法与旋转切换(一直以为这样的只以切图片,原来未必哦.) <style& ...

  5. Hibernate框架--对象的状态,缓存, 映射

    回顾Hibernate第二天: 1.  一对多与多对一 2. 多对多 3. inverse/cascade 4. 关联关系的维护 一对多: <set name="映射的集合属性&quo ...

  6. swift 手势之UIPanGestureRecognizer

  7. mipi 调试经验(转)

    以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点: 一.D-PHY 1.传输模式 LP(Low-Power) 模式:用于传输控制 ...

  8. drawableLayout的使用(转载讲的比较清晰的文章)

    创建drawbler的布局文件 初始化drawbler的列表 响应drawable列表点击事件 现在侧滑菜单使用很多,大都是通过SlidingMenu实现.现在也可以通过DrawerLayout 创建 ...

  9. VBS基础篇 - 循环语句(3) - For...Next

    VBS基础篇 - 循环语句(3) - For...Next   指定循环次数,使用计数器重复运行语句,语法结构如下: 1 2 3 4 5 For counter = start To end [Ste ...

  10. selenium高级用法

    http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp# WebDriver: Advanced Usage Explicit and Im ...