【JavaWeb】(2)JSP内置对象
2015-06-28 10:32
691 查看
1. 简介
JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象。2. JSP九大内置对象
out、request、response、session、application是比较常用的,还有page、pageContext、exception和config对象。3. out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象。常用方法:
(1). void println():向客户端打印字符串
(2). void clear():清除缓冲区的内容,如果在flush之后调用会抛出异常,后面代码不会执行
(3). void clearBuffer():清除缓冲区的内容,如果在flush之后调用不会抛出异常,后面代码会继续执行
(4). void flush():将缓冲区内容输出到客户端
(5). int getBufferSize():返回缓冲区以字节数的大小,如不设缓冲区则为0
(6). int getRemaining():返回缓冲区剩余多少可用
(7). boolean isAutoFlush():返回缓冲区满时,是自动清空还是抛出异常
(8). void close():关闭输出流
4. request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出相应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。常用方法:
String getParameter(String name):返回name指定参数的参数值
String[] getParameterValues(String name):返回包含参数name的所有值的数组
void setAttribute(String, Object):存储次请求中的属性
Object getAttribute(String name):返回指定属性的属性值
String getContentType():得到请求体的MIME类型
String getProtocol():返回请求用的协议类型及版本号
String getServerName():返回接受请求的服务器主机名
int getServerPort():返回服务器接受此请求所用的端口号
String getCharacterEncoding():返回字符编码方式
void setCharacterEncoding():设置请求的字符编码方式
int getContentLength():返回请求体的长度(以字节数)
String getRemoteAddr():返回发送次请求的客户端IP地址
String getRealPath(String path):返回一虚拟路径的真实路径
String getContextPath():返回上下文路径
解决表单post提交中文乱码问题:
request.setCharacterEncoding("utf-8");
解决URL传参中文乱码问题:
修改tomcat目录下conf\server.xml中<connector>标签,添加 URIEncoding="utf-8"
5. response对象
response对象包含了响应客户端请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。常用方法:
String getCharacterEncoding():返回响应用的是何种字符编码
void setContentType(String type):设置响应的MIME类型
PrintWriter getWriter():返回可以向客户端输出字符的一个对象(注意比较:PrintWriter与内置out对象的区别)
sendRedirect(java.lang.String location):重新定向客户端的请求
注意:
response.getWriter()获取的PrintWriter的输出总是在内置out对象之前。内置out执行out.flush()输出全部缓冲区内容,这样就可以在后面的输出之前了。
请求转发与请求重定向区别:
请求重定向:
客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变。
请求转发:
服务器行为,request.getRequestDispatcher().forward(req, resp),是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。
6. session
session表示客户端与服务器的一次会话,Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间,session实际上是一个特定的时间概念。在服务器的内存中保存着不同用户的session。
从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。
当一个客户访问一个服务器时,可能会在服务器的几个页面直接切换,服务器应当通过某种办法知道这是同一个客户,就需要session对象。
session对象是HttpSession类的实例。
常用方法:
long getCreationTime():返回session创建时间
public String getId():返回session创建时JSP引擎为它设的唯一ID号(32位)
public Object setAttribute(String name, Object value):使用指定名称将对象绑定到此会话
public Object getAttribute(String name):返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null
String[] getValueNames():返回一个包含此session中所有可用属性的数组
int getMaxInactiveInterval():返回两次请求间隔多长时间此session被取消(单位:秒)
session的生命周期:
(1). 创建阶段
当客户端第一次访问某个JSP或者Servlet的时候,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求时,都会将此SessionId携带过去,服务端会对此SessionId进行校验。
(2). 活动阶段
某次会话当中通过超链接打开的新页面属于同一次会话。只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。除非背刺会话的所有页面都关闭后再重新访问某个JSP或者Servlet将会创建新的会话。
注意事项:原有会话还存在,只是这个旧的SessionId仍然存在于服务端,只不过再也没有客户端会携带它然后交予服务端校验。
(3). 销毁阶段
三种方式:调用了session.invalidate()方法、session过期(超时)、服务器重新启动。
Tomcat默认的session超时时间为30分钟。
设置session超时有两种方式:
(1). session.setMaxInactiveInterval(时间); // 单位是秒
(2). 在web.xml配置
<session-config> <session-timeout>10</session-timeout> </session-config>单位是分钟。
7. application对象
application对象实现了用户间数据的共享,可存放全局变量。application开始于服务器的启动,终止于服务器的关闭。
在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作。
在任何地方对application对象属性的操作,都将影响到其他用户对此的访问。
服务器的启动和关闭决定了application对象的生命
application对象是ServletContext类的实例。
常用方法:
public void setAttribute(String name, Object value):使用指定名称将对象绑定到此会话
public Object getAttribute(String name):返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null
Enumeration getAttributeNames():返回所有可用属性名的枚举
String getServerInfo():返回JSP(Servlet)引擎名及版本号
8. page对象
page对象就是指向当前JSP页面本身,有点像类中的this指针,它是java.lang.Object类的实例。常用方法:
class getClass():返回此类的Object的类
int hashCode():返回此Object的hash码
boolean equals(Object obj):判断此Object是否与制定的Object对象相等
void copy(Object obj):把Object拷贝到指定的Object对象中
Object clone():克隆此Object对象
String toString():把此Object对象转换成String类的对象
void notify():唤醒一个等待的线程
void notifyAll():唤醒所有等待的线程
void wait(int timeout):使一个线程处于等待直到timeout结束或被唤醒
void wait():使一个线程处于等待直到被唤醒
9. pageContext对象
pageContext对象提供了对JSP页面所有的对象及名字空间的访问pageContext对象可以访问到本页所在的session,也可以取本页面所在的application的某一属性值
pageContext对象相当于页面中所有功能的集大成者
pageContext对象的本类名也叫pageContext
常用方法:
JspWriter getOut():返回当前客户端响应被使用的JspWriter流(out)
HttpSession getSession():返回当前页面中的HttpSession对象(session)
Object getPage():返回当前页面的Object对象(page)
ServletRequest getRequest():返回当前页面的ServletRequest对象(request)
ServletResponse getResponse():返回当页面的ServletResponse对象(response)
void setAttribute(String name, Object
attribute):设置属性及属性值
Object getAttribute(String name, int
scope):在制定范围内取属性的值
int getAttributeScope(String name):返回某属性的作用范围
void forward(String relativeUrlPath):是当前页面重导到另一页面(地址栏不会变化)
void include(String relativeUrlPath):在当前位置包含另一文件
10. config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContet对象)。常用方法:
ServletContext getServletContext():返回含有服务器相关信息的ServletContext对象
String getInitParameter(String name):返回初始化参数的值
Enumeration getInitParameterNames():返回Servlet初始化所需所有参数的枚举
11. exception对象
exception对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。它实际上是java.lang.Throwable的对象。在需要抛异常的页面设置好errorPage的目标,跳转到的界面设置isErrorPage为true。常用方法:
String getMessage():返回描述异常的消息
String toString():返回关于异常的简短描述消息
void printStackTrace():显示异常及其栈轨迹
Throwable FillInStackTrace():重写异常的执行栈轨迹
相关文章推荐
- 深入入门正则表达式(java) - 匹配原理 - 2 - 回溯
- java 动态代理范例 InvocationHandler与Proxy
- 获取JDK动态代理/CGLIB代理对象代理的目标对象。
- jdk环境变量配置
- Java中this关键字的几种用法(转)
- Java -- 算法小结之希尔排序
- Spring整合Strut2小结
- 2015062805 - EffactiveJava笔记 - 第41条 慎用重载(1)
- 使用eclipse编译和管理live555源码
- jsp显示java后台的异常
- eclipse运行jsp程序错误---SEVERE: StandardServer.await: create[localhost:8005]
- Java内部类总结
- Eclipse配色方案插件
- JavaWeb工程中web.xml基本配置
- Java中的匿名内部类:由setOnClickListener说起
- Java基础---设计模式
- Java环境变量的配置问题与部分基础知识
- 深入java--与MySQL连接时的时间类问题以及Calendar的用法
- Eclipse配置maven环境笔记
- 2015062802 - EffactiveJava笔记 - 第40条 谨慎设计方法签名