【JavaWeb】(2)JSP内置对象

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():重写异常的执行栈轨迹


发布了80 篇原创文章 · 获赞 0 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章