面向对象程序设计语言-讲义第8章-4javaweb应用开发jsp技术_第1页
面向对象程序设计语言-讲义第8章-4javaweb应用开发jsp技术_第2页
面向对象程序设计语言-讲义第8章-4javaweb应用开发jsp技术_第3页
面向对象程序设计语言-讲义第8章-4javaweb应用开发jsp技术_第4页
面向对象程序设计语言-讲义第8章-4javaweb应用开发jsp技术_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

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

文档简介

概JSP(JavaServerPages)是一种与ASP、P类似的Web开发语言,它能快速地创建和显示Web页面的动态内容。JSPWeb提供了一个简捷而快速的方法。JSP技术的设计目的是使得构造基于Web的应用程序更加19996月推出的新技术,该技术由Sun公司Java的Web动态页面技术。JS19996月推出的新技术,该技术由Sun公司Java的Web动态页面技术。JSP秉承了JavaWeb服务器无关,是一种与平台无关的技术。 据Sun公司讲,JSP85%的WebApache、IS、Netscape等最常用的Web服务器。 简单来说,JSP是一种服务器 语(ServerSideScript)。提起程序语言,典型代表是Basic、C/C++、Java等等,这些语言通 JSP也是一种语言,它包装了JavaServlet系统的界面,简化Java和Servlet的使用难度,同时通过扩展JSP(Tag)提供了网页动态执行的能力。JSPJava和ServletJSPJSPJava和ServletJSP上可以直接书写JavaJSPServletJSPWeb服务器(WebServer)上执行,并将执行结果输出到客户端(Client)浏览器,基JSPJSP技术在多个方面加速了动态Web页面的使用JSP技术,Web页面开发 或者XML标识来设计和格式化最终页面。使用JSP标识或者 来生成页面上的动态内容(内容书的价格)。生成内容的代码被封装在Servlet和JavaBean组件中,并且结合在 HTMLWeb JSPJSP标识和程序,生成所请求的内容(例如,通过JavaBeanJDBCHTMLWeb JSP技术封装了许多功能: 和实例化JavaBean Applet以及执 此外,JSP技术可以通过开发定制的标识库进行扩展。因此,第开发和其他可以为常用功能创建自己的标识库。这使得Web页面开发的组件来工作。JSP不仅能生成HTML,而且能产在无线上网变得越来越流行的情况下,JSP甚至可以用来生成无线标识语言(WML),来实现手提 现在流行的制现在流行的制页的语言主要有ASP,PHP和JSP,它们之间互有优ASP ASP的开发在短时间流行全球,风靡一时。但是它的一个重要缺点是只能运行在微软公司的Windows制作语言之一。它还借助于C++的形式, Sina、ChinaRen的开发,主要 级执行的通病。Sun公司借助自己 JSP的页面结构与运行机JSPJSPJSP页面的结JSP的运行机JSP页面看上去像标准的HTML页面,并附JSP引擎能够处理和解析执行的代码与组件。通常, 通常来说,JSPJSP页面结 除JSP以外,包括了JSP的所有其它语法JSP页面的结JSP的运行机JSP一个JSP2JSP引擎进一步将该java源文件编译成class字节码Servlet字节码进行3Servlet字节码进行 字节码存放在Tomcat安装 6.0\work\Catalina\localhost\ex8-7\org\apaches”“FirstPage_s.class (该包是JSPAPI),其它两个类的Date和了or.a了or.aache.aser.runtime.HttJsBase类, (1)publicvoid(2)publicvoid该方法执行时,会自动调用JSPAPI中定义的(2)publicvoidjavax.servlet.http.HttpServletResponseresponse)throwsjavax.servlet.ServletException, e. 的注释转换来的的注释转换来的JSP运行 JSP的页面结构与运行机JSPJSPJSP JSP JSP “XML”语法的JSP元素一般来说都有一个包含有元素项,和一个结束标志。当然,JSP JSP JSP JSPJSPJSP指令(directive)的作用是告知服务器如JSP页面,以指示服务器将JSPServletJSP指令用“<%@”和“%>”标记封闭,语<%@指令名指令属性=“JSPJSPServlet 实现的接口、Servlet扩展的类、Servlet导入JSPJSPServletPageJSPPageimport属importPage指令的基本语法格式如page_directive_attr_list::={language="{extends="{import="{contentType="ctinfo"{contentType="ctinfo"{isThreadSafe="true|false"{info="info_text"{errorPage="error_url"language=extends=extends=extendsJSP页面产生的servlet的父import=“package.*,例如:例如:<%@page同样,它总是被放在JSPimport变量session=“true|sessiontrue,表示当前页面中将会话是HTTPHTTP决定输出流(out对象)是否需要缓冲,缺省值是8kbautoFlush一起决定输出流(out对象)是否需要缓冲,缺省值是8kbautoFlush一起使这个属性的最简单的值 none,在这种情况下,没有任缓冲区,所有输出都被直接输出该属性值还可以是以千字节为单位的缓冲区大小。 大小被指定时,页 何处理取决于autoFlush属性的值。autoFlush=“true|确定是否自动刷新输如果该属性的值为“true”,缓冲区在每次满时都被如果该属性的值为“false”,则当缓冲区溢出时增加小如果设置buffer="none"而且autoFlush="false生一个错误isThreadSafe=“true|isThreadSafeJSPtrue”,则通知容器,它可true”,则通知容器,它可 true”true”true”info=“text”,例如:pagecontentType="text/html;

info="此网页将示范网页指令中,page<TITLE>info<FONTSIZE5COLORBLUE>info属性的使用<!--下面的语句将取得网页指令所设置的info<%getSrvletInfo()在实际应用中不必将这样的信息包含在Web页面中。但是,有可能会将这些信息写入日志。<%getSrvletInfo()ErrorPage=“pathToErrorJSPJSP径处理例外的那个JSP处理例外的那个JSP文件要把isErrorPage设成trueisErrorPage=“true|<%@pageinfo="BadPage"<%@pageinfo="BadPage"<%@pageerrorPage="errorpage.jsp"<title>PageWith<%booleantf=if(tf){Stringinfo=thrownewException("Exceptionin"+info);处理错误的页面<%@pageisErrorPage="true"<h1>ERROR!!</h1><h2><%=exception.getMessage()</h2>Exception没有catch语句,Exception对象被传送到errorpage.jsp,该页被设计为errorPage。ContentType=“text/HTML;charset=ISO-8859-ContentType=“text/HTML;charset=ISO-8859-或contentType=“text/html;JSPHTMLISO-8859-1,contentType属ISO-8859-1,contentType属 使用errorPage属性和isErrorPage属性跳转至 误显示出来,以便根据500出错的具体原因,再 <%@includefile=在这个指令中应该使例例<%@pagecontentType="text/html;charset=GB2312"<TITLE>include指令的使用<FONTSIZE5COLORBLUE>include指令的使用<!--下面的语句将载入heading.inc<!--下面的语句将载入heading.inc<%@includefile="heading.inc"JSP引擎可解释的标识集合可以进行扩展,它可以包含有自义的自定义标识。这样的集合被称为“taglib指令用于指明当前页面中使用了自定义的,并告诉JSP引擎在编译JSP页面时,到哪里能找到这些的定义。同时为避免自定义重名,还指明的前缀,保证了在编译JSP页面时能惟一地识别出它使用的。基础语<%@tagliburi="tagLibraryURI"prefix="tagPrefix" <%@taglib /supertags"prefix="myPrefix"<myPrefix</myPrefix<%@taglib%>指令 此JSP文件使用了自定义的标 其实等于JSP元素。JSP元素是JSP语法的一部分,和XML一样有开始标识和结束标第一种是标准动作,它定义的是无论在什么版本的JSP擎或Web服务器下总是可用的动第二种是自定义动作,它通过使用taglib指令来实JSP:useBean:用 对一个JavaBean组件实例的使用JSP:setProperty:用于在组件的实例中设置一个JSP:getPropertyJSP:setProperty:用于在组件的实例中设置一个JSP:getProperty将其转化为字符串,并且将它放入隐含对象“out”除此外还有JSP:include,JSP:forward,JSP:plugin等标 【例8.8】JSP指令的使用本例由三个JSP页面组成MainPage.jsp为主页面,其page指令指定了由ErrorPage.jsp–Included.jsp页面包括进来,完成页面的–Included.jsp页面包括进来,完成页面的显示,如果有请数,则模拟抛出一个异常,交由ErrorPage.jsp页面处IcldedjSe接rIaiisErrorPage属性被指定为true。该页面中的操isErrorPage属性被指定为true。该页面中的操作一个是显示出page指令中指定的info信–注意:ErrorPage.jsp页面不受MainPage.jsp页面page指令的影响,它获得的info信息为“JasperJSP2.1Engine”,这是页面缺省者向后者发请求)JSP JSP JSPJSP 用于定义合法的变量和方法。与任何语言相同,JSP语言使用变量来保存数据。这些变量用declaration元素 当页面被初始化的时候,JSP页面中的所有 <%!inti=1;<%!inta,b,c;<%!PointP=new在当页面被初始化的时候,JSP页中的所有都被初始化。在初始化之后,的变量能在编程语除了简单的变量,方法也能被,例如<%!publicStringf(inti)if}不对当前输 的变量和方法用“<%!”和“%>”标记封在JSP程序中的所有变量和方法在使用前都必 的变和方法,不需要在对它们重新进 一 仅在一个页面中有效。如果想在每个页面中共用 ,可以把它们单独写成一个文件,然后用<%@ 它们都include了,那么就会发生错误了。 SJaaJSP面应Sre,在内多浏包不的器浏在 , 的同r例,JSP中 客端共。因个 值后的 到是改的。属性(成员变量)<%@pagecontentType="text/html;charset=GB2312"inti=voidchagevalue(int{i=}<FONTSIZE5COLORBLUE调用函数前,<Fontcolorred>iintinput10; 调用函数后,<Font调用函数后,<Fontcolorred>i静态属性定义的实例(//定义静态属staticinti=<TITLE>静态属性的使<TITLE>静态属性的使用<FONTSIZE5COLORBLUE>静态属性的使用<%i++;除非重新启服务器,否则i<Fontcolor=red>i除非重新启服务器,否则i<%@pagecontentType="text/html;charset=GB2312"doubleCircleArea(double{doublePI3.1415926 returnPI*Radius*Radius;<FONTSIZE5COLORBLUE>doubleArea=for(inti=1;i<=5;{<FONTCOLOR=BLUE><%=i<FONTCOLOR=}JSP JSP JSPJSP表达式的作用向客户端输出结果,用“<%=”和“%>”标记封闭。语法为:<%=Java字面量|已赋值的Java变量|具有返回值的java表达式 out.print(Java字面量|已赋值的Java变量|具有返回值的java表达式 <%=5<%=x+y<%=<%=(newjava.util.Date()).toString() (不以“;”结束) JSP JSP JSP

<% 编译JSP页面时,“<%”和“%>”中间的内容被原样地转换到Servlet的_jspService()方法中,因此,其中的变量和方法仅在_jspService()在代码段中的变量和方法是局部变量和不是所有的服务器都支持在程序段中的,有的服务器不支持,还有的服务器要求在的同时必用“%\>”代替必须记住,一个JSP页中的所有程序段在连接中Java用“%\>”代替用“<\%”代正如Java源代码中允许将较长语句分成多行,对于较长的Java语句也可以写到几个JSP <%%>标记内,前提是这些JSP代码段的 if(authorif(author!=null)out.write();}作者:<%=author%><br<%if(title!=null)<%if(author!=null)

if(title!=null){}(2)if(title!=nullif(title!=null)}if(author!=null)>"}<%if(title!=null)}if(author!=null)>"}JSP JSP JSP JSP:显式注释在JSP页面的代码中可见,它由JSP将处理后的注释发往HTML(显式注释<!--说明性文字 |JSP表达式|JSP程序段]--这种注释与HTML果其中以在注释中任意加入JSP表达式,只要这个表达式是合法 <!--其他注释内容intout.rintintout.rint %>-- 本页加载时间:FriJul1315:53:08CST2012 隐式释--容通过这种方法加入的注JSP下面是JSP本身的注释语法的例JSP–T”实际上,由于在JSP的“代码”部分中,”*这是一个Scriptlet中的注释* **这也是一个Scriptlet中的注释,可 JSP<!--ThisisaHTML<!--ThisisaHTMLcomment--<%@page<title>ACommentSamle!<<h3><center>AComment<%--ThisisaJSPcomment--我们可以看到,HTML我们可以看到,HTMLJSPJSP JSP JSPJSP在JSP页面中,用符合XML规范的来指示页面执行某种动作,这些称为动作。一类是标准动作,由JSP规范中定义, 动作用于执行影响输出的文本流,使用、编辑、建立常用的JSP标准动 用于引入一个静态或动态的页面到一个JSP文件<jsp:include>动作可以包含一个或几JSPparam<jsp:includepage=“url”<jsp:includepage=“url”或<jsp:includepage=“url”若用<jsp:paramname=“..”value=“…”/>传参数时request.getParameter()获得与<%@includeinclude编译指令是在JSP程序的转换时期时就file译载入,file所指定的JSP程序并不会被单独编include动态的编译载入,而page所指定的JSP程序会被个别的编译转换成另一个Servlet类。这就提高严格地说,<jsp:includeinclude()的响应会并入include()的响应会并入已有的<jsp:forward> saram本例包括两个JSP页DispatcherDemo.jsp是对DispatcherDemo.java的改 JSP的页面结构与运行机JSPJSPJSPJSP基于Java语言,面向对象也是它的一大 组件对象。可以说,对象是JSP编程技术的

aapiaoSrltoteapplication对象是一个很重要的一些公用的数每个Web应用程序有一个application对象,application对象是容请求Web页的全部用户可请求Web页的全部用户可以共量application对象的作用域为整个Web程序。一旦创建,它就会持由 在 对象中的数值可以被应用程序的所有用,所以application applicationsetAttribute(Stringname,Object用object来初始化某个属性,该属性由name指返回由name返回由name指定名字的application对象属性的值,这是Object返回所有applicationEnumeration(枚举)getInitParameter(String返回application这个属性的初始值,此属性由name获得获得当前版本Servlet例<%@pagecontentType="text/html;charset=GB2312"<FONTSIZE5COLORblue>application变量的使用ObjectobjObjectobj=intNum=if(strNum!=null)",));//=<Font<Fontcolor=red><%=Numsession对象被定义成HttpSession类型,封装 用户在Web应用程序中 之间跳转时, 在session对象中的变量也不会清除,当然也可以使用session方法显式session对象需要与page指令配合使<%@page<%@pagepaeesioesioeo如果当page指令中的session属性设为false,JSP不过,可以使用request对象的etSession 提供不过,可以使用request对象的etSession session法法 回 起至今的毫秒获得session对象的生存时间,默认为30分钟 每生成一session对象,服务器都会给其一个不会返回session对象中 的第一个属性对象,结果集返回该session对象创建的时间,以毫秒计,从重复 ,此方法返回当前sessionSession%@pagecontentType="text/html;<FONTSIZE5COLORblue>session变量的使用intNum=Objectobj=//从session对象取得Numif(obj=={//设定session//设定session对象的Num}{Num=//取得session对象中的Num//设定session对象的Num}=<Fontcolor=red><%=Numrequest对象是HttpServletRequest类我们可以通过这个对象来取得有关客户端的请求信息。JSP网页时,JSP引擎会将客户端的request对象中,请求信息的内容包括请求的头标(Header)、信息(如浏览器的版本信息、语言和编码方式等)、请求的方式(如HTTP方法:GET、我们可以通过这个对象来取得有关客户端的请求信息。 返回客户端 对象,结果是一 数(小甜饼 技术首次出现在NetscapeNavigatorIE与Netscape两大主流浏览器都支 时,让Web 记录的,而在ServletAPI中提供了一个 c= ("username", 对象的关键字,John为对应的值getHeader(Stringrae返回name返回request返回request对象所有属性的名字,结果集是一Enumeration(枚举)(枚举)类的实例getHeaders(String返回所有requestheader(枚举)类的实例getHeaders(String获得客户端向服务器端传送数据的方法有GET、POSTPUT等类型获得客户获得客户端传送给服务器端的参数值,该参数由name arameterNames获得客户端传送给服个Enumeration(枚举)类的实例获得指定参数所有获得查询字符串,该串由客户端以GET方法向服务器端送获得发出请求字符串获得客户端所请求设定名字为name的request参数值,该值由Object类型的o定获得

温馨提示

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

评论

0/150

提交评论