第五章 jsp 内置对象 1. request 对象 在 jsp 中,内置对象 request 封装了用户提交的信息, 那么该对象调用相应的方法可以获取封装的信息, 即使用该对象可以获取用户提交的信息。 客户一般使用 html 表单向服务器的某个 jsp 页面提 交信息,表单的一个格式 提交手段
提交手段通常包括通过文本框、列表、文本区等。 例如: 该表单使用 post 方法向 tom.jsp 页面提交信息,提 交信息的手段是在文本框输入信息 Request 对象可以使用 getParameter(String s) 方 法获取该表单通过 text 提交的信息。比如 ; Request.getParameter(“boy”);
1.1 获取客户提交的信息 Example3_1.jsp 在这个例子中 Example3_1.jsp 通过表单 tree.jsp 提交信息 I am a student;tree.jsp 通 过 request 对象获取表单提交的信息,包括 text 的值以及按钮的值。 Example.3_2.jsp 通过自己向自己来提交和 获取信息。
1.2 处理汉字信息 当用 request 对象获取客户提交的汉字字符 时,会出现乱码问题,其解决方法是将获 取的字符串用 ISO 进行编码,并将 编码存放到一个字节数组中,然后再将这 个数组转化为字符串对象即可。如下: String str=request.getParameter(“girl”); byte b[]=str.getBytes(“ISO ”); str=new String(b); Example3_3.jsp
1.3 常用方法举例 1.getProtocol() 获取客户向服务器提交信息所使用的通信 协议 2.getServletPath 获取客户请求的 jsp 页面文件的目录 3.getContentLength() 获取客户提交的整个信息的长度 4.getMethod() 获取客户提交信息的方式 5.getHeader(String s) 获取 Http 头文件中由参数 s 指定的头 名字的值:比如 accpet,referer,content-type,accpt- encoding 6.getHeaderNames() 获取头名字的一个枚举 7.getRomateAddr() 获取客户的 ip 地址 8.getServerName() 获取服务器的名字 9.getRomateHost() 获取客户机的名字 10.getHeaders(String s) 获取头文件中指定头名字的全部 值得一个枚举 11.getServerPort() 获取服务器的端口号 12.getParameterNames() Example3_4.jsp
1.4 获取 HTML 表单提交的数据 一个表单的数据提交手段部分经常包括如下的标 记符号: A. 输入对象的 GUI 类型可以是: text 、 radio 、 checkbox 、 password 、 submit 、 reset radio.jsp B. 、 格式 在 select 中增加 size 属性的值就变成滚动列表。 select.jsp C.
1.5 表格获取数据 表格由 标记定义,一般格式: 单元格中的数据 … 单元格中的数据 … Table.jsp
2. response 对象 2.1 动态相应 contentType 属性 当一个客户请求访问一个 jsp 页面时,如果该页面用 page 指令设置页面的 contentType 属性值为 text/html ,那么 jsp 引擎将按照这种属性做出相应,将页面的静态部分返回给 客户。如果想动态的改变这个属性的值来相应客户,就需 要使用 response 对象的 setContentType ( String s )方法 来改变 contentType 的属性值,格式如下: public void setContentType(String s); 该方法动态设置相应的 MIME 属性,参数 s 可取 text/html,text/plain,application/x- msexcel,application/msword 等。 Example3_10.jsp
2.2 response 的 HTTP 文件头 我们知道客户访问一个页面时,会提交一 个 http 头给服务器,同时相应也包括一些头。 Response 对象可以使用方法 addHeader(String head,String value); 或者 setHeader(String head,String value) 动态添加新的响应头和头的值,并将这些 头发送给客户的浏览器。 Example3_12.jsp
2.3 response 重定向 在某些情况下,当响应客户时,需要将客 户重新引导到另一个页面。这时就要用到 response 对象的重定向的方法: sendRedirect(URL url) Example3_13.jsp
2.4 response 的状态行 当服务器对可以请求进行响应时,发送的首行被称为状态 行。状态行包括 3 位数字的状态代码和对状态代码的描述。 下面给出对 5 类状态代码的大概描述。 1** ( 1 开头的 3 位数字:主要是实验性质的 2** :用来表示请求成功。 3** :用来表示在清求满足之前应该采取进一步的行动。 4** :当浏览器做出无法满足的请求时,返回该状态码。 5** :用来表示服务器出现的问题。 正常情况下,我们不需修改状态行。但是我们可以通过 response 对象的 setStatus(int n) 方法来增加状态行的内容。 Example3_14.jsp
3 session 对象 http 协议作为一个无状态协议,无法判断一 个客户的分时段的连接是不是属于同一个 客户。而一个客户在对一个服务器进行访 问的时候,可能会在这个服务器的几个页 面之间反复连接、反复刷新一个页面或者 不断向一个页面提交信息等,服务器应当 通过某种办法知道这是同一个客户,这就 需要 session 对象。
3.1 session 对象的 id 当一个客户首次访问服务器上的一个 jsp 页面时, jsp 引擎产生一个 session 对象,这个 session 对象 调用相应的方法可以存储客户在访问各个页面期 间提交的各种信息,比如,姓名、号码等信息。 这个 session 对象被分配一个 String 类型的 id 号, jsp 引擎同时将这个 id 号发送给客户端,存放在客 户的 cookie 中。这样 session 对象和客户之间就建 立起一个一一对应的关系。 session.jsp
3.2 session 对象与 URL 重写 session 对象能和客户建立起一一对应的关系依 赖于客户的浏览器是否支持 cookie 。否则服务器 无法将 id 存放到客户端,就不能建立 session 对象 和客户的一一对应关系。这时就需要 URL 重写来 实现 session 对象的唯一性。所谓 URL 重写,就是 当客户从一个页面重新连接到另外一个页面时, 通过向这个新的 URL 添加参数,把 session 对象的 id 传带过去,这样就可以保障客户在该网站各个 页面中的 session 对象是完全相同的。 17 session.jsp
3.3 session 对象的常用方法 1.public void setAttribute(String key,Object obj) session 对象通过调用这个方法将参数 Object 指定 的对象 obj 添加到 session 对象中,并为添加的对 象制定一个索引关键字。 2.public Object getAttribute(String key) 获取 session 对象中含有关键字 key 的对象。 3.public Enumeration getAttributeNames() session 对象调用该方法产生一个枚举对象。 4.public long getCreationTime() session 对象调 用该方法可以获取该对象创建的时间。
3.3 session 对象的常用方法 5.public int getMaxInactiveIterval(int n) 获取 session 对象 的生存时间 6.public long getLastAccessedTime() 获取当前 session 对 象最后一次被操作的时间 7.public void setMaxInactiveIterval(int n) 设置 session 对 象的生存时间 8.public void removeAttribute(String key) 从当前的 session 对象中删除关键字是 key 的对象 9.public String getId() 获取 session 对象的编号 Example3_17.jsp jsp-examples/num/numguess.jsp Example3_18.jsp
作业 对 Example2-2.jsp 程序作相应的修改,用 session 对象禁止客户通过刷新页面增加计 数。同时当客户刷新页面时,可以使用 session 的 public boolean isNew() 方法判断 是否是一个新的客户。
4 application 对象 与 session 对象不同的是, 服务器启动后, 就产 生一个 application 对象, 同时对于所有访问 该服务器的客户都是用的这一个 application 对象, 知道服务器关闭. 也就是说 jsp 引擎每每 个客户开的线程共享这个 application 对象.
application 对象的常用方法 1.public void setAttribute(String key,Object obj) application 对象调用该方法将参数 Object 制定的对象 obj 添 加到 application 对象中, 并为添加的对象制定一个索引关键 字. 2.public Object getAttribute(String key) 获取 application 对 象中含有关键字是 key 的对象. 3.public Enumeration getAttributeNames() application 对 象调用该方法产生一个枚举对象, 该枚举对象使用 nextElements() 方法遍历安排 application 对象所含有的全 部对象 4.public void removeAttribute(String key) 从当前的 application 对象中删除关键字是 key 的对象 21 submit.jsp
out 对象 out 对象 out 对象是一个输出流, 用来向客户端输出数据.out 对象可 调用如下方法用于各种数据的输出 out.println(boolean): 用于输出一个布尔值 out.println(char): out.println(double): out.println(float): out.println(long): out.println(String): out.newLine(): 输出一个换行符 out.flush(): 输出缓冲区里的内容 out.close(): 关闭流 23 time.jsp