您的位置:首页 > Web前端 > JavaScript

JSP学习之内置对象

2016-03-10 22:05 375 查看
今天学习了 JSP 的内置对象,在此作如下总结:

JSP 有 9 大内置对象,其中:

常用的 5 个:request、response、session、application、out

其他 4 个: page、pageContent、exception、config

● request 对象

客户在访问 JSP 页面时,需要向服务器提交信息。而服务器要获取客户所提交信息的内容,可以使用 request 对象。

request 对象的常用方法:

◆  getParameter(String s): 获取提交的 text 信息;
◆  getProtocol(): 获取客户向服务器提交信息所用的通信协议;
◆  getSeveletPath():获取客户请求的 JSP 页面文件的目录;
◆  getContentLenth():获取客户提交的整个信息的长度;
◆  getMethod():获取客户提交信息的方式,比如:post或get;
◆  getHeader(String s):获取HTTP头文件中由参数 s 指定的头名字的值;
s 的参数有:accept、referer、accept-language、content-type、accept-encoding、user-agent 、host、
content-length 、connection 、cookie。
◆  getHeaderNames():获取头名字的一个枚举;
◆  getHeaders(String s):获取头文件中指定头名字的全部值的一个枚举;
◆  getRemoteAddr():获取客户IP地址;
◆  getServerHost():获取客户机的名称(若获取不到,就获取IP地址);
◆  getSeverName():获取服务器的名称;
◆  getSeverPort():获取服务器的端口号。


● response 对象

response对象与 request 对象相对应。服务器通过 request 对象获取到客户所提交的信息后,
通过 response 对象向客户做出响应。

◆  response.setContentType(String s):动态设置响应的 MIME 类型。当想动态改变 ContentType 的类型时,
可用此方法,比如:客户将 JSP 页面另存为 Word 文件。
◆  response.addHeader(String head,String value):动态的增加新的响应头和头的值。客户访问一个页面时,
会提交一个 HTTP 头给服务器,同样的服务器在响应客户时,也可能需要传送一些新的 Header,此时就需要此方法来动态添加新的 Header。
◆  response.sendRedirect():实现客户的重定向(重定向:客户被服务器重新引导进入另一个页面)。比如:在一
个登陆页面,若客户输入信息错误或者不完整,此时就需要重定向,将客户再次引导至登陆页面。
◆  setStatus(int n):增加状态行的内容。

状态行:服务器在响应客户时,发送内容的第一行就是状态行。状态行包括 3 个状态代码和相应的状态说明语句。


● session 对象

为什么需要 session 对象?session 对象的作用是什么?

答: HTTP 是一种无状态协议。客户向服务器提交 request 到服务器 response,一个连接就关闭了,服务器端不会
保存连接的任何信息。当下一个连接时,服务器无法判断是否与上一个连接来至于同一个客户的 request。比如:当客户连续在几个页面跳转、刷新、提交信息时,若有一个东西能够记录存储客户提交信息的记录,则服务器能够判断这些连接是否来至同一客户,这个就是session对象。session 对象就是为了保存客户在多个页面提交的各种信息。

session 对象的生命周期:

当一个客户首次访问一个JSP页面时,就会产生一个 session 对象;
session 对象与客户的关系是一一对应的。每个session对象都有一个String 类型的 id,它会被送到客户端,并存在 Cookie 中;
客户无论是在同一服务器的不同页面跳转,还是在从一个服务器到另一个服务再跳转回原服务器,始终都是同一个 session 对象。
只有浏览器关闭,session 对象才会被取消。若再次打开浏览器,又会重新创建一个新的 session 对象。

session 对象的唯一性依赖于 Cookie 而存在,当浏览器不支持 Cookie 时,客户访问不同页面的 session 对象时不一样的。当浏览器不支持 Cookie 时,可以通过 URL 重写来保证客户与 session 对象的一一对应关系。

URL 重写:

当客户从一个页面重新连接到另一个页面,通过向这个新的 URL 传递参数,从而将 session 对象的 id 传递过去,从而保证一个客户对应同一个 session 对象。
可以通过 response.encodeURL()或者 response.encodeRedirectURL() 方法来实现 URL 重写,例如:


// 从 tom.jsp 跳转到 jerry.jsp 页面,实现URL重写
String str=response.encodeRedirectURL("jerry.jsp");
// 再将连接目标写成<%=str%>


● application 对象

application 保存了一个应用系统的共有数据。
与 session 对象不同,session 对象时一个客户对应一个 session 对象,而 application 对象时所有客户共享同一个 application 对象。
当服务器启动时,application 对象就产生了,只有到服务器关闭,application对象才会被取消。
一个客户对应一条线程,则多条线程会共享 application 对象,因此此时存在线程同步问题。


注: 有些服务器不直接支持使用 application 对象,必须用 ServletContext 类声明这个对象,再使用 getServletContext() 方法对这个 application 对象进行初始化 。

● out 对象

out 对象就是一个输出流,用来向客户输出数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: