三、JSP内置对象:
1、认识JSP内置对象:
内置对象就是指在JSP页面中内置的不需要定义就可以在网页中直接使用的对象。
内置对象有些能够存储参数,有些能够提供输出,还有些提供其他的功能。
1.1.、内置对象的特点:
(1)、内置对象是直接载入的,因此他不需要直接实例化;
(2)、内置对象是通过Web容器来实现和管理的;
(3)、在所有的JSP页面中,直接调用内置对象都是合法的。
1.2、JSP规范中定义的9中内置对象:
(1)、out对象:负责管理对客户端的输出;
(2)request对象:负责得到客户端的请求信息;
(3)、response对象:负责向客户端发出响应;
(4)、session对象:负责保存同一客户端一次对话过程中的一些信息;
(5)、application对象:表示整个应用的环境的信息;
(6)、exception对象:表示页面上发生的异常,可以通过它获得页面异常信息;
(7)、page对象:表示的是当前JSP页面本身,就像JAVA类定义中的this一样;
(8)、pageContext对象:表示的是此JSP的上下文
(9)、config对象:表示此JSP的ServletConfig
2、out对象:
out对象,对应的是javax.servlet.jsp.JspWriter,它的作用如下:
用来向客户端输出各种数据类型的内容;
对应用服务器上的输出缓冲区进行管理
2.1、利用out输出主要的两种方法:
(1)、void print()
(2)、void println()
2.2、out对象一些常用的与管理缓冲区有关的函数:
(1)、void close()
(2)、void clearBuffer()
(3)、void clear()
(4)、int getRemaining()
(5)、void flush()
(6)、int getBufferSiae()
3、request对象;
request代表了客户端的请求信息,主要用来获取客户端的参数和流。它对应的类型是:javax.servlet.http.HttpServletRequest。
3.1、request的一个主要用途就是它能够获取客户端的基本信息,主要方法如下:
(1)、String getMethod():得到提交方式;
(2)、String getRequestURL():得到请求的URL地址;
(3)、String getProtocol():得到协议名称;
(4)、String getServletPath():获得客户端请求服务器文件的路径;
(5)、String getQueryString():得到URL的查询部分;
(6)、String getServerName():得到服务器的名称;
(7)、String getServerPort():得到服务器端口号
(8)、String getRemoteAddr():得到客户端的IP地址
3.2、request对象获取客户端的参数的两种常用方法:
(1)、String getParameter(String name)
(2)、String[] getParameterValues(String name)
4、response对象:
response对应的类(接口)是:javax.servlet.httpHttpServletResponse.
4.1、利用response对象进行重定向:
重定向,就是跳转到另一个页面。可以利用response对象进行重定向:
response.sendRedirect(目标页面路径);
重定向的两种方法:
(1)、response.sendRedirect(目标页面路径);
(2)、<jsp:forword page=“目标页面路径”> </jsp:forword>
4.2、利用response设置HTTP头:
HTTP头一般用来设置网页的基本属性,可以通过response的setHeader()方法来进行设置,代码如下:
<%
response.setHeader(“Pragma”, ”no-cache”);
response.setHeader(“Cache-Control”, ”no-cache”);
response.setHeader(“Expiers”,0);
%>
以上都是表示客户端缓存中不保存页面的拷贝。
response.setHeader(“Refresh”, ”5”);
表示客户端浏览器每隔5秒定期刷新一次。
5、Cookie操作:
Cookie是一个小的文本数据,由服务器生成,发送给客户端浏览器,客户端浏览器如果设置为启用Cookie,则会将这个小文本数据保存到某个目录下的文本文件内。下次登录同一网站,客户端浏览器,则会自动将Cookie读入之后,传给服务器端。一般情况下,Cookie中的值是以key-value的形式进行表达的。
5.1、写Cookie时,主要用到以下方法:
(1)、response.addCookie(Cookie c):将Cookie写入客户端
(2)、Cookie.setMaxAge(int second):设置Cookie的存活时间
5.2、从客户端获取Cookie内容,主要通过以下方法:
Cookie[] request.getCookies():读取客户端传过来的Cookie,以数组形式返回,
读取数组之后,一般进行遍历。
6、利用Session开发购物车:
1、将内容放入购物车:
在session中,有一个函数:void session.setAttribute(String name, Object obj),
通过该函数,可以将一个函数放入购物车。
在该函数中,参数1:name为对象起一个属性(Attribute)的名字(标记);
参数2:obj就是对象本身
注意:
(1)、如果两次调用setAttribute(String name,Object obj),并且name相同,那么后面放进去的内容将会覆盖以前放进去的内容。
(2)、setAttribute(String name,Object obj)的第二个参数是Object类型,既可以放进入session的不仅仅是一些简单的字符串,还可以是Object。集合、数据结构对象都可以放入session,这大大提升了session的功能。
2、读取购物车中的内容:
Object session.getAttribute(String neme)
7、session的其它API:
7.1、session的其它操作:‘
(1)、移除session中的内容:
void session.removeAttribute(String name)
(2)、移除session中的全部内容:
void session.invalidate()
(3)、预防session内容丢失:
只有第一次运行时才new一个ArrayList,其他时候使用session中的ArrayList。
7.2、sessionId:
对于每一个session,服务器端都有一个sessionId来标识它。
String session.getID(): 得到当前session在服务器端的ID。
实际上,在第一次访问时,服务器端就给session分配一个sessionID,并且让客户端记住这个sessionID,客户端访问下一个页面时,又将sessionId传送给服务器端,服务器端根据这个sessionId来查找前一个页面的session对象。
注意:在不同用户的机器上,显示的结果可能不一样,
因为sessionId的分配是随机的。
7.3、利用session保存登录信息:
8、application对象
对于一个Web容器来说,所有的用户都共同使用一个application对象,服务器启动后,就会自动创建application对象,这个对象会一直保存,知道服务器关闭为止。
application对象的主要API:
(1)、将内容放入application:
Void application.setAttribute(String name, Object obj)
(2)、读取application中的内容:
Object application.getAttribuite(String name)
(3)、将内容从application中移除:
Void application.removeAttribute(String name)