JspWriter与PrintWriter的关系
一.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"
转载于:https://www.cnblogs.com/huangpeng1990/p/4364370.html
JspWriter与PrintWriter的关系相关推荐
- JspWriter 与 printwriter区别
JSP九个隐含对象 JspWriter out JspWriter是抽象类而PrintWriter不是,也就是说你可以通过new操作来直接新建一个PrintWriter的对象而JspWriter不行, ...
- JspWriter与PrintWriter(转)
1都继承自java.io.writer类 JspWriter在Jsp页面上直接用out对象输出,也可以直接用pageContex.getOut()得到out对象 PrintWriter必须通过resp ...
- javaweb笔记(方立勋)
1 Day01 02-eclipse使用和程序的断点调试 1.1 Eclipse的使用 工作空间目录是纯英文不带空格的路径 在eclipse下Java程序的编写和运行,及java运行环境的配置. 新建 ...
- JSP-java服务器端页面【学习笔记】
文章目录 1.JSP简介 1.1为什么学习jsp? 1.2Jsp全称 1.3Jsp只能运行在服务器中,不能直接使用浏览器打开 1.4Jsp本质是一个Servlet 1.5jsp能够以HTML页面的方式 ...
- ServletJsp笔记
BS项目 一.WEB项目的演变: 1.发展规律: 由单击向网络发展:由CS向BS发展 2.CS和BS的区别 1)CS(Client Server): 客户端服务端程序, 客户端需要单独开发,用户需要 ...
- WEB阶段5:JSP、EL、JSTL、MVC软件结构
JSP.EL.JSTL.MVC软件结构 回顾 Cookie对象 与Cookie操作相关的方法 Cookie类的方法 作用 Cookie(String name,String value) 构造方法,通 ...
- 12月23日——培训第29天
今天是田老师讲课,我猜大概很多人都很想念他吧-- 其实大概很多人和我的想法类似:张老师的教学不适合初学者,更适合有一定基础且对知识点有很强把握的人,相对初学 来说,还是田老师的风格较容易让人接受一些. ...
- jsp静态化和伪静态化转载
2019独角兽企业重金招聘Python工程师标准>>> 首先说说为什么要静态化. 对于现在的Web Application来说,动态页面是占有绝对高的地位的,正因为有了动态化,才有了 ...
- JSP的隐含对象/隐藏对象/内置对象介绍
文章目录 out JspWriter 和 PrintWriter 的区别 request response session application exception config pageConte ...
最新文章
- java 图片灰度化
- NR 5G AMF重定向的注册流程
- FIlterInputStream和FilterOutputStream
- thinkphp-条件判断-范围判断-NOTBETWEEN
- 服务器系统防火墙例外,Windows Server 2012设置端口例外、防火墙设置方法
- 关情纸尾-----UIKit基础--QQ自定义布心布局
- SQLServer附加数据库提示“版本为661,无法打开,支持655版本……”
- 它是世界上最轻的固体!1000℃下不会熔化,上过火星,还能进你家......
- input 框 去掉下面的提示文字、提示选项
- 应用机器学习(九):主成分分析
- Python 支付宝转账到银行卡二维码制作步骤分享
- 如何快速实现自定义sql分页?若不会,我便手把手教你【详细】
- ssl登录服务器未响应是什么意思,工行的网上银行在确认转账时网页总是未响应...
- 网工浓缩笔记以及考点(第七章 网络安全)
- 房间内人群疏散的python简单模拟
- 中国象棋马走日 — 递归
- 车厢调度(信息学奥赛一本通 - T1357)
- 解决java报错class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.Comparable
- Apple M1 上安装tensorflow开发环境
- RSA非对称加密解密实现
热门文章
- c语言 10以内加法,求助 给小学生出题,自己选加减乘除 做10题 10以内的数 然后统计分...
- dowhlie java_Java while和do whlie语句
- ospf 环回口的路由条目_OSPF的LSA类型
- Linux下找出吃内存的方法总结
- 如何提升微服务的幸福感?
- 申通的云原生实践之路:如何实现应用基于容器的微服务改造?
- indexof方法_[ 翻译 ] ES6中数组去重的三种方法
- linux服务器都有注册表吗,NT服务器的注册表结构介绍
- Clover 驱动文件夹_四叶草Clover文件夹结构功能+快捷键——墨涩网
- php中const和define,PHP中const和define的区别是什么