一.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页面中.
四.三种如何取得从 1970 年 1 月 1 日 0 时 0 分 0 秒到现在的毫秒数?
-
System.currentTimeMillis()。
-
new Date().getTime() 。
-
Calendar.getInstance().getTimeInMillis()。
五.三种获取java类字节码的方法
1.Class.class
2.object.getClass()
3.Class.forName()
六:
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行