JSP学习之内置对象

来源:互联网 发布:云宫迅音评价知乎 编辑:程序博客网 时间:2024/06/12 14:36

今天学习了 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 对象就是一个输出流,用来向客户输出数据。
0 0
原创粉丝点击