免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSP内置对象,有些对象不同声明就可以在JSP页面的脚本部分使用,这就是JSP的内置对象。JSP的内置对象有:requestresponsesessionapplicationoutrequest和response对象是JSP较重要的两个内置对象,这两个对象提供了对服务器和浏览器通信方法的控制。讨论这两个对象前,要先对HTTP协议WordWideWeb底层协议作简单介绍。使用浏览器从网站获取HTML页面时,实际上在使用HTTP协议。HTTP协议规定了信息在Internet上的传输方法,特别规定了浏览器与服务器的交互方法。从网站获取页面时,浏览器在网站上打开了一个对网络服务器的连接,并发出请求。服务器收到请求后回应,所以HTTP协议被称作“请求和响应”协议。,浏览器请求具有某种结构,http请求中包括一个请求行、头域和可能的信息体。最普通的请求类型时对页面的一个简单请求,如下例:GET/hello.htmHTTP/1.1Host:这是对网站上hello.htm页面的HTTP请求的例子。首行是请求行,规定了请求的方法、请求的资源及使用的HTTP协议的版本。此例中,请求的方法是GET方法,此方法用于获取特定的资源。其他的请求方法包括postheaddeletetrace及put方法等。此例中的第二行是头(header)。Host头规定了网站上hello.htm文件的Internet地址,此例中,主机是,一个典型请求通常包含许多头,被称做请求的http头,头提供了关于信息体的附加信息及请求的来源。其中有些头是标准的,有些和特定的浏览器有关。一个请求还可能包含信息体,例如,信息体可包含html表单的内容。在html表单上单击submit按钮时,该表单使用action=“post”或action=“get”特征,输入表单的内容都被发送到服务器上,该表单内容就由post方法或get方法在请求的信息体中发送。服务器在收到请求时,返回http响应。响应也有某种结构,每个响应都由状态行开始,可以包含几个头及可能的信息体,被称作响应的http头和响应信息体。这些头和信息体由服务器送给客户的浏览器。信息体就是客户请求的网页的运行结果,对于JSP页面,就是页面的静态信息。状态行说明了正在使用的协议、状态代码及文本信息。,一、request对象,HTTP通信协议是客户与服务器之间的一种提交(请求)信息与相应信息(request/response)的通信协议。在JSP中,内置对象request封装了用户提交的信息,那么对该对象调用相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。客户通常使用HTML表单向服务器的某个JSP页面提交信息,表单的一般格式是:提交手段,一、request对象,其中是表单标签,提交手段包括通过文本框、列表、文本区域等。通过下面方法来获取这些信息:request.getParameter(“控件名”);1.获取表单提交信息2.处理汉字信息当用request对象获取客户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊的处理方式。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串即可。,一、request对象,Stringstr=request.getParameter(“girl”);byteb=str.getBytes(“ISO-8859-1”);str=newString(b);通过上述过程,提交的任何信息(无论是汉字字符或西欧字符)都能正确地显示。例如:Example3_3,一、request对象,3.常用方法举例当客户访问一个页面时,会提交一个HTTP请求给服务器的JSP引擎,这个请求包括一个请求行、http头和信息体,例如:post/tree2.jsp/HTTP.1.1host:localhost:8080accept-encoding:gzip,deflate首行叫做请求行,规定了向访问的页面请求提交信息的方式,如post、get等方式,以及请求的页面的文件名字和使用的通信协议。,一、request对象,第2、3行分别是两个头(header),其中host、accept-encoding被称为头名字,而localhost:8080以及gzip、deflate分别是他们的值,这里host的值tree2.jsp的地址。可以使用JSP引擎的内置对象来获取客户提交的信息,说明如下:(1)getProtocol()获取客户向服务器提交信息所使用的通信协议,例如http/1.1(2)getServletPath()获取客户请求的JSP页面文件的目录(3)getContentLength()获取客户提交的整个信息的长度。,一、request对象,(4)getMethod()获取客户提交信息的方式,比如post或get(5)getHeader(Strings)获取http头文件中由参数s指定的头名字的值,一般来说s参数可取的头名有accept、refer、accept-language、content-type、accept-encoding、user-agent、host、content-length、connection、cookie等,比如s取值user-agent将获取客户的浏览器的版本号等信息。(6)getHeaderNames()获取头名字的一个枚举。(7)getHeaders(Strings)获取头文件中指定头名字的全部值得一个枚举。(8)getRemoteAddr()获取客户的IP地址。,一、request对象,(9)getServerName()获取服务器的名称。(10)getServerPort()获取服务器的端口号。(11)getParameterNames()获取客户提交的信息体部分中name参数值的一个枚举。例如:Example3_4.jsptree2.jsp,二、response对象,当客户访问一个服务器的页面时,会提交一个HTTP请求,服务器收到请求时,返回HTTP响应。响应和请求类似,也有某种结构,每个响应都由状态行开始,可以包含几个头及可能的信息体(网页的结果输出部分)。1.动态响应contentType属性当一个客户请求访问一个JSP页面时,如果该页面用page指令设置页面的contentType属性值是text/html那么JSP引擎就按照这种属性值做出响应,将页面的静态部分返回给客户。由于page指令只能为contentType指定一个值,用来决定相应的MIME类型,如果想动态地改变这个属性的值来相应客户,就需要使用response对象的setContentType(Strings)方法来改变contentType的属性值。,二、response对象,publicvoidsetContentType(Strings)S的取值可以是text/html、text/plain、application/x-msexcel、application/msword例如:Example3_10.jsp,二、response对象,2.Response的HTTP文件头Response对象可以使用方法addHeader(Stringhead,Stringvalue);或方法setHeader(Stringhead,Stringvalue);动态地添加新的响应头和头的值,并将这些头发送给客户的浏览器。如果添加的头已经存在,则先前的头被覆盖。例如:Example3_12.jsp,二、response对象,3.response重定向在某些情况下,当响应客户时,需要将客户重新引导至另一个页面。例如,如果客户输入的表单信息不完整,就会再被引导到该表单的输入页面。可以使用下面的方法:response.sendRedirect(URLurl)例如:Example3_13.jsptree4.jsp,二、response对象,4.Response的状态行当服务器对客户请求进行响应时,它发送的首行被称做状态行。状态行包括3位数字的状态代码和对状态代码的描述(称作原因短语)。见p65(表3.1),三、session对象,HTTP协议是一种无状态协议。一个客户向服务器发出请求(request),然后服务器返回响应(response),连接就被关闭了。在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有以前的连接信息了,同时,无法判断这一次连接和以前的连接是否属于同一客户。因此,必须使用会话记录有关连接的信息。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称作一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面串之间反复连接、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种办法知道这是同一客户,这就需要session(会话)对象。,三、session对象,1.Session对象的Id当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,这个session对象调用相应的方法可以存储客户在访问各个页面期间提交的各种信息,比如:姓名、号码等信息。这个session对象被分配一个String类型的Id号,JSP引擎同时将这个Id号发送到客户端,存放在客户的Cookie中。这样,session对象和客户之间建立起一一对应关系。,三、session对象,例如:session.jsptom.jspjerry.jsp在上面的例子中,客户在服务器的三个页面之间进行连接,只要不关闭浏览器,三个页面的session对象是完全相同的。客户首先访问session.jsp页面,从这个页面再连接到tom.jsp页面,然后从tom.jsp再连接到jerry.jsp页面。,三、session对象,2.Session对象与URL重写session对象能和客户建立起一一对应关系依赖于客户的浏览器是否支持Cookie。如果客户端不支持Cookie,那么客户在不同网页之间的session对象可能是互不相同的,因为服务器无法将Id存放到客户端,就不能建立session对象和客户的一一对应关系。如果客户的浏览器不支持Cookie,可以通过URL重写来实现session对象的唯一性,所谓URL重写,就是当客户从一个页面重新连接到一个页面时,通过向这个新的URL添加参数,把session对象的Id传带过去,这样就可以保障客户在该网站各个页面中的session对象是完全相同的。,三、session对象,Stringstr=response.encodeRedirectURL(“jerry.jsp”);3.Session对象的常用方法(1)publicvoidsetAttribute(Stringkey,Objectobj)session对象类似于散列表,session对象可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象指定了一个索引关键字,如果添加的两个对象的关键字相同,则先前添加的对象被清除。(2)publicObjectgetAttribute(Stringkey)获取session对象中含有关键字是key的对象,由于任何对象都可以添加到session对象中,因此用该方法取回对象时,应强制转化为原来的类型。,三、session对象,(3)publicEnumerationgetAttributeNames()session对象调用该方法产生一个枚举对象,该枚举对象使用nextElements()方法遍历session对象中所有对象。(4)publiclonggetCreationTime()session对象调用该方法可以获取该对象创建的时间,单位时间是毫秒。(5)publiclonggetLastAccessedTime()获取当前session对象最后一次被操作的时间,单位是毫秒。(6)publicintgetMaxInactiveIterval()设置session对象的生存时间,三、session对象,(7)publicvoidsetMaxInactiveIterval(intn)设置session对象的生存时间(8)publicvoidremoveAttribute(Stringkey)从当前session对象中删除关键字是key的对象(9)publicStringgetId()获取session对象的编号(10)publicvoidinvalidate()使得session无效例如:Example3_17.jspfirst.jspaccount.jsp,三、session对象,从Example3_17.jsp中得到boy的值,然后将之保存到session对象中,关键字为name.String姓名=(String)session.getAttribute(name);通过session对象得到被保存的关键字为name的变量,并将之输出。4.计数器,四、application对象,不同客户的session对象是互不相同的,与session对象不同的是application对象对所有客户来说都是相同的。1.Application对象的常用方法(1)voidsetAttribute(Stringkey,Objectobj)(2)ObjectgetAttribute()(3)EnumerationgetAttributeNames()(4)voidremouveAttribute(Stringkey)(5)StringgetServletInf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高端制造业高端装备制造技术创新研究报告及未来发展趋势预测
- 2025年云安全防护编程程序员编程能力考核试卷
- 2025金融法规应用能力测试考核试卷
- 2025年风电项目合同谈判技巧与策略考核试卷
- 2025年伊春嘉荫县招聘公益性岗位人员85人考试笔试备考试题及答案解析
- 2025国家电投集团国核铀业社会招聘22人笔试考试参考试题及答案解析
- 2025内蒙古阿拉善左旗引进成熟型人才10人笔试考试备考试题及答案解析
- 2025上海生命科学研究院生物化学与细胞生物学研究所分子细胞卓越中心丛尧研究组招聘博士后2人考试笔试备考题库及答案解析
- 2025年鸡西市体育彩票管理中心编制外合同制人员招聘1人笔试考试参考题库及答案解析
- 2025年南平市数字产业发展有限公司正式员工招聘7人笔试考试参考题库及答案解析
- 2025年短视频创意策划合同协议
- 老年人运动系统
- 《干部履历表》1999版电子版
- 2023版个人征信模板简版(可编辑-带水印)
- (新教材)教科版四年级上册科学全册课时练(同步练习)(共24课)
- 工程结算表格实用文档
- 10以内加减法练习题-直接打印版
- 德语智慧树知到答案章节测试2023年西安理工大学
- 2023医院招聘护士考试试题及参考答案
- 商标法课件新
- 消防设施操作员报名承诺书
评论
0/150
提交评论