JSP内置对象
JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象。
比如上面的九九乘法表中的out。
JSP九大内置对象:
out、request、response、session、application、Page、PageContext、exception、config
out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象。
常用的方法:
- void println() 向客户端打印字符串
- void flush() 将缓冲区内容输出到客户端
- void clear() 清除缓冲区内容,如果在flush之后调用抛出异常
- void chearBuffer() 清除缓冲区内容
- int getBufferSize() 返回缓冲区以字节数的大小,如果不设立缓冲区则为0
- int getRemaining() 返回缓冲区剩余大小
- boolean isAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常
- void close() 关闭输出流123456789<%out.println("<h2>两句诗</h2>");out.println("苟利国家生死以<br/>");out.println("岂因祸福避趋之<br/>");%><hr><br/>缓冲区大小:<%= out.getBufferSize() %><br/>缓冲区剩余大小:<%= out.getRemaining() %><br/>是否自动清除缓冲区大小:<%= out.isAutoFlush() %>
request对象
get和post的的区别
- get:以明文的方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不超过2KB。安全性较低但效率比post方式高。合适提交数量不大,但安全性不高的数据。比如:搜索、查询等功能。
- post: 将用户提交的信息封装在HTML的头部信息内。适合提交数据量较大,安全性高的用户信息。比如:注册、修改、上传等功能。
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效,常用方法如下:
- String getParameter(String name) 返回name指定的参数值
- String [] getParameterValues(String name) 返回包含参数name的所有值的数组
- void setAttribute(String, Object) 存储此请求中的属性
- Object getAttrubute(String name) 返回指定属性的属性值
- String getContentType() 返回请求体的MIME类型
- String getProtocol() 返回请求用的协议类型和版本号
- String getServerName() 返回接受请求的服务器主机名
下面是一个提交参数的页面
处理参数的请求的页面(request.jsp)
其他的request对象的用法
Response对象
response对象包含了响应客户请求的有关信息,但是在JSP中很少直接使用它,它是HttpServletResponse类的实例。response对象具有页面的作用域,即访问一个页面时,该页面的response对象只能对这次的访问有效,其它页面的response对象对象当前页面无效。常用方法如下:
- String getCharacterEncoding() 返回响应用的是何种字符编码
- void setContentType(String type) 设置响应的MIME类型
- PrintWriter getWriter() 返回可以向客户端输出字符的一个对象
- sendRedirect(java.lang.String location) 重定向客户端的请求
|
|
请求重定向和请求转发
请求重定向:客户端行为,response.sendRedirect(),本质上讲等同于两次请求,前一次的请求对象不会被保存,地址栏的URL地址会改变。
举个例子:A页面请求将数据提交到C页面,但是实际上A请求B, B在请求C,此时C不能接收到A的数据
请求转发:服务器行为,request.getRequestDispatcher().forword(request, response)是一次请求,转发会请求对象会保存,地址栏的URL地址不会改变。
Session对象
session概念:
在服务器的内存中保存着不同用户的session。
- session表示客户端与服务器的一次回话
- Web中的session指的是用户在浏览某个网站时,从进入网站到浏览关闭所经过的这段时间,也就是用户浏览网站所花费的时间
- session实际上是一个特定的时间概念
session对象的概念
sessioin对象是HttpSession类的实例。
- session对象在第一个JSP页面被装载时自动创建,完成会话期间管理。
- 从一个客户打开浏览器并连接到服务器开始,到客户端关闭浏览器离开这个服务器结束,称为一个会话。
- 当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象。
session对象常用方法如下:
- long getCreationTime() 返回session创建时间
- String getId() 返回session被创建时JSP引擎将它设为唯一ID号
- Object SetAttribute(String name, Object Value) 设置属性及其值绑定到此次会话
- Object getAttrubute(String name) 返回属性的值,找不到返回null
- String [] getValueNames() 返回一个包含此session中所有可能的属性数组
- int getMaxInactiveInterval() 返回session的生命周期(单位秒)
下面是session.jsp的使用页面
下面是跳转的session2.jsp
session的生命周期
创建阶段:当客户端第一次访问某个jsp或者Servlet时候,服务器会为当前会话创建一个SessionId,每当客户端向服务端发送请求时,都会将此Id携带过去,服务端会对此SessionId进行校验。
活动阶段:
- 某次会话当中通过超链接打开的新页面都属于同一次会话
- 只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一个项目资源属于同一次会话。
- 除非本次会话所有页面都关闭后再重新访问某个JSP或者Servlet将会创建新的会话。(原有会话还存在,旧的sessionId仍然存在于服务端,只不过再也没有客用户端会携带此Id进行访问)。
销毁阶段:有三种方式可以销毁session会话
- 调用了session.invalidate()方法
- session过期(设置的MaxInactiveInterval过期时间或者web.xml设置过期时间)
- 服务器重新启动
application对象
application对象的概念:
- application对象实现了用户间数据的共享,可存放全局变量
- application开始于服务器的启动,终止于服务器的关闭
- 在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作
- 在任何地方对appication对象属性的操作,都会影响到其他用户对其的访问
- 服务器的启动和关闭决定了application对象的生命周期
- application对象是ServletContext类的实例
application对象的常用方法:
- void setAttribute(String name, Object value)
- Object getAttribute(String name)
- Enumeration getAttributeNames() 返回所有可用属性的枚举
- String getServerInfo() 返回JSP引擎名字和版本号
|
|
如果我们在该项目的其他页面中,进行城市、属性和版本进行相同的查询工作,会得到一样的结果(除非服务器关闭)。
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()
- void notify() 唤醒一个等待的线程
- void notifyAll()
- void wait(int timeout) 使一个线程处于等待直到timeout结束或唤醒
- void wait() 使一个线程一直处于等待直到被唤醒
pageContext对象
概念:
- pageContext对象提供了对JSP页面内所有的对象及名字空间的访问
- pageContext对象可以访问本页所在的session,也可以取本页面所在的appication的某一个属性值
- 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, Object)
- Object getAttribute(Strring, int) 在指定范围内取属性的值
- int getAttributeScope(String) 返回某属性的作用范围
- void forward(String relativeUrlPath) 使当前页面重导到另一页面,浏览器的地址不会被改变
- void include(String relativeUrlPath) 在当前位置包含另一文件
Config对象
config对象是在一个servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化要用到的参数(通过属性名和属性值构成)以及服务器有关的信息(通过传递一个ServletContext对象)。
常用的方法如下:
- ServletContext getServletContext() 返回含有服务器相关信息的ServletContext对象
- String getInitParameter(String name) 返回初始化参数的值
- Enumeration getInitParameterNames() 返回Servlet初始化所需所有参数的枚举
Exception对象
exception对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生了这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象。
常用方法如下:
- String getMessage() 返回描述异常的消息
- String toString() 返回关于异常的简短描述信息
- void printStackTrace() 显示异常及其栈轨迹
- Throwable FillStackTrace() 重写异常的执行栈轨迹
|
|
下面是exception.jsp