在jsp中,因为对部分Java对象做了声明,因此即使不重新声明这些对象时,也可以调用这些对象,这些对象就是jsp中提供的内置对象。下面将重点介绍request对象、response对象、application对象、out对象、session对象。
一、jsp的内置对象:
1、application:该对象代表应用程序上下文,它允许jsp页面与包括在同一应用程序中的任何web组件共享信息。
2、config:该对象允许将初始化数据传递给一个jsp页面。
3、exception:该对象中含有只能由指定的jsp“错误处理页面”访问的异常数据。
4、out:该对象提供对输出流的访问。
5、page:该对象代表jsp页面对应的servlet类实例。
6、pagecontext:该对象是jsp页面本身的上下文,它提供了唯一一组方法来管理具有不同作用域的属性,这些API在实现jsp自定义标签处理程序时非常有用。
7、request:该对象提供对http请求数据的访问,同时还提供用于加入特定请求数据的上下文。
8、response:该对象允许直接访问httpservletresponse对象,可用来向客户端输入数据。
9、session:该对象可用来保存在服务器与一个客户端之间需要保存的数据,当客户端关闭网站的所有页面时,session变量会自动消失。
二、request对象:request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过html表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取数据。request的各种方法主要用来吹客户端浏览器提交的请求中的各项参数和选项。
1、访问请求参数:
1-1 request.getParameter():可以用来获取用户提交的数据。例如“String userName=request.getParameter("name");”参数name与html标记name属性相对应,如果参数值不存在,则返回一个null值,该方法的返回值为String类型。
1-2 request.setCharacterEncoding("gb2312"):可用来设置编码格式
2、在作用域中管理属性:
2-1 request.setAttribute("key","object"):可以用来设置数据咋request范围内存取。参数key是键,为String类型。在转发后的页面取数据时,就通过这个键来获取数据。参数object是键值,为Object类型,它代表需要保存在request范围内的数据。
3、获取Cookie:Cookie是一小段文本信息,伴随着用户请求和页面在web服务器和浏览器之间传递。
3-1 request.getCookies():可以用来获取cookie中的数据。返回的是cookie数组。
3-2 request.addCookie()实现添加新cookie数据。
4、获取客户信息:
4-1 getHeader(String name):获得http定义的文件头信息。
4-2 getHeaders(String name):返回指定名字的request Header的名字,其结果是一个枚举的实例。
4-3 getHeadersNames():返回所有request Header的名字,其结果是一个枚举的实例。
4-4 getMethod():获得客户端向服务器端传送数据的方法,如get,post,header,trace等。
4-5 getProtocol():获得客户端向服务器端传送数据所依据的协议名称。
4-6 getRequestURI():获得发出请求字符串的客户端地址。
4-7 getRealPath():获得当前请求文件的绝对路径。
4-8 getRemoteAddr():获取客户端的IP地址。
4-9 getRemoteHost():获得客户端的机器名称。
4-10 getServerName():获得服务器的名字。
4-11 getServerPath():获得客户端所请求的脚本文件的文件路径。
4-12 getServerPort():获得服务器的端口号。
5、访问安全信息:
5-1 request.isSecure():返回布尔类型的值,它用于确定这个请求是否使用了一个安全协议,如http
5-2 request.isRequestedSessionIdFromCookie():返回布尔类型的值,表示会话是否使用了也给Cookie来管理会话的ID
5-3 request.isRequestedSessionFromURL():返回布尔类型的值,表示会话是是否使用了一个Cookie来管理会话ID
5-4 request.isRequestedSessionIdFromVaild():检查请求的会话ID是否合法。
6、访问国际化信息:
6-1 request.getLocale():获得java.util.Local类型的对象,其中封装了一个国家和一种国家所使用的语言。
6-2 request.getLocales():获得多个java.util.Local类型的对象,其中封装了一个国家和一种国家所使用的语言。
三、response对象:response对象和request对象相对应,用于响应客户请求,向客户端输出信息。response对象是javax.servlet.http.httpServletResponse接口类的对象,它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据文件,甚至是文件。
1、重定向网页:
1-1 response.sendRedirect(String location):将客户请求重定向到一个不同的页面。使用指定的重定向位置URL向客户发送重定向响应,可以使用相对URL。
1-2 response.sendError(int number):使用指定的状态码向客户发送错误响应。
1-3 response.sendError(int number,String msg):使用指定的状态码和描述性消息向客户发送错误响应。
2、设置http响应报头:
2-1 setDateHeader(String name,long date):使用给定的名称和日期值设置响应报头,如果指定的名称已经设置,则新值会覆盖旧值。
2-2 setHeader(String name,String value):使用给定的名称和值设置一个响应报头,如果指定的名称已经设置,则新值会覆盖旧值。
2-3 setHeader(Strign name,int value):使用给定的名称和整数值设置一个响应报头,如果指定的名称已经设置,则新值会覆盖旧值。
2-4 addHeader(String name,long date):使用给定的名称和值设置一个响应报头。
2-5 addDateHeader(String name,long date):使用给定的名称和日期值设置一个响应报头。
2-6 containHeader(String name):返回一个布尔值,他表示是否设置了以命名的响应报头。
2-7 addIntHeader(String name,int value):使用给定的名称和整数值设置一个响应报头。
2-8 setContentType(int len):为响应设置内容类型,其参数值可以为text/html,text/plain,application/x_msexel或applicationmsword
2-9 setContentLength(int len):为响应设置内容长度。
2-10 setLocale(java.util.Locale loc):为响应设置地区信息。
附:通过设置http头可实现禁用缓存功能。例如:
<%response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);%>
3、缓冲区配置:
3-1 response.flushBuffer():强制把缓冲区中的内容发送给客户
3-2 response.getBufferSize():返回响应所使用的实际缓冲区大小,如果没使用缓冲区,则该方法返回0
3-3 response.setBufferSize(int size):为响应的主体设置首选的缓冲区大小
3-4 response.isCommitted():返回一个boolean,表示响应是否已经提交;提交的响应已经写入状态码和报头。
3-5 response.reset():清除缓冲区存在的任何数据,同时清除状态码和报头。
四、session对象:http是无状态协议,当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就被关闭了,此时服务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有了以前的连接信息,此时将不能判断这一次连接和以前的连接是否属于同一客户。为了弥补这一缺点,jsp提供了session对象,这样服务器和客户端之间的连接就会一直保持下去,但是在一定时间内(系统默认是30min),如果客户端不向服务器发出应答请求,session对象就会自动消失。不过在编写程序时,可以修改这个时间限定值,使session对象在特定时间内保存信息。保存的信息可以是与客户端有关的,也可以是一般信息,可以根据需要设定相应的内容。
1、创建及获取客户的会话:
1-1 session.setAttribute(String name,String value):可以设置指定名称的属性值,并将其存储在session对象中。
1-2 session.getAttribute(String name):用于获取与指定名字name相关联的属性。
2、从会话中移除指定的对象:
2-1 session.removeAttribute(String name):将指定名称的对象移除,参数name为session对象的属性名,代表要移除的对象名。
3、销毁session:
3-1 session.invalidate():将会话中的全部内容删除。
4、会话超时的管理:
4-1 getLastAccessedTime():返回客户端最后一次发送与这个会话相关联的请求时间。
4-2 getMaxInactiveInterval():一秒为单位返回一个会话内两个请求的最大时间间隔,servlet容器在客户端访问期间保存这个会话处于打开状态。
4-3 setMaxInactiveInterval(int interval):一秒为单位指定在服务器小程序容器使该会话无效之前的客户请求之间的最长时间,也就是超时时间。
五、application对象:用于保存所有应用程序中的公有数据,服务器启动并且自动创建application对象后,只要没有关闭服务器,application对象将一直存在,所有用户可以共享application对象。application对象与session对象有所区别,session对象和用户会话相关,不同用户的session是完全不同的对象,而用户的application对象都是相同的对象,即共享这个内置的application对象。
1、访问应用程序初始化参数:
1-1 getInitParameter(String name):返回一个已命名的初始化参数的值。
1-2 getInitParameterNames():返回所有已定义的应用程序初始化参数名称的枚举。
2、管理应用程序环境属性:
2-1 removeAttribute(String name):从servletcontext的对象中去掉指定名称的属性。
2-2 setAttribute(String name,Object object):使用指定名称和指定对象在servletcontext的对象中进行关联。
2-3 getAttribute(String name):从servletcontext的对象中获取一个指定对象。
2-4 getAttributeNames():返回存储在servletcontext对象中属性名称的枚举类型。
六、out对象:用来向客户端输出各种数据类型的内容,并且管理应用服务器上的输出缓冲区,缓冲区默认值一般是8KB,可以通过页面指令page来改变默认值。在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。out对象被封装为javax.servlet.jsp.JspWriter类的对象,在实际应用上out对象会通过jsp容器变换为java.io.PrintWriter类的对象。
1、管理响应缓冲:
1-1 clear():清空缓冲区
1-2 clearBuffer():清空当前区的内容
1-3 close():先刷新流,然后关闭流
1-4 flush():刷新流
1-5 getBufferSize():以字节为单位返回缓冲区的大小
1-6 getRemaining():返回缓冲区中没有使用的字符的数量
1-7 isAutoFlush():返回布尔值,自动刷新还是在缓冲区溢出时抛出IOException异常。
2、向客户端输出数据:
2-1 out.println(String value):输出数据
七、其他内置对象:
1、获取会话范围的pageContent对象:
1-1 forward(java.lang.String relativeUtlpath):把页面转发到另一个页面或者servlet组件上。
1-2 getAttribute(java.lang.String name[,int scope]):scope参数是可选的,该方法用来检索一个特定的已经命名的对象的范围,并且还可以通过调用getAttributeNameInScope()方法,检索对某个特定范围的每个属性String字符串名称枚举。
1-3 getException():返回当前的Exception对象
1-4 getRequest():返回当前的request对象
1-5 getResponse():返回当前的response对象
1-6 getServeletConfig():返回当前页面的servletconfig对象
1-7 invalidate():返回servletcontext对象,全部销毁
1-8 setAttribute():设置默认页面范围或特定对象范围之中的已命名对象。
1-9 removeAttribute():删除默认页面范围或特定对象范围之中的已命名对象。
2、读取web.xml配置信息的config对象
2-1 getServletContext():返回执行者的servlet上下文
2-2 getServletName():返回servlet的名字
2-3 getInitParameter():返回名字为name的初始参数的值
2-4 getInitParameterNames():返回这个jsp的所有的初始参数的名字
3、应答或请求的page对象:
3-1 getClass():返回当前object的类
3-2 hashCode():返回此object的哈希代码
3-3 toString():将此object类转换成字符串
3-4 equals(Object o):比较此对象和指定的对象是否相等
3-5 copy(Object o):把此对象赋值到指定的对象中去
3-6 clone():对此对象进行克隆
4、获取异常信息的exception对象:
4-1 getManage():该方法返回异常信息字符串
4-2 getLocalizedMessage():该方法返回本地化语言的异常错误
4-3 printStackTrace():显示异常的栈跟踪轨迹
4-4 toString():返回关于一场错误的简单信息描述
4-5 fillInStackTrace():重写异常错误的栈执行轨迹