本章导读
主要内容
- request对象
- respond对象
- session对象
- out对象
- application对象
4.1 request对象
response对象用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效。用户通常使用form表单来请求:
<form action="请求的页面或servlet" method=get|post>
提交手段
</form>
4.1.1. 获取用户提交的信息
request对象茯取用戸提交信息的最常用的方法是getParameter(String s)。
在下面的例4_ 1中,example4_ 1. jsp通过表単向
example4_ 1_ computer. jsp提交三角形三边的长度,example4_1_computer.jsp负责计算和显示示三角形的面釈。
example4_ 1. jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body bgcolor = #ffccff>
<form action="example4_1_computer.jsp" method=post >
<input type="text" name="sizeA" value=9 size=6 />
<input type="text" name="sizeB" value=8 size=6 />
<input type="text" name="sizeC" value=8 size=6 />
<input type="submit" name="submit" value="提交"/>
</form>
</body></HTML>
example4_1_computer.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body bgcolor = #ccffff>
<p style="font-family:黑体;font-size:36;color:blue">
<%
String sideA=request.getParameter("sizeA");
String sideB=request.getParameter("sizeB");
String sideC=request.getParameter("sizeC");
try { double a=Double.parseDouble(sideA);
double b=Double.parseDouble(sideB);
double c=Double.parseDouble(sideC);
double p=(a+b+c)/2,area=0;
area=Math.sqrt(p*(p-a)*(p-b)*(p-c));
String result = String.format("%.2f",area);
out.println("<BR>三边:"+sideA+","+sideB+","+sideC);
out.println("<BR>三角形面积(保留2位小数):"+result);
}
catch(NumberFormatException ee){
out.println("<BR>请输入数字字符");
}
%>
</p></body></HTML>
4.1.2 处理汉字信息
request.setCharacterEncoding(“utf-8”)
4.1.3 处理HTML标记
- form标记
> <form action="请求的页面或servlet" method=get|post>
提交手段
提交键
</form>
- input标记
<input type="GUI对象" name="GUI对象名字" value="GUI的默认值" />
下面为GUI对象可以选择的类型
-
文本框text
-
单选框radio
-
复选框checkbox
-
口令框password
-
隐藏hidden
-
提交键submit
-
重置键rest
- select,option标记
<select id=tom name="自己设置" >
<Option value="item1">文本描述</option>
<Option value="item2">文本描述</option>
......
</select>
- textArea标记
<textArea name="名字" >
row = "文本可见行数" cols="文本可见列数">
</textArea>
- style样式标记
<style>
#tom{
font-family:宋体;font-size:26;color:blue
}
</style>
id="tom"调用
- table标记
<table border=边框宽度>
<tr width=该行的宽度>
<th width=单元格的宽度>单元格数据</th>
...
<th width=单元格的宽度>单元格数据</th>
</tr>
...
</table>
- image标记
<image src="图像文件的URL" width= height=>描述文字 </image>
- embed标记
<embed src="音频文件的URL">描述文字 </embed>
4.1.4 处理超链接
基本格式:
<a href=链接的页面地址>文字说明</a>
4.2 respond对象
response对象用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效
4.2.1 动态响应contentType属性
page指令只能为contentType指定一个值来决定响应的MIME类型。
用setContentType(String s)方法可以动态改变contentType属性值,该方法中的参数 s 可取值: text / html 、text / plain 、image / gif 、image / x - xbitmap 、image / jpeg 、image / pipeg 、application / x - shockwave - flash 、application / vnd . ms - powerpoint 、 application / vnd . ms - excel , application / msword 等。
4.2.2 respond对象的重定向
使用response对象提供的sendRedirect()方法可以将网页重定向到另一个页面。重定向操作支持将地址重定向到不同的主机上,这一点与转发不同。在客户端浏览器上将会得到跳转的地址,并重新发送请求链接。用户可以从浏览器的地址栏中看到跳转后的地址。进行重定向操作后,request中的属性全部失效,并且开始一个新的request对象。
sendRedirect()方法的语法格式如下:
response.sendRedirect(URL url);
4.3 session对象
- session对象的id
服务器给它分配一个session,这个session有一个ID号,也就是说,不同用户的session是不一样的,每个用户都有一个session,每个session都有一个不同的ID。
在返回请求的时候,它会把session的ID号返回给客户端,然后客户端在发第二次请求的时候,这个请求就包括session ID了,通过这种方式识别用户的多次请求,因此session ID是一个很关键的问题。
session对象被分配了一个String类型的ID,服务器将ID发送到客户端,存放在客户的Cookie中。有些时候,如果清理掉Cookie的话,再访问服务器就和没登录一样,因为将服务器缓存在浏览器的内容给清空了,因此session和Cookie是配套使用的。
同一用户在同一Web服务目录中的各个页面的session相同。 不同用户的session对象互不相同,具有不同的ID
- session对象与URL重写
session 对象能和用户建立起一一对应关系依赖于用户浏览器是否支持 Cookie ,如果用户端浏览器不支持 Cookie
那么用户在不同网页之间的 session 对象可能是互不相同的,因为 Tomcat 服务器无法将 id
存放到用户端浏览器中,就不能建立session 对象和用户的一一对应关系。用户将浏览器 Cookie 设置为禁止后(选择浏览器( IE
)菜单→工具→ Internet 选项→隐私→高级,将第三方 Cookie
设置成禁止),运行上述例4_13会得到不同的结果。也就是说,同一用户对应了多个 session 对象,这样 Tomcat
服务器就无法知道在这些页面上访问的实际上是同一个用户。 如果用户不支持 Cookie , JSP 页面可以通过 URL 重写来实现
session 对象的唯一性。所谓 URL 重写,就是当用户从一个页面重新链接到一个页面时,通过向这个新的 URL 添加参数,把
session 对象的 id 传带过去,这样就可以保障用户在该 Web 服务目录的各个页面中的 session 对象是完全相同的。可以让
response 对象调用 encodeURL ()或 encodeRedirectURL ()方法实现 URL 重写。
- session对象存储数据
(1) public void setAttribute (String key,Object obj)。session 对象可以调用该方法将参数 Object 指定的对象obj添加到 session 对象中,并为添加的对象指定了一个素引关键字,如果添加的两个对象的关键字相同,则先前添加的对象被清除。
(2)public Object getAttribute(String kcy)。获取 session对象索引关键字是key的对象。由于任何对象都可以添加到scssion对象中,因此用该方法取回对象时,应显式转化为原来的类型。
(3)public Enumeration getAttributeNames()。session 对象调用该方法产生一个枚举对象,该枚举对象使用nextElemets()遍历session中的各个对象所对应的关键字。
(4)public void removeAttribute(String key)。session 对象调用该方法移掉关键字key对应的对象。 - session对象的生存期限
一个用户在某个 Web 服务目录的 session 对象的生存期限依赖于 session 对象是否调用 invalidate ()方法使得 session 无效或 session 对象达到了设置的最长的"发呆"状态时间以及用户是否关闭浏览器或服务器被关闭
4.4 application 对象
4.4.1 application 对象的常用方法
(1) public void setAttribute ( String key , Object obj ). application对象 调用该方法将参数 Object 指定的对象 obj 添加到 application 对象中,并为添加的对象指定了一个索引关键字。
(2) public Object getAttibute ( String key )获取的application对象含有的关键字是 key 的对象。由于任何对象都可以添加到 application 对象中,因此用该方法取回对象时,应显式转化为原来的类型。
(3) public Enumeration getAttributeNames(),application对象调用该方法产生的 Enumeration (枚举)对象,该 Enumeration 对象使用 ncxtElemets ()遍历 application 中的各个对象所对应的关键字。
(4) public void removeAttribute ( String key ),删除关键字key 的对象。
(5) public String getServletlnfo ()。获取 Servlet 编译器的当前版本的信息。
4.5 out对象
out对象是一个输出流,用来向用户端输出数据。在前面的许多例子里曾多次使用 out 对象进行数据的输出。 out
对象可调用如下的方法用于各种数据的输出,例如:
- out . print ( boolean )或 out . println ( boolean )用于输出一个布尔值。(2) out . print ( char )或 out . println ( char )用于输出一个字符。
- out . print ( double )或 out . println ( double )用于输出一个双精度的浮点数。
- out . print ( fload )或 out . println ( float )用于输出一个单精度的浮点数。
- out . print ( long )或 out . println ( long )用于输出一个长整型数据。
- out . print ( String )或 out . println ( String )用于输出一个 String 对象的字符序列。
总结
本章重点主要掌握request 对象、response 对象、session对象