第3章 JSP内置对象-3.1~3.5_第1页
第3章 JSP内置对象-3.1~3.5_第2页
第3章 JSP内置对象-3.1~3.5_第3页
第3章 JSP内置对象-3.1~3.5_第4页
第3章 JSP内置对象-3.1~3.5_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JSP开发案例教程JSP开发案例教程第3章JSP内置对象3.1~3.6节案例ch3.5_login:用户登录05本章内容session对象和Cookie对象0601JSP内置对象概述07案例ch3.7_survey:问卷调查08小结与练习02response对象04out对象03response对象JSP开发案例教程3.1JSP内置对象概述为了方便JSP网页的开发,提高编程效率,JSP规范允许一些常用对象在JSP页面的源代码中能直接使用,而不需要在JSP页面中预先声明和实例化,这些对象称之为JSP内置对象。内置对象也称为隐式对象、预定义变量,JSP内置对象有9个:request、response、out、session、application、pageContext、config、page和exception,其功能和作用域如表3-1所示。它们的作用域不尽相同:其中作用域最小的对象是response、out、pageContext、config、page和exception,他们的作用域为page,在本网页中有效;其次是request,只在本次请求期间有效;session在本次会话中有效;application在本次服务器活动期间有效。3.1JSP内置对象概述内置对象功能说明衍生类作用域request请求对象,取得浏览器数据及服务器系统的信息javax.servlet.ServletRequestrequestresponse响应对象,响应浏览器时的相关信息和操作javax.servlet.ServletResponsepageout输出对象,控制数据输出的操作javax.servlet.jsp.JspWriterpagesession会话对象,记录与处理上线者的个别数据javax.servlet.http.HttpSessionSessionapplication应用程序对象,记录与处理上线者共享的数据javax.servlet.ServletContextapplicationpageContext页面上下文对象,提供对JSP页面所有对象以及命名空间的访问javax.servlet.jsp.PageContextpagepage页面对象,代表目前的这个JSP网页对象javax.lang.Objectpageconfig配置对象,取得JSP编译后的Servlet信息javax.servlet.ServletConfigpageexception异常对象,异常处理机制javax.lang.Throwablepage表3-1JSP的9个内置对象3.1JSP内置对象概述JSP开发案例教程3.2request对象request对象记录了浏览器的请求信息,主要用于服务器接收浏览器传送到服务器的数据(包括头信息、系统信息、请求方式以及请求参数等),也可用于在服务器中运行的页面或程序之间传递数据。request对象的作用域为在本次请求期间有效。request对象是javax.servlet.http.HttpServletRequest类的实例。每当浏览器向服务器请求一个JSP页面时,JSP引擎就会创建一个新的request对象来代表这个请求。request对象提供了一系列方法来获取输入的控件名及其值、地址栏传递的参数、Cookies、HTTP头信息、HTTP方法等。3.2request对象序号方法说明1StringgetParameter(Stringname)返回此request中参数name对应的值,若不存在则返回null。常用于获取表单控件的值,或获取URL参数的值2String[]getParameterValues(Stringname)返回属性名为name的所有值的字符串数组,若不存在则返回null3ObjectgetAttribute(Stringname)返回属性名为name的值,如果不存在则返回null4voidsetAttribute(Stringname,Objectobj)为属性名为name的属性设值5HttpSessiongetSession()返回request对应的session对象,如果没有,则创建一个6Cookie[]getCookies()返回浏览器所有的Cookie的对象数组7voidgetRequestDispatcher(Stringpath)

.forward(request,response)请求的转发。服务器在执行当前文件的过程中转向目标网页或程序path,同时将request对象和response对象传递过去8StringgetQueryString()返回此requestURL包含的查询字符串9EnumerationgetParameterNames()返回请求中所有参数名的集合10EnumerationgetHeaderNames()返回所有HTTP头的名称集合11LocalegetLocale()返回当前页的Locale对象,可以在response中设置12StringgetHeader(Stringname)返回name指定的信息头13StringgetContextPath()返回requestURI中指明的上下文路径14StringgetServletPath()返回所请求的Servlet路径15StringgetPathInfo()返回任何额外的与此requestURL相关的路径16StringgetMethod()返回此request中的HTTP方法,如GET、POST或PUT17StringgetRequestURI()返回request的URI18StringgetRemoteAddr()返回浏览器的IP地址19intgetServerPort()返回服务器端口号表3-2request对象的部分方法3.2request对象JSP开发案例教程3.3response对象response对象代表了服务器向浏览器返回的信息发送文件数据流输出文字等内容12设置响应头发送网页重定向343.2response对象序号方法描述1voidsendRedirect(Stringpath)使用指定的URL向浏览器发送一个临时的间接响应,浏览器接收到请求后实现网页跳转,即重定向2voidaddCookie(Cookiecookie)添加指定的cookie对象至响应中3voidsetCharacterEncoding(Stringcharset)设置响应的编码集(MIME字符集),例如UTF-84voidsetContentType(Stringtype)设置响应的内容的类型和编码集,如果响应还未被提交的话5StringencodeRedirectURL(Stringurl)对sendRedirect()方法使用的URL进行编码6StringencodeURL(Stringurl)将URL编码,回传包含SessionID的URL7booleancontainsHeader(Stringname)返回指定的响应头是否存在8booleanisCommitted()返回响应是否已经提交到浏览器9voidaddDateHeader(Stringname,longdate)添加指定名称的响应头和日期值10voidaddHeader(Stringname,Stringvalue)添加指定名称的响应头和值11voidaddIntHeader(Stringname,intvalue)添加指定名称的响应头和int值12voidsetBufferSize(intsize)设置响应体的缓存区大小13voidflushBuffer()将任何缓存中的内容写入浏览器14voidresetBuffer()清除基本的缓存数据,不包括响应头和状态码15voidreset()清除任何缓存中的任何数据,包括状态码和各种响应头16voidsendError(intsc)使用指定的状态码向浏览器发送一个出错响应,然后清除缓存17voidsendError(intsc,Stringmsg)使用指定的状态码和消息向浏览器发送一个出错响应18voidsetContentLength(intlen)指定HTTPServlet中响应的内容的长度,此方法用来设置HTTPContent-Length信息头19voidsetDateHeader(Stringname,longdate)使用指定名称和值设置响应头的名称和内容20voidsetHeader(Stringname,Stringvalue)使用指定名称和值设置响应头的名称和内容21voidsetIntHeader(Stringname,intvalue)指定int类型的值到name标头22voidsetLocale(Localeloc)设置响应的语言环境,如果响应尚未被提交的话23voidsetStatus(intsc)设置响应的状态码表3-3response对象的部分方法response响应对象主要将JSP容器(Servlet)处理后的结果传回给浏览器。response对象是javax.servlet.ServletResponse类的实例。3.2response对象转发(forward),即调用request.getRequestDispatcher(Stringpath).forward(request,response)方法,转发是发生在服务器端的行为,归属于浏览器向服务器发起的同一次请求,request不会丢失,地址栏的URL地址不会改变。重定向(redirect)转发(forward)重定向(redirect),即调用response.sendRedirect(Stringpath)方法,可以将网页重定向到另一个页面。

重定向操作中的path用于指定目标路径,可以是相对路径,也可以是不同主机的其他URL地址。重定向时,服务器将新地址发送给浏览器,浏览器将会把新地址显示在地址栏,并向服务器重新发起请求。3.2response对象执行redirect后,地址栏URL改为重定向的目标URL,相当于在浏览器地址栏里输入新的URL后按“Enter”键;而执行forward后,地址栏里的请求URL不会改变。redirect是发生在浏览器的跳转,速度稍慢;而forward是发生在服务器端的跳转,速度极快。redirect可以跳转到本Web应用之外的网站,而forward不能。执行redirect后生成第二次请求,而执行forward后依然是上一次请求。在redirect之后的目标页面中不能访问原请求的请求参数,因为是第二次请求了,所有原请求的请求参数、request范围的属性等将全部丢失;而forward的目标页面可以访问原请求的请求参数,可以看成时同一次请求,所有原请求的请求参数、request范围的属性全部存在。重定向(redirect)通常应用在需要实现网页跳转,且对于在本网页中已生成的request作用域的对象,在后续的页面中不再需要的场合;而转发(forward)通常应用在需要实现网页跳转,且对于在本网页中已生成的request作用域的对象,在后续的页面中仍然需要的场合。重定向与转发两者之间的相同之处是:能实现网页跳转,以在浏览器上展示新的网页内容。重定向与转发两者之间的区别是:3.2response对象JSP开发案例教程3.4out对象out对象是javax.servlet.jsp.JspWriter的一个实例。可用其print()方法向response对象输出内容out对象用来在response对象中写入内容,具有page页面作用域表3-4out对象的部分方法序号方法说明1voidprint/println(基本数据类型)输出一个基本数据类型的值2voidprint/println(Objectibj)输出一个对象的引用地址3voidprint/println(Stringstr)输出一个字符串的值4voidnewLine()输出一个换行符5voidclear()清除输出缓冲区的内容。若缓冲区为空,则产生IOException异常6voidclearBuffer()清除输出缓冲区的内容。若缓冲区为空,无异常出现7voidflush()直接将目前暂存于缓冲区的数据刷新输出8voidclose()关闭输出流。流一旦被关闭,则不能再使用out对象做任何操作9intgetBufferSize()获取目前缓冲区的大小(KB)10intgetRemaining()获取目前使用后还剩下的缓冲区大小(KB)3.3out对象println()输出字符和换行符。但此换行符是\n,在浏览器网页的源代码或控制台会实现换行,但在页面预览时,这种在浏览器网页的源代码中的换行将被忽略,所以在页面浏览时看到的仍然在一行,只是用空格分隔。所以,如果在页面上需要换行时,可在要输出的内容之后附加上“<br>”。out.print()out.println()print()在页面输出字符,输出的字符将接在之前已有的字符之后。3.3out对象out.write()则是java.io.Writer类中定义的方法,其中javax.servlet.jsp.JspWriter继承了java.io.Writer类。write()方法只能输出字符、字符数组和字符串等与字符相关的数据。out.print()out.println()out.print()和out.println()是javax.servlet.jsp.JspWriter类中定义的方法。print()和println()方法可将各种类型的数据转换成字符串的形式输出。注:如果字符串对象的值为null,print()和println()方法将输出内容为“null”的字符串,而write()方法则是抛出NullPointerException异常。所以在JSP编程中,print()和println()方法用得更多。3.3out对象JSP开发案例教程3.5案例ch3.5_login:用户登录应用表单和JSP内置对象,实现用户登录功能包含3个页面:用户登录页index.jsp,登录验证页loginCheck.jsp和用户功能页main.jsp。页面的测试效果如图3-1至3-4所示,在控制台Console中的输出如图3-5所示,项目的文件列表如图3-6所示。图3-1用户登录图3-2登录失败图3-3登录成功,URL重定向到用户功能页案例:3.5案例ch3.5_login:用户登录

图3-6项目文件列表图3-4登录成功,在服务器端转发到用户功能页图3-5控制台中的输出3.5案例ch3.5_login:用户登录新建Web项目ch3.5_login,然后在webapp目录中新建网页index.jsp并在网页中添加代码,其主要代码如下:图3-1用户登录表单form的action属性值,指明了由谁来处理提交的表单及其控件的值。动作action的值可以是jsp页面,也可以是Servlet(本书在第6章将会介绍它),或是Web应用框架指定的行为(在利用Struts或Spring框架开发JSP的方式中会涉及),甚至可以是其他网站上的程序3.5案例ch3.5_login:用户登录表单的提交方式method属性,通常有post和get两种取值:用get方式提交时,表单中的控件名称和值,将以参数的形式,放在URL中提交给服务器,以获取服务器返回的内容。例如用百度搜索引擎搜索时,所提交的搜索文字将放在地址栏中提交,用户可以看到参数名称及参数的值。get方式是表单form默认的提交方式。用POST方式提交时,表单中的控件名称和值,将以隐藏的形式由浏览器推送给服务器,服务器接收信息并处理后返回网页内容给浏览器。此时,地址栏中不会出现控件名称和值等参数,这对于输入密码等敏感信息,或者控件数量比较多、值的内容比较长的情况,会非常有利。另外,对于提交文件的表单,必须使用POST方式,且还需设定相应的编码方式enctype,这在本书第4章有介绍。3.5案例ch3.5_login:用户登录将网页index.jsp另存为loginCheck.jsp,修改其代码,主要代码如下。网页的测试效果在登录失败时如图3-2所示。图3-2登录失败第17~18行,从request对象中获取所输入的值,其中的username和password都是控件的名称name。第19行,从URL参数中获取值也是用这个方法request.getParameter(name)。第21行的判断if(username==null||password==null)成立,则表示名称为username或password的属性在对应的在request对象中不存在,所以值为空对象null。在值为空对象null的情况下,此处的程序无须再往下执行,用代码第23所写的break而退出循环,否则运行第25行代码会报错(空对象null不许调用其方法)3.5案例ch3.5_login:用户登录将网页loginCheck.jsp另存为main.jsp,将网页标题title和页面中的h3标题都更改为“用户功能”,删除中间的第20~50行的for循环代码,从第19行开始增加如下代码。测试用户登录,当用户“tom”登录成功时如图3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论