目录
前言
在JSP页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象则会十分麻烦。为了简化Web应用程序的开发,JSP规范中提供了9个隐式(内置对象),它们是JSP默认创建的,可以直接在JSP页面中使用,本章主要介绍五个JSP内置对象。
4.1 request对象
HTTP通信协议是用户与服务器之间一种提交(请求)信息与响应信息(request/response)的通信协议。在JSP中,内置对象request封装了用户提交的信息,那么该对象调用相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。
内置对象request对象是实现了ServletRequest接口类的一个实例,可以在Tomcat服务器的webapps\tomcat-docs\servletapi中查找ServletRequest接口的方法
用户通常使用form表单项JSP页面提高必要信息,表单的一般格式如下:
<form action= "请求访问的页面或Servlet" method= get | post >
提交手段
</form>
<form>是开始标签,</form>是结束标签,action是表单的属性,其属性值给出表单请求访问的JSP页面或servlet。form表单中的method属性取值get或post。提交手段包括文本框(text)、列表(option)、文本区(textarea)等等。通过form表单提交信息给JSP页面后,可以让内置对象request对象调用getParameter(String s)来获得文本信息。
4.1.1 获取用户提交的信息
如果form表单中的action请求的页面是当前页面,可以用双引号""或单引号代替当前页面,即写成action=""或action ='',注意双引号或单引号中不能含有空格。也可省略action参数,即不显式写出action参数。请求的页面是另外的页面,则需要写出请求页面的路径。
下列例子是向当前页面提交信息(代码来自课本):
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.util.regex.Pattern" %>
<%@ page import="java.util.regex.Matcher" %>
<style>
#tom{
font-family:宋体;font-size:22;color:blue
}
</style>
<HTML><body id ="tom" bgcolor = #ffccff>
输入购物小票内容(显示的是默认内容):
<%
String content = "牛奶:12.68元,面包:6.6元,"
+"苹果:28元,香皂:6.58元";
%>
<form action ="" method="post" id ="tom">
<textArea name="shopping" rows=5 cols=32 id ="tom">
<%= content %>
</textArea>
<input type="submit" id ="tom" name="submit" value="提交"/>
</form>
<% String shoppingReceipt=request.getParameter("shopping");
if(shoppingReceipt==null) {
shoppingReceipt="0";
}
Pattern pattern; //模式对象
Matcher matcher; //匹配对象
String regex="-?[0-9][0-9]*[.]?[0-9]*" ;//匹配数字,整数或浮点数的正则表达式。
pattern = Pattern.compile(regex); //初试化模式对象。
matcher =
pattern.matcher(shoppingReceipt); //matcher检索shoppingReceipt。
double sum = 0;
while(matcher.find()) {
String str = matcher.group();
sum += Double.parseDouble(str);
}
out.print("购物小票消费总额:"+sum);
%>
</body></HTML>
效果:
注:使用request对象获取当前页面提交的信息时要格外小心,在上述例子中,当用户在浏览器中输入页面地址请求页面时,用户还没有机会提交数据,那么页面在执行
String shoppingReceipt=request.getParameter("shopping");
时得到的shoppingReceipt就是空对象。如果程序使用了空对象,Java解释器就会提示出现了NullPointerException异常。因此,在上述例子中为了避免在运行时出现NullPointerException异常,使用了如下代码:
String shoppingReceipt=request.getParameter("shopping");
if(shoppingReceipt==null) {
shoppingReceipt="0";
}
4.1.2 处理汉字信息
用户提交的信息中如果含有汉字字符或其他非ASCII字符的信息,就必须进行特殊的处理方式,防止出乱码现象。JSP页面文件的编码为utf-8编码。 内置对象request在获取信息之前调用setCharacterEncoding方法设置编码为utf-8(默认是iso-8859-1)就可以避免乱码现象。代码如下:
request.setCharacterEncoding("utf-8");
4.1.3 常用方法举例
当用户访问一个页面时,会提交一个HTTP请求给Tomcat服务器,这个请求包括一个请求行、HTTP头和信息体。例如:
post/rxample3_1.jsp/HTTP.1.1
host: localhost: 8080
accept-encoding: gzip,deflate
一个请求还包括信息体、及HTML标记组成的部分,可能包括各式各样用于提交信息的表单等。
request的getParameter方法获取form表单提交的有关信息,但实际上,request对象调用相关方法可以获取请求的许多细节信息。内置对象request常用方法如下:
1) String getProtocol() 获取用户向服务器提交信息所使用的通信协议,比如http/1.1等。
2) String getServletPath() 获取用户请求的JSP页面文的名字(带目录符号\,例如\hello.jsp)。
3) String getContextPath() 获取用户请求的当前Web服务目录(例如ch4)。
4) int getContentLength() 获取用户提交的整个信息的长度。
5) String getMethod() 获取用户提交信息的方式,比如:post或get.
6) String getRemoteAddr() 获取用户的IP地址。
7) String getRemoteHost() 获取用户机的名称(如果获取不到,就获取IP地址)。
8) String getServerName() 获取服务器的名称。
9) String getServerPort() 获取服务器的端口号。
4.1.1 处理HTML标记
JSP页面可以含有HTML标记,当用户通过浏览器请求一个JSP页面时,Tomcat服务器将该JSP页面中的HTML标记直接发送到用户的浏览器,有用户的浏览器负责执行这些HMTL标记。
① form标记
习惯称form标记为form表单,由于用户经常需要使用form表单提交数据,所以有必要对form表单进行简明的介绍:
form表单的一般格式是:
<form action= "请求访问的页面或servlet" method = get | post >
各种提交手段
提交键
</form>
form表单标记经常将下列标记作为form表单的子标记,以便提供提交数据的手段,这些标记都以GUI形式出现,方便用户输入或选择数据,比如,文本框、下拉列表、滚动列表等。
<input …../>
<select … ></select>
<option …..> </option>
<textArea ….> </textArea>
② input标记
在form表单将input标记作为子标记来指定form表单中数据的输入方式以及form表单的提交键。input属于孔标记,即没有标记体,所以input没有开始标签和结束标签(空标记的基本格式是<标记名称 属性列表/>)。<input>标记的基本格式:
<input type="GUI对象" name= "GUI对象的名子" value="GUI中的默认值"/>
(1) 文本框text
当type属性值指定输入方式的GUI是text时,除了用name为text指定名字外,还可以为text指定其他的一些值。比如:
<input type="text" name="m" value="h" size="8" algin="left" maxlength="9"/>
如果用户没有在text输入任何信息,就单击form表单中的submit提交键,request对象调用getParameter方法将获取由value指定的默认值(text中显示的默认值),如果value未指定任何值,getParameter方法获取的字符串的长度为0,即该字符串为""。
(2) 单选框 radio
当type属性值指定输入方式的GUI是radio时,除了用name为radio指定名字外,还可以为radio指定其他的一些值。比如:
<input type="radio" name="hi" value="男" algin= "top" checked="ok" />男生
<input type="radio" name="hi" value="女" algin= "top" />女生
其中value指定radio的值,如果几个单选键的name取值相同,那么同一时刻只能有一个被选中。 request对象调用getParameter方法获取被选中的radio中value属性指定的值。checked如果取值是一个非空的字符串,那么该单选框的初始状态就是选中状态。
(3) 复选框checkbox
当type属性值指定输入方式的GUI是checkbox时,除了用name为checkbox指定名字外,还可以为checkbox指定其他的一些值。比如:
<input type="checkbox" name= "item" value="A" algin= "top" checked="ok" />足球
<input type="checkbox" name= "item" value="B" algin= "top" />围棋
<input type="checkbox" name= "item" value="C" algin= "top" checked="ok" />乒乓球
<input type="checkbox" name= "item" value="D" algin= "top" />篮球
其中value指定checkbox的值。复选框与单选框的区别就是可以多选,即如果几个checkbox的name取值相同,那么同一时刻可有多个chekbox被选中。这时,request对象需调用getParameterValues方法(不是getParameter方法)获取被选中的多个checkbox中value属性指定的值。checked如果取值是一个非空的字符串,那么该复选框的初始状态就是选中状态。
(4) 口令框 password
当type属性值指定输入方式的GUI是password,用户输入的信息用”*“回显,即防止他人偷看指令。
用户在口令框中输入tiger,单击提交键,tiger将被提交给form表单请求的页面,请求的页面的内置对象request调用getParameter方法获取password提交的值tiger(password仅仅起着不让别人偷看的作用,不提供加密措施)。
(5) 隐藏 hidden
当type属性值指定输入方式的GUI是hidden时,input没有可见的输入界面,form表当会将input表记中的value属性的值提交给所请求的页面。
(6) 提交键 submit
为了能把form表单的数据提交给服务器,一个form表单至少包含一个提交键。单击提交键后,form表单请求的页面才有机会获取form表单提交的各个数据。
(7) 重置键 reset
重置键将表单中输入的数据清空,以便重新输入数据。
③ select、option 标记
下拉式列表和滚动列表通过select和option标记来定义,经常作为form的子标记,为表单提供选择数据的GUI。下拉列表的基本格式:
<select name="myName">
<option value="item1">文本描述</option>
<option value="item2">文本描述</option>
… …
</select>
在select中增加size属性的值就变成滚动列表,size的值是滚动列表的可见行的数目。滚动列表的基本格式为:
<select name="myName"size="正整数">
<option value="item1">文本描述</option>
<option value="item2">文本描述</option>
… …
</select>
下列例子是通过下拉列表为当前页面选择音乐,通过滚动列表为为当前页面选择一幅图像。
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<style>
#tom{
font-family:宋体;font-size:26;color:blue
}
</style>
<% String music = request.getParameter("music");
String pic = request.getParameter("pic");
String onOrOff=request.getParameter("R");
if(music==null) music = "";
if(pic==null) pic = "";
if(onOrOff==null) onOrOff = "off";
%>
<HTML><body id=tom background="image/<%= pic %>" >
<form action="" method=post >
<b>选择音乐:<br>
<select id=tom name="music" >
<Option selected value="back1.mp3">绿岛小夜曲
<Option value="back2.mp3">我是一片云</option>
<Option value="back3.mp3">红河谷</option>
</select>
<input type="radio" name="R" value="on" />打开
<input type="radio" name="R" value="off" />关闭
<br><b>选择背景图像:<br>
<select id=tom name="pic" size = 2>
<option value="back1.jpg">荷花图</option>
<option value="back2.jpg">玫瑰图</option>
<option value="back3.jpg">校园图</option>
</select> <br>
<input id=tom type="submit" name="submit" value="提交"/>
</form>
<% if(onOrOff.equals("on")) {
%> <br><embed src="sound/<%= music %>" height=50 />
<% }
%>
</body></HTML>
效果:
④ textArea 标记
Tom服务器的内置对象request通过name指定的名字来获取GUI对象中提交的数据.基本格式为:
<textArea name="名字" rows= "文本可见行数" cols= "文本可见列数" >
提交或显示的数据
</textArea>
⑤ style 样式标记
style标记可用于定义HTML其他标记中的字体样式,如:
<style>
#textStyle{
font-family:宋体;font-size:18;color:blue
}
#tom{
font-family:黑体;font-size:16;color:black
}
</style>
其中,#字符之后的字符序列是样式名称,例如#textStyle给出的样式名称是textStyle。其它html标记可以让其id属性值是样式名称来使用这个样式。
⑥ table 标记
主要用于显示数据,不能提交数据。表格由<table>标记定义,一般格式:
<table border ="边框的宽度">
<tr width="该行的宽度">
<th width="单元格的宽度" >单元格中的数据</th>
…
<td width= "单元格的宽度" >单元格中的数据</td> …
</tr>
… ….
</table>
其中
<tr>...</tr>
定义表格的一个行,<th>或<td>标记定义这一行中的表格单元,二则的区别是<th>定义的单元着重表示,<td>称为普通单元。table中增加选项border可给出该表格边框的宽度,当border=0时,相当于没有边框。
⑦ image 标记
不能用于提交数据,用于显示图像,基本格式为:
<image src="图像文件的URL" >描述文字</image>
如果图像文件和当前页面在同一Web服务目录中,图像文件的地址就是该图像文件的名字,如果图像文件在当前Web服务目录一个子目录中,比如image子目录,那么”图像文件放入URL“ 就是”image/图像文件的名字“。
⑧ embed 标记
不能用于提交数据。使用embed标记可以播放音乐和视频,当浏览器执行该标记时,会把浏览器所在机器上的默认播放器嵌入到浏览器中,以便播放音乐或视频文件。embed标记的基本格式为:
<embed src="音乐或视频文件的URL" >描述文字</embed >
或
<embed src="音乐或视频文件的URL" />
⑨ 属性值格式的说明
许多HTML标记的中都有属性,并指定属性的值,例如: <input type="text" name="testAmount" value=10 /> 中的type,name ,value都是input标记的属性, 属性值可以用双引号括起, 也可以用单引号括起, 或者不用任何符号. 比如type属性的值可以用双引号括起"text",也可以用单引号括起'text'或者不用任何符号text
注:一个好的习惯是用单引号括起。 例如,下列超链接标记中的href的属性值用单引号括起。 <a href = ’example4_1.jsp’>超链接</a>
4.1.5 处理超链接
用户单击超链接标记的文字说明,可以访问超链接给出的链接页面。 使用超链接标记时还可以增加参数,以便向所链接的页面传递值,格式如下:
<a href=链接的页面地址?参数1=字符串1&参数2=字符串2… >文字说明</a>
需要注意的是,超链接标记向所链接的页面传递的参数的值,即字符串中不允许含有非ASCII字符(例如汉字等)。
4.2 response 对象
与request对象相对应的对象是response对象。可以用response对象对用户的请求作出动态响应,向用户端发送数据。
4.2.1 动态响应 contentType 属性
页面用page指令设置页面的contentType属性的值,那么Tomcat服务器将按着这种属性值作出响应,将页面的静态部分返回给用户,用户浏览器接收到该响应就会使用相应的手段处理所收到的信息。
page指令只能为contentType指定一个值来决定响应的MIME类型,如果想动态的改变这个属性的值来响应用户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值
通过实例来解释:用户在example4_10.jsp页面输入圆半径,然后单击名字“提交看面积”提交键,请求访问example4_10_show.jsp页面,该页面显示圆的面积。 但是,如果用户输入圆半径单击名字“提交看圆形”提交键,那么example4_10_show.jsp的内置对象response将默认的MIME类型text/html改变成image/jpeg,以便用户的浏览器启用相应的图形解码器显示服务器发来的图形。
example4_10.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<style>#textStyle
{ font-family:宋体;font-size:36;color:blue
}
#tomStyle
{ font-family:黑体;font-size:26;color:black
}
</style>
<HTML><body id="textStyle" bgcolor = #ffccff>
<form action="example4_10_show.jsp" method=post >
输入圆半径:<br>
半径:<input type="text" name="radius" id = "textStyle" value=100.8 size=12 /><br>
<input type="submit" name="submit" id = "tomStyle" value="提交看面积"/><br>
<input type="submit" name="submit" id = "tomStyle" value="提交看圆形"/>
</form>
</body></HTML>
example4_10_show.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="java.awt.geom.*" %>
<%@ page import="javax.imageio.ImageIO" %>
<style>#textStyle
{ font-family:宋体;font-size:36;color:blue
}
</style>
<%! void drawCircle(double r,HttpServletResponse response) { //定义绘制圆的方法
int width=320, height=300;
BufferedImage image =
new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.fillRect(0, 0, width, height);
Graphics2D g_2d=(Graphics2D)g;
Ellipse2D ellipse=new Ellipse2D.Double(160-r,150-r,2*r,2*r);
g_2d.setColor(Color.blue);
g_2d.draw(ellipse);
try {
OutputStream outClient= response.getOutputStream();//指向用户端的输出流
boolean boo =ImageIO.write(image,"jpeg",outClient);
}
catch(Exception exp){}
}
double getArea(double r) { //定义求面积的方法
return Math.PI*r*r;
}
%>
<% request.setCharacterEncoding("utf-8");
String submitValue = request.getParameter("submit");
String radius = request.getParameter("radius");
double r =Double.parseDouble(radius);
if(submitValue.equals("提交看圆形")){
response.setContentType("image/jpeg");//response更改相应用户的MIME类型
drawCircle(r,response) ; //绘制圆
}
%>
<HTML><body bgcolor = #EEEEFF>
<p id ="textStyle">
<%
double area=getArea(r);
String result = String.format("%.2f",area);
%>
半径:<%= radius %><br>
<b>面积(保留2位小数)<br><%= result %>
</p></body></HTML>
结果:
4.2.2 response 对象的HTTP文件头
response对象可以使用方法 addHeader(String head,String value); 或 setHeader(String head ,String value); 动态添加新的响应头和头的值,将这些头发送给用户的浏览器。如果添加的头已经存在,则先前的头被覆盖。
4.2.3 response 对象的重定向
在某些情况下,如果用户输入的form表单信息不完整,可以通过response的sendRedirect(URL url)方法实现用户的重定向,即让用户从一个页面跳转到sendRedirect(URL: url)中url指定的页面。需要注意的是当使用sendRedirect(URL url)方法将用户从当前页面重定向另一个页面时,Tomcat服务器还是要把当前JSP页面执行完毕后才实施重定向(跳转)操作,但Tomcat服务器不再给用户看当前页面的执行效果。如果在执行sendRedirect(URL url)方法后,紧接着执行了return返回语句,那么Tomcat服务器会立刻结束当前JSP页面的执行。
4.3 session 对象
Tomcat服务器可以使用内置session对象(会话)记录用户的信息。内置对象session由Tomcat服务器负责创建。session是实现了HTTP Session接口类的一个实例。
4.3.1 session 对象的id
当一个用户首次访问web服务目录中的一个JSP页面时,Tomcat服务器产生一个session对象,这个session对象调用相应的方法可以存储用户在访问该web服务目录中各个页面期间提交的各种信息。这个session对象被分配了一个String类型的id号,Tomcat服务器同时将这个id号发送到用户端,存放在用户(浏览器)的Cookie中。这样,session对象和用户之间就建立起一一对应的关系,即每个用户都对应着一个session对象(称作用户的会话),不同用户(不同浏览器)的session对象互不相同,具有不同的id号码。 当用户再访问该Web服务目录的其它页面时,Tomcat服务器不再分配给用户的新session对象,而是使用完全相同的一个,直到session对象达到了最大生存时间或用户关闭自己的浏览器或Tomcat服务器关闭,Tomcat服务器将销毁用户的session对象 简单地说,用户(浏览器)在访问一个Web服务目录期间,服务器为该用户分配一个session对象(称作和该用户的会话),服务器可以在各个页面使用这个session记录当前用户的有关信息。而且服务器保证不同用户的session对象互不相同。
注:同一个用户在不同的Web服务目录中的session是互不相同的。
4.3.2 session 对象与URL重写
session对象能和用户建立起一一对应关系依赖于用户浏览器是否支持Cookie。如果用户客户端不支持Cookie,那么用户在不同网页之间的session对象可能是互不相同的,因为tomcat服务器无法将id存放到用户端浏览器中,就不能建立session对象和用户的一一对应关系。
如果用户不支持Cookie,JSP页面可以通过URL重写来实现session对象的唯一性。 首先在程序片中实现URL重写:
String str=response.encodeRedirectURL("要链接的页面");
然后将连接目标写成<%= str %>
4.3.3 session对象存储数据
(1) public void setAttribute (String key ,Object obj)。 session对象可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象指定了一个索引关键字,如果添加的两个对象的关键字相同,则先前添加的对象被清除。
(2) public Object getAttribute(String key)。获取session对象索引关键字是key的对象。由于任何对象都可以添加到session对象中,因此用该方法取回对象时,应显式转化为原来的类型。
(3) public Enumeration gerAttributeNames()。session对象调用方法产生一个枚举对象,通过nextElements()遍历session中的各个对象所对应的关键字。
(4) public void removeAttribute(String key)。session对象调用方法移除关键字key对应的对象。
例子14实现猜数字游戏:
example4_14.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<style>#textStyle
{ font-family:宋体;font-size:36;color:blue
}
</style>
<style>#tomStyle
{ font-family:黑体;font-size:26;color:black
}
</style>
<HTML><body bgcolor = #ccffff>
<p id ="textStyle">
随机分给了一个1到100之间的数,请猜!
<% int number=(int)(Math.random()*100)+1;
session.setAttribute("count",new Integer(0));
session.setAttribute("saveGuessNumver",new Integer(number)); //保存需要猜测的数
%>
<br>输入猜测:
<form action="example4_14_judge.jsp" method="post" >
<input type="text" id ="tomStyle" name="guess" >
<input type="submit" id ="tomStyle" value="提交" />
</form>
</p></body></HTML>
example4_14_judge.jsp
<% String str=request.getParameter("guess");
if(str==null||str.length()==0) {
response.sendRedirect("example4_14.jsp");
}
else {
int userGuessNumber=Integer.parseInt(str);//用户的猜测
session.setAttribute("userGuess",new Integer(userGuessNumber));
Integer saveGuessNumver=
(Integer)session.getAttribute("saveGuessNumver");
if(userGuessNumber == saveGuessNumver.intValue()) {
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count",new Integer(n));
response.sendRedirect("example4_14_success.jsp");
}
else if(userGuessNumber > saveGuessNumver.intValue()){
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count",new Integer(n));
response.sendRedirect("example4_14_large.jsp");
}
else if(userGuessNumber < saveGuessNumver.intValue()) {
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count",new Integer(n));
response.sendRedirect("example4_14_small.jsp");
}
}
%>
example4_14_large.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<style>#textStyle
{ font-family:宋体;font-size:36;color:blue
}
</style>
<style>#tomStyle
{ font-family:黑体;font-size:26;color:black
}
</style>
<HTML><body bgcolor = white>
<% Integer userGuess=(Integer)session.getAttribute("userGuess");
%>
<p id="textStyle">
<%= userGuess %>数大了,请再猜:
<form action="example4_14_judge.jsp" method="post" name=form >
<input type="text" id="tomStyle" name="guess" >
<input type="submit" id="tomStyle" value="送出" />
</form>
</p></body></HTML>
example4_14_small.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<style>#textStyle
{ font-family:宋体;font-size:36;color:blue
}
</style>
<style>#tomStyle
{ font-family:黑体;font-size:26;color:black
}
</style>
<HTML><body bgcolor = white>
<% Integer userGuess=(Integer)session.getAttribute("userGuess");
%>
<p id="textStyle">
<%= userGuess %>数小了,请再猜:
<form action="example4_14_judge.jsp" method="post" name=form >
<input type="text" id="tomStyle" name="guess" />
<input type="submit" id="tomStyle" value="送出" />
</form>
</p></body></HTML>
example4_14_success.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<% Integer count = (Integer)session.getAttribute("count");
Integer num = (Integer)session.getAttribute("saveGuessNumver");
%>
<HTML><body bgcolor = pink >
<p style="font-family:黑体;font-size:36;color:blue">
<br>恭喜猜对了,
<br><b>共猜了<%=count%>次。
<br>这个数字就是<%=num%>。
</p></body></HTML>
结果:
4.3.4 session 对象的生存期限
session对象的生存期限依赖于session对象是否调用invalidate()方法使得session无效或session对象达到了设置的最长的“发呆”状态时间以及用户是否关闭浏览器或服务器被关闭。所谓“发呆”状态时间是指用户对某个Web服务目录发出的两次请求之间的间隔时间(默认的发呆时间是30分钟)
session对象可以使用下列方法获取或设置和生存时间有关的信息:
(1)public long get Creation Time()获取 session创建的时间,单位是毫秒(GMT时间,1970年7月1日午夜起至 session创建时刻所走过的毫秒数)。
(2)public long get Last Accessed Time()获取 session最后一次被操作的时间,单位是毫秒。
(3)public int get MaxInactiveInterval()获取 session最长的“发呆”时间(单位是秒)
(4)public void set MaxInactiveInterval( int interval)设置 session最长的“发呆”时间(单位是秒)。
(5)public boolean isNew()判断 session是否是一个新建的对象。
(6)invalidate()使 session无效。
4.4 application 对象
本节学习的application对象也是由Tomcat服务器负责创建,但与session对象不同的是,application对象被访问该Web服务目录的所有的用户共享,但不同Web服务目录下的application互不相同。
4.4.1 application 对象的常用方法
-
public void setAttribute(String name, Object object):将一个对象绑定到application对象中,以name为属性名。
-
public Object getAttribute(String name):从application对象获取指定属性名对应的对象。
-
public void removeAttribute(String name):从application对象中删除具有指定属性名称的属性。
-
public Enumeration getAttributeNames():获取application对象中所有属性名的枚举。
-
public String getServerInfo():返回与Web服务器相关的信息,如服务器名称、版本等。
需要注意的是,tomcat服务器启动后,application对象中已经有8个关键字,因此,JSP程序使用setAttribute(String key,Object obj )在application对象中存储数据时,key要避免使用这8个关键字。
4.5 out对象
out对象是一个输出流,用来向用户端输出数据。在前面的许多例子里曾多次使用out对象进行数据的输出。out对象可调用如下的方法用于各种数据的输出, 例如:
(1) out.print(boolean)或out.println(boolean) 用于输出一个布尔值。 out.print(char) 或out.println(char) 输出一个字符。
(2) out.print(double) 或out.println(double)输出一个双精度的浮点数。
(3) out.print(fload) 或out.println(float)用于输出一个单精度的浮点数。
(4) out.print(long) 或out.println(long)输出一个长整型数据。
(5) out.print(String) 或out.println(String)输出一个String对象的字符序列。
方法println和print的区别是:println会向缓存区写入一个换行,而print不写入换行。但是浏览器的显示区域目前不识别println写入的换行,如果希望浏览器显示换行,应当向浏览器写入"<br>"实现换行。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了内置对象的定义使用,有错误的地方请大家悉心指正。