JSP 内置对象
JSP 的内置对象由 JSP 容器自动为 JSP 页面提供, 可以使用标准的变量来访问这些对象, 并且不用编写任何额外的代码,可以在 JSP 网页中使用。在 JPS 2.0 规范中定义了以下 9 个内置对象: request (请求对象) response 、 (响应对象) session 、 (会话对象) application 、 (应用程序对象) 、out(输出对象) 、page(页面对象) 、config(配置对象) 、exception (异常对象) 、pageContext(页面上下文对象) 。在这一章中,我们将对它们进行介绍,并通 过示例来介绍它们的具体使用方法。
4.1 内置对象概述
正如第一章所介绍,Web 应用程序的特点是每一个 JSP 文件相当于独立的运行单元, 类似于一个独立的应用
程序,并由容器(Tomcat)进行统一管理。对于一个实际工程项目来 说,不可能只有一张页面,且页面之间存在各类内部数据的实时
通信问题,如:把 A 页面 登录数据传递到 B 页面进行验证;购物车的
设计涉及若干页面共享数据问题;公告栏涉及 不同用户的数据共享
问题。而且,在实际项目中,存在着对各类请求/响应有一些特殊要求 等。因此,容器根据规范要求,向用户提供了一些内置对象,用于解决上述问题,并负责对 这些对象的管理,包括内置对象的生存期、作用域等。 这些内置对象中,request、response 对象是在客户端请求一个
JSP 页面,由容器实时生 成并作为服务参数传递给 JSP(实际上是 servlet) ,请求/相应结束,由容器回收;session 的 生成一般是在用户第一进入系统时形成,退出
系统时,由容器回收。
4.2 request 对象
request 对象最主要的作用在于接收参数,当客户端请求一个 JSP 页面时,JSP 容器会将 客户端的请求信息包装在这个 request 对象,请求信息的内容包括请求的头信息、请求的方 式、请求的参数名称和参数值等信息。request 对象封装了用户提交的信息,通过调用该对 象相应的方法可以获取来自客户端的请求信息,然后做出响应。它是 HttpServletRequest 类 的实例。
4.2.1 request 对象主要方法 对象主要 主要方法
序号 1 2 3 4 5 6 7 方 法 名 getAttributeNames() getCharacterEncoding() getContentLength() getContentType() getInputStream() * getParameter(String name) 方 法 说 明 返回指定属性的属性值 返回所有可用属性名的枚举 返回字符编码方式 返回请求体的长度(以字节数) 得到请求体的 MIME 类型 得到请求体中一行的二进制流 返回 name 指定参数的参数值
1
* getAttribute(String name)
8 9 10 11 12 13 14 15 16 17 18 19 20
getParameterNames() getParameterValues(String name) getProtocol() getServerName() getServerPort() getReader() getRemoteAddr() getRemoteHost() * setAttribute(String key,Object obj) getR
ealPath(String path) getMethod() getRequestURL() * getSession()
返回可用参数名的枚举 返回包含参数 name 的所有值的数组 返回请求用的协议类型及版本号 返回接受请求的服务器主机名 返回服务器接受此请求所用的端口号 返回解码过了的请求体 返回发送此请求的客户端 IP 地址 返回发送此请求的客户端主机名 设置属性的属性值 返回一虚拟路径的真实路径 返回客户向服务器传输数据的方式 返回发出请求字符串的客户端地址 创建一个 session 对象
表 4-1 request 对象方法 下面的程序示例了 request 对象的一些常用方法,通常使用 request 对象来获得客户端传 来的数据。 example4_1.jsp <%@ page contentType="text/html;charset=gb2312"%> <%request.setCharacterEncoding("gb2312");%> <%@ page import="java.util.Enumeration"%>
一.request 对象常用方法
请求方式:<%=request.getMethod()%>
请求的资源:<%=request.getRequestURI()%>
请求用的协议:<%=request.getProtocol()%>
请求的文件名:<%=request.getServletPath()%>
请求的服务器的 IP:<%=request.getServerName()%>
请求服务器的端口:<%=request.getServerPort()%>
客户端 IP 地址:<%=request.getRemoteAddr()%>
客户端主机名:<%=request.getRemoteHost()%>
表单提交来的值:<%=request.getParameter("qwe")%>
二.使用 request 获取客户端提交的参数