1、1 附录 1 外文参考文献(译文) JSP 内置对象 有些对象不用声明就可以在 JSP 页面的 Java 程序片和表达式部分使用,这就是 JSP的内置对象。 JSP 的内置对象有: request、 response、 session、 application、 out. response 和 request 对象是 JSP 内置对象中较重要的两个,这两个对象提供了对服务器和浏览器通信方法的控制。直接讨论这两个对象前,要先对 HTTP 协议 Word Wide Wed 底层协议做简单介绍。 Word Wide Wed 是怎样运行的呢?在浏览器上键入一个正确的网址后,若一切顺利,网页就出现了。使
2、用浏览器从网站获取 HTML 页面时,实际在使用超文本传输协议。HTTP 规定了信息在 Internet 上的传输方法,特别是规定吧浏览器与服务器的交互方法。从网站获取页面时,浏览器在网站上打开了一个对网络服务器的连接,并发出请求。服务器收到请求后回应,所以 HTTP 协议的核心就是 “请求和响应 ”。 一个典型的请求通常包含许多头,称作请求的 HTTP 头。头提供了关于信息体的附加信息及请求的来源。其中有些头是标准的,有些和特定的浏览器有关。一个请求还可能包含信息体,例如,信息体可包含 HTML 表单的内容。在 HTML 表单上单击 Submit键时,该表单使用 ACTION=”POST”或
3、 ACTION=”GET”方法,输入表单的内容都被发送到服务器上。该表单内容就由 POST 方法或 GET 方法在请求的信息体中发送。 服务器发送请求时,返回 HTTP 响应。响应也有某种结构,每个响应都由状态行开始,可以包含几个头及可能的信息体,称为响应的 HTTP 头和响应信息体,这些头和信息体由服务器发送给客户的浏览器,信息体就是客户请求的网页的运行结果,对于 JSP页面,就是网页的静态信息。用户可能已经熟悉状态行,状态行说明了正在使用的协议 、状态代码及文本信息。例如,若服务器请求出错,则状态行返回错误及对错误描述,比如 HTTP/1.1 404 Object Not Found。若服
4、务器成功响应了对页面的请求,则返回包含 “200 OK”的状态行。 2 HTTP 通信协议是客户与服 务器之间一种提交(请求)信息与响应信息( request/response)的通信协议。在 JSP 中,内置对象 request 封装了用户提交的信息,那么该对象调用相应的方法可以获取封装的信息,使用该对象可以获取用户提交的信息。内置对象 request 对象是实现了 SerletRequest 接口类的一个实例,可以在 Tomcat 服务器的 webappstomcat-docsservletapi 中查找 SerletRequest 接口的方法。 当客户访问一个服务器的页面时,会提交一个
5、HTTP 请求,服务器收到请求时,返回 HTTP 响应。响应和请求类似,也有某种结构,每个响应都由状态行开始,可以包含几个头及可能的信息体。与 request 对象相对应的对象是 response 对象。可以用 response对象对客户的请求作出动态响应,向客户端发送数据。比如,当一个客户请求访问一个JSP 页面时,该页面用 page 指令设置页面的 contentType 属性的值是 text/html,那么 JSP引擎将这种属性值响应客户对页面的请求,将页面的静态部分返回给客户,用户浏览器接收到该响应就会使用 HTML 解释器解释执行所收到的信息。 HTTP 协议是一种无状态协 议。一个
6、客户向服务器发出请求(),然后服务器返回响应(),连接就被关闭了。在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已经没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一个客户。当一个客户访问一个 Web 服务目录时,可能会在这个服务器目录的几个页面反复连接 、反复刷新一个页面或不断的向一个页面提交信息等,服务器应当通过某种办法知道这是同一个客户。 Tomcat 服务器可以使用内置 session(会话)对象记录有关连接的信息。内置对象 session 由 Tomcat 服务器负责创建, session 是实现了 HttpSession 接口类的一个实例,可以在 Tomc
7、at 服务器的 webappstomcat-docsservletapi 中查找HttpSession 接口方法。 我们已经知道,当一各客户第一次访问 Web 服务目录上的一个 JSP 页面, JSP 引擎创建一个和该客户相对应的 session 对象,当客户在所访问的 Web 服务目录的各个页面之间浏览时,这个 session 对象都是同一个,而且不同客户的 session 对象是互不相同的。与 session 对象不同的是 application 对象,该对象由服务器负责创建 ,每个 Web 服务目录下的 application 对象被访问该服务目录的所有的用户共享,不同 Web 服务目录
8、下的application 互不相同。 Out 对象是一个输出流,用来向客户端输出数据。 Out 对象可调用如下的方法用于3 各种数据的输出,例如: Out.print(boolean),out.println(boolean):输出一个布尔值。 Out.print(char),out.println(char):输出一个布尔值。 Out.print(double),out.println(double):输出一个布 尔值。 Out.print(float),out.println(float):输出一个布尔值。 Out.print(long),out.println(long):输出一个布尔值。 Out.print(String),out.println(String):输出一个布尔值。 Out.newLine():输出一个换行符。 Out.flush():输出缓冲区里的内容。 Out.close():关闭流。 方法 println 和 print 的区别是: println 会向缓存区写入一个换行,而 print 不写入换行。但是浏览器的显示区域目前不识别 println 写入的换行,如果希望浏览器显示换行,应当向浏览器写入 实现换行。