




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaWeb程序设计
——JSP内置对象(2)2主要内容JSP内置对象Session对象Application对象Out对象3Session对象session对象(会话对象)是类javax.servlet.Httpsession的一个对象,该对象用于保存每个与服务器建立连接的客户端信息。Session对象存在于服务器端,工作开始于从客户端连接服务器开始,直到与服务器断开连接为止。
Session对象的工作示意图如下所示:4Session对象示意图
session1:数据……session2:数据……sessionN:数据…………服务器端在线用户1在线用户2在线用户N……客户端5
一个Web服务器可能会有多个用户访问,服务器如何辨认哪一个session属于某个用户?
当服务器为某一个用户建立session对象后,会给该session对象分配一个Id(字符串),该Id会传送到客户端。
当用户再次向服务器提出请求时,Id字符串会一并传送到服务器,服务器端将采用Id与各session进行比对,以查找用户拥有的session。6(1)session对象的有效期限session对象在其建立后的存在期间,当以下4种情况发生,则session对象及其数据将会被取消和清空。用户关闭当前正在使用的浏览器(一次连接结束)服务器关闭用户未向服务器提出请求,且超过预设的时间运行程序结束session7
当一个用户首次访问服务器上的一个JSP页面时,JSP引擎会产生一个session对象给该用户,同时,分配一个字符串类型的Id号,并将该Id号发送给客户端,保存在Cookie中。这样,session对象和客户之间就建立了一一对应的关系,直到客户端关闭浏览器,session对象消失,客户端与服务器端的会话关系才消失。(2)session对象中的Id81、建立session变量在JSP中不需要设置程序代码来建立用户的session对象,下面的语句是在session对象中建立变量:
session.setAttribute(“变量名称”,变量内容)
其中,变量内容可以是字符串或其他类型。(3)访问session对象中的数据9
例如:
<%session.setAttribute(“ID”,“123456”);session.setAttribute(“Date”,newjava.util.Date());%>
在session中建立的变量数据,用户在当前浏览器中打开的各个网页都能访问这些变量数据。102、读取session中的变量在session中设置了变量数据后,在其他的网页中就可以使用getAttribute()方法读取其中的内容:
session.getAttribute(“变量名称”)
返回值为Object(对象)类型,可以根据需要转换其他数据类型;
3、获取所有session中的变量名称
session.getAttributeNames();
返回类型为枚举类型114、清除session中的变量
session.removeAttribute(“变量名称”)
5、结束session
session.invalidate();
以上方法是JSP存取session数据的基本方法。
例:利用session对象,统计访问某站点页面的用户数。
12“sessionCount.jsp”<%@pagelanguage="java"contentType="text/html;charset=gb2312"pageEncoding="gb2312"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"><%!intNum=0;%><%if(session.isNew()){Num+=1;session.setAttribute("Num",Num);}%>声明全局变量:Num判断是否是一个新用户将Num变量值存入session中13<html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>session对象计数</title></head><body><CENTER><FONTSIZE=5>session对象计数</FONT></CENTER><BR><CENTER><Fontcolor=blue>您是第</Font><Fontcolor=red><%=session.getAttribute("Num")%></Font><Fontcolor=blue>个访问本站的用户</Font></CENTER></body></html>获取变量值14运行结果:(开启新的浏览器窗口,计数增加)15运行结果:(未开启新的浏览器窗口,刷新页面,计数不增加)16主要内容JSP内置对象Session对象Application对象Out对象17
从服务器角度看,application对象可以视为一个所有连接服务器的用户共享的数据存取区。如下图所示:Application对象在线用户1在线用户2在线用户N……客户端application数据……网站服务器端application18
对于每一个连接服务器的用户而言,application对象用于存储其共享的数据,且存取的数据内容均相同,可以将其视为传统应用程序中的全局共享数据,具有以下特点:服务器启动后,会自动创建application对象,当用户访问服务器的页面时,这个application对象都是同一个,不能被用户清除;
application对象保存了一个应用系统中公有的数据,为所有用户共享,直至服务器关闭。191、建立application变量除了系统预设的application变量外,可以通过setAttribute()方法建立application变量:
application.setAttribute(“变量名称”,变量内容)
其中,变量内容可以是字符串或其他类型对象。
存取Application对象的数据20
例如:
<%application.setAttribute(“ID”,“123456”);application.setAttribute(“num”,newInteger(3));%>
application对象所创建的变量,可以被站点中的各个网页访问。212、读取application中的变量在添加了application的变量后,可以通过getAttribute()方法来获取变量的数据内容:
application.getAttribute(“变量名称”)
其返回值为Object类型3、获取所有application的变量名
application.getAttributeNames();4、删除application的变量
application.removeAttribute(“变量名”);22(discuss.jsp)<body><%application.setAttribute("disboard",newwebsamp.CommentBoard());%><%request.setCharacterEncoding("UTF8");CommentBoardboard=(CommentBoard)application.getAttribute("disboard");if(request.getParameter("post")!=null){board.add(request.getRemoteAddr()+"说:"+request.getParameter("post"));}for(Strings:board.getComments()){out.print(s+"<br/>");}%><formid="submit"method="POST"action="discuss.jsp"><inputtype="text"name="post"value=""/><inputtype="submit"value="发言"/></form></body>23例:存取application对象数据:(1)在applicationInfo.jsp页面中输入用户信息;(2)applicationData.jsp中读取applicationInfo.jsp页面中的用户信息,并设置application对象的变量,存储用户信息;(3)usingApplication.jsp页面获取application对象中的变量取值。24<body><formmethod=post
action=applicationData.jsp><table><tr><td>输入用户名:</td><td><inputtype=textname=name></td></tr><tr><td>输入性别:</td><td><inputtype=textname=sex></td></tr><trcolspan=2><td><inputtype=submitvalue=提交></td></tr></table></form></body>“applicationInfo.jsp”文件:25运行结果:26“applicationData.jsp”文件:<%@pagelanguage="java"contentType="text/html;charset=gb2312"pageEncoding="gb2312"%><%request.setCharacterEncoding("gb2312");%>…...<body><%Stringname=request.getParameter("name");Stringsex=request.getParameter("sex");application.setAttribute("name",name);application.setAttribute("sex",sex);%><ahref="usingApplication.jsp">显示已设置的application变量数据内容</a></body>添加变量:name,sex27<body><%Objectid=application.getAttribute("name");Objectsex=application.getAttribute("sex");if(id!=null){out.println("姓名:"+id.toString());out.println("<br>");out.println("性别:"+sex.toString());}else{out.println("无application变量数据!!");}%></body>“usingApplication.jsp”文件:获取变量值28运行结果:29运行结果:30运行结果:(关闭所有浏览器,重新启动浏览器,直接运行usingApplication.jsp页面,URL地址:http://localhost:8080/TestWeb/usingApplication.jsp)
因此,可以说明application对象存储了是整个网站服务器应用程序的共享数据。31主要内容JSP内置对象Session对象Application对象Out对象32out对象是javax.servlet.jsp.JspWriter类的对象,它最主要的功能是将特定的数据内容动态输出至客户端的浏览器显示。
(一)数据输出方法
newLine():输出换行;
print():输出数据;
println():输出数据,并换行;
out对象是一个输出流,在向客户端输出数据时,会消耗不少的系统资源。Out对象33
(二)缓冲区操作缓冲区是JSP页面将数据输出至客户端浏览器之前,用来暂时存储数据的区域,该缓冲区提供了一种数据输出的缓冲机制,可以提高数据输出的效率。客户端浏览器服务器缓冲区数据输出数据34out对象中有6个方法:
clear():清空存有数据的缓冲区,缓冲区需要有数据,否则抛出IOException异常;
clearBuffer():清空缓冲区;
flush():清空缓冲区,并输出数据;
getBufferSize():返回缓冲区大小;
getRemaining():返回剩余缓冲区大小;
isAutoFlush():用来设置autoFlush属性(缓冲区满是否自动清空);out对象中缓冲区操作方法:35
例:实现out对象缓冲区的操作
<body><%out.println("JSP程序设计<br>");
out.clearBuffer();out.println("清华出版社<br>");
out.flush();out.println("John编著<br>");out.println("==========<br>");out.println("剩余缓冲区大小:"+out.getRemaining()+"bytes<br>");out.println("预设缓冲区大小:"+out.getBufferSize()+"bytes<br>");out.println("AutoFlush:"+out.isAutoFlush());%></body>清空缓冲区数据清空缓冲区,并输出数据36运行结果:37<body>
<%
out.println("JSP程序设计<br>");
out.clearBuffer();
out.println("清华出版社<br>");
out.flush();
out.println("John编著<br>");
out.println("==========<br>");
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农产品品牌建设资金申请成功案例汇编与分析报告
- 2025年地热能源供暖区域供暖项目经济效益与社会影响评估报告
- 电子借钱合同协议书范本
- 销售团队代理合同协议书
- 瑜伽员工聘用合同协议书
- 汽车正规的定金合同范本
- 济南买车位出租合同范本
- 鸡场养殖合同协议书范本
- 清运渣土车维修合同范本
- 高州市小区物业合同范本
- 地铁车站消防系统
- 北师大版八年级物理上册课件【全册】
- 单位(子单位)工程安全和功能检验资料核查及主要功能抽查记录
- nord stage 2用户手册简体中文版
- 对标学习华为EMT机制
- 2023年医疗质量第二季度分析报告
- SB/T 10439-2007酱腌菜
- GB/T 19016-2021质量管理项目质量管理指南
- 88版干部履历表
- 1IEC62660-1中文电动道路车辆用二次锂离子蓄电池锂离子电池性能试验
- 中国慢性髓性白血病诊疗指南更新
评论
0/150
提交评论