JSP内置对象
内置对象 -》 JSP页面内不需要定义就可以直接使用的对象
内置对象特点
- 自动载入,
- 通过Web容器实现和管理
- 所有JSP页面,都可以直接调用内置对象
8种内置对象
out -》 管理对客户端输出
request -》 得到客户端请求信息
response -》 向客户端发送响应
session -》 保存同一客户端一次会话过程一些信息
application -》 表示整个应用的环境信息
exception -》 页面发生异常,获得页面异常信息
page -》 当你去哪JSP页面本身,和Java中this一样
pageContext -》 此JSP上下文
config -》 此JSP的ServletConfig
out对象
用来向客户端输出各种数据类型内容
对应用服务器输出缓冲区进行管理
常见方法
out.print()或out.println()通过浏览器看代码换行,页面内容不换行
out.close()关闭输出流,强制终止页面剩余部分输出
out.clearBuffer() 清除缓冲区数据,把数据写到客户端
out.clear() 清楚缓冲区数据,但不把数据写到客户端
out.getRemaining() 获取缓冲区没有被占用空间大小,返回int类型
out.flush() 输出缓冲区数据,之后再清除数据
out.getBufferSize() 获取缓冲区大小
out管理缓冲区较少
request对象
代表客户端请求信息
主要获取客户端参数和流
常用方法(返回值全是String类型)
request.getMethod() 获得提交方式
request.gerRequestURI() 获得请求URL地址
URI -》 Uniform Resource Identifier
被定义为web上每一种可用的资源的唯一标识,如HTML文档、图像、视频片段等。
URL -》 Uniform Resource Locator
视为URI子集,标识资源,还提供一种通过描述资源的主要访问机制来定位资源的方法
URL是一个完整的链接,它不仅提供了定位资源的位置信息,还包含了访问该资源所需的方法和协议。
URI只标识了资源本身,而不包含任何关于如何访问该资源的信息。
request.getProtocol() 获取协议名称
request.gerServletPath() 获取客户端请求服务器文件的路径
request.getQueryString() 获取URL的查询部分(在get请求下)
request.getServerName() 获取服务器名称
request.getServerPort() 获取服务器端口号
request.getRemoteAddr() 获取客户端IP地址
获取客户端参数方法(返回String类型)
request.getParameter(name)
request.getParameterValues(name)
response对象
response客户端的响应,request客户端的请求
转发原理
重定向原理
执行转发时,服务器直接将新的URL中的资源返回给浏览器,转发时地址(URL)不变
执行重定向时,浏览器会显示新的重定向地址,即地址栏中的URL会发生变化
执行转发时,目标页面能够共享request域数据
执行重定向,不能共享request域数据
执行转发,只能在同一个Web应用程序内的资源间转发
执行重定向,还可以重定向到其他站点资源(例如baidu.com)
常用方法
response.sendRedirect(“目标URL”) 重定向
<jsp:forward page=”目标URL”> </jsp:forward> 转发
以下三个表示浏览器不保存页面副本
response.setHeader(“Pragma”,”No-cache”)
response.setHeader(“Cache-Control”,”no-cache”)
response.setDateHeader(“Expirex”,”0”)
response.setHeader(“Refresh”,”5”) 浏览器每隔5秒刷新一次
Cookie对象
导入javax.servlet.http.Cookie和java.net.URLDecoder这两个包。
HTTP是无状态协议,页面间传递必须通过服务器(URL传值、隐藏表单)
这里有另一种方法——Cookie
Cookie是小的文本数据,服务器端生成,发送给客户端
若浏览器启用Cookie,则该文本文件会保存在某个目录下
再次访问网页时,浏览器会读取Cookie传送给服务器
服务器-》发送cookie给浏览器
浏览器à保存cookie文件
浏览器-》发送cookie给服务器
Cookie中以key-value形式表达
常用方法
response.addCookie(Cookie C) 将Cookie写入客户端
Cookie.setMaxAge(int second) 设置cookie存活时间,秒
request.getCookies() 读取客户端传递的Cookie,返回值类型Cookie[ ]
将Cookie写入客户端
<%
int num=12;
Cookie cookie = new Cookie("number",num);
cookie.setMaxAge(600);
response.addCookie(cookie);
%>
客户端读取Cookie
<%
String str=null;
Cookie[] cookies = request.getCookies();
for(int i=0;i<cookies.length;i++){
if(cookies[i].getName.equals("number")){
str=cookies[i].getValue();
break;
}
}
%>
session对象
跨页面保持数据
访问页面时,服务器给每一个用户分配一个session对象
常用方法
session.setAttribute(String name,Object obj) 前面是名字,后面是存入的对象,无返回值
若两次存入同一个名字,则会覆盖
session.getAttribute(“name”) 通过名字获取对象,返回Object类型,必须强制类型转换
session.removeAttribute(“name”) 移除内容
session.invalidate() 移除所有内容
session.getId() 获取当前session在服务器中ID,返回值String类型
application对象
对于不同用户,application对象是相同的
直到服务器关闭为止,其数据对所有用户相同
常用方法
application.setAttribute(String name , Object obj) 存入数据
application.getAttribute(“name”) 取出数据
application.removeAttribute(“name”) 删除数据