JSP 三、JSP内置对象(上)

  1. 内置对象简介

  2. 四种作用域范围

  3. out

  4. request/respone

  5. session

  6. application

  7. 其它内置对象

3-1 JSP内置对象简介

JSP九大内置对象:

out,request,response,session,application(五大常用对象)

Page,pageContext,exception.config(四个不太常用对象)

3-3 web程序的请求与响应模式

用户发送请求(request),服务器给用户响应(response)

3-4 out对象

什么是缓冲区

1、缓冲区:Buffer,所谓缓冲区就是内存的一块区域,用来保存临时数据

2、IO输出最原始的就是一个字节一个字节输出,效率很低。缓冲区可以先将多个字节读出来,再一次性的输出,提高效率

out对象

out对象是JspWriter类的实例,是向客户端(这里指浏览器)输出内容的常用对象。

常用方法:

  • void println()向客户端打印字符
  • void clear()清除缓冲区的内容。如果在flush之后调用,会抛出异常
  • void clearBuffer() 也是清除缓冲区内容,但在flush之后不会抛出异常
  • void flush()将缓冲区内容输出到客户端
  • int getBufferSize()返回缓冲区的大小(字节数),如不设缓冲区则为0
  • int getRemaining()返回缓冲区还剩余多少可用
  • boolean isAutoFlush()返回缓冲区满时,是否自动清空缓冲区
  • void close()关闭输出流

3-6 get和post提交方式的区别

表单有两种提交方式:get与post。定义在<form action="dologin.jsp" name="loginForm" method="提交方式***"></form> 动作/名称等顺序无所谓。

1.get:以【明文】方式,通过URL提交数据,数据在URL中【可以看到】。提交数据最多不超过【2KB】。安全性较低,但效率比post方式高。适合提交数据量不大,且安全要求不高的数据:比如:搜索、查询等功能。

2.post:将用户提交的信息封装在HTML HEADER内。适合提交数据量大,安全性高的用户信息。如:注册、修改、上传等功能。

3-7 request对象

内容:

客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。 它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。

方法:

  • object getAttribute(String name) 返回指定属性的属性值
  • Enumeration getAttributeNames() 返回所有可用属性名的枚举
  • String getCharacterEncoding() 返回字符编码方式
  • int getContentLength() 返回请求体的长度(以字节数)
  • String getContentType() 得到请求体的MIME类型
  • ServletInputStream getInputStream() 得到请求体中一行的二进制流
  • String getParameter(String name) 返回name指定参数的参数值
  • Enumeration getParameterNames() 返回可用参数名的枚举
  • String[] getParameterValues(String name) 返回包含参数name的所有值的数组
  • String getProtocol() 返回请求用的协议类型及版本号
  • String getScheme() 返回请求用的计划名,如:http.https及ftp等
  • String getServerName() 返回接受请求的服务器主机名
  • int getServerPort() 返回服务器接受此请求所用的端口号
  • BufferedReader getReader() 返回解码过了的请求体
  • String getRemoteAddr() 返回发送此请求的客户端IP地址

特别注意:在通过url传递参数时会出现中文乱码问题,这时request.setCharacterEncoding("utf-8")是不能解决的,需要修改配置文件,在Tomcat目录的confi下的web.xml的<connect ></connect>标签内追加URIEncoding="utf-8",然后重启服务器生效

3-10 respone对象

设置响应的MIMI类型 response.setContentType("text/html;charset=utf-8")

向客户端输出字符串对象, 而且先于jspWriter,使用out.flush()来避免 RrintWriter response.getWriter()

请求重定向 response.sendRedirect("index.jsp");

3-11 请求重定向与请求转发的区别

请求重定向:服务端responce.sendRedirect("xx.jsp")重定向。【客户端行为】:即客户端会访问两次,第一次访问后会立即跳转到第二个重定向页面上,【从本质上讲等于两次请求】,而前一次的请求封装的request对象不会保存,地址栏的URL地址会改变。

请求转发:服务端request.getRequestDispatcher("xx.jsp").forward(request,response)请求转发。forward(request,response)用于保存内置对象request和response。【服务器行为】:服务器会代替客户端去访问转发页面,【从本质是一次请求】,转发后请求对象会保存,地址栏的URL地址不会改变。

4-1 什么是session

1、session表示客户端与服务器的一次会话

2、Web中的session指:用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览网站所花费的时间。

3、在服务器的内存中保存着不同用户的session,一个用户对应一个session

4、从上述定义中可以看到,session实际是一个【特定的时间概念】 

4-2 session对象

  1. ession是JSP的一个内置对象,是HttpSession类的实例。
  2. 从客户打开浏览器并连接到服务器开始,到客户关闭浏览器窗口断开与服务器的连接,这一过程成为一个会话。
  3. 当客户在同一个网站的不同页面之间进行切换并访问时,服务器是通过session来判断这些请求是否来自同一个客户。
  4. session一般有时间限制,长时间不操作可能会导致session失效。session失效后原session中保存的属性值会全部丢失。
  5. setMaxInactiveInterval(int i) 该方法可直接设定session的生存时间,超过该时间session会重新创建。(单位:秒)

session对象的常用方法有:

  • long getCreationTime() : 返回session的创建时间;
  • public String getId() : 返回session的唯一ID号(该ID在session生成时,由JSP引擎创建)
  • public Object setAttribute(String name,Object value) : 按照键值对的方式在该session会话中保存一个属性(该属性是一个对象类型)
  • public Object getAttribute(String name) : 返回指定名称的属性的值(如果该名称的属性不存在,则返回null)
  • String[] getValueNames() : 返回一个(包含在此session中所有可用属性)的数组。
  • int getMaxInactiveInterval() : 返回一个时间,该时间表示当前session间隔多少时间之后会失效(单位:秒)。

4-3 session的生命周期

1.创建:

当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求时,都会将此SessionId携带过去,服务端会对此SessionId进行校验

2.活动:

①某次会话当中通过超链接打开的新页面属于同一次会话

②只要当前会话页面没有全部关闭,重新打开的浏览器窗口访问同一个项目资源时属于同一次会话

③除非本次会话的所有页面都关闭后在重新访问某个JSP或者servlet将会创建新的会话

注意:注意原有会话还存在,只是这个旧的Session仍然存在于服务端,只不过再也没有客户端会携带它然后交予服务端校验

3.销毁:三种方式

①调用了session.invalidate()方法

②Session过期(超时)

③服务器重新启动 

设置session超时的两种方式: tomcat默认session超时时间为30分钟

1:session.setMaxInactiveInterval(时间);//单位是秒

2:在web.xml配置 <session-config> <session-timeout> 10 <session-timeout> <session-config> //单位是分钟

4-6 application对象

application介绍

1、实现了用户间数据的共享,可存放全局变量。(类似静态对象)

2、开始于服务器启动,终止于服务器的关闭(生命周期)

3、在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作

4、在任何地方对application对象属性进行操作,都将影响到其他用户对此的访问

5、application对象是ServletContext类的实例

常用方法:

  • public void setAttribute(String name,Object value)使用指定名称将对象绑定到此会话。
  • public Object getAttribute(String name)返回于此会话中指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null。
  • Enumeration getAttributeName()返回所有可用属性名的枚举。
  • String getServerInfo()返回jsp(servlet)引擎名及版本号。

4-8 page对象

page对象:

是指指向当前JSP页面本身,有点像类中的this指针,它是java.long.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()使一个线程处于等待直到被唤醒。

 4-9 pageContext对象和config对象

pageContext对象

  1. ageContext对象提供了对jsp页面内所有的对象及名字空间的访问。
  2. pageContext对象可以访问到本页所有的Session,也可以区本页面所在的application的某一属性值。
  3. pageContext对象相当于页面中所有功能的集大成者。
  4. 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 getAttribute(String name)返回某属性的作用范围。
  • void forward(String relativeURLPath)是当前页重导到另一页面。
  • void include(String relativeURLPath)在当前位置包含另一文件。

config对象 常用方法:

  • ServletContext getServletContext()返回含有服务器相关信息的ServletContext对象
  • String getInitParameter(String name)返回初始化参数的值
  • Enumeration getInitParameterNames()返回Servlet初始化所需所有参数的枚举

4-10 exception对象

1.需要捕获异常的页面,在page指令中写属性errorpage=“出错跳转到的页面”

2.在跳转到的错误处理页面page指令中输入属性isErrorPage=“true”

JSP内置对象 - Exception

  1. Exception是java.lang.Throwable类的实例
  2. 当一个页面运行发生了异常,就产生了该Exception对象。
  3. 若一个JSP页面要使用该Exception对象,需要将isErrorPage的值设为true

Exception对象常用方法:

  • String getMessage() 返回描述异常的信息
  • String toString() 返回关于异常的简短描述信息
  • void printStackTrace() 显示异常及其栈轨迹
  • Throwable FillInStackTrace() 重写异常的执行栈轨迹

猜你喜欢

转载自blog.csdn.net/qq_40638497/article/details/81323733
今日推荐