版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
21世纪高职高专规划教材·计算机类JSP动态网页编程主编王丽菊时武略副主编苏红丽刘颖孙敏参编刘勇徐超前言本书以JSP程序编写为主线,以应用为主要目标,结合实例展开知识点讲解,运用项目实例系统地阐述JSP技术的相关概念、技术和应用方法。本书共分7章,内容遵循循序渐进的原则,逐步深入,理论联系实际,注重项目实践,致力于培养能上手开发Web软件系统的JSP程序员。第1章:首先介绍了静态网页和动态网页以及两者的区别,其次对JSP技术进行了简单叙述并比较了JSP,PHP,ASP三种动态网站建站技术。最后介绍JSP开发环境和运行环境的搭建,包括jdk,tomcat,eclipse和myeclipse的安装和配置等内容。下一页返回前言第2章:主要讲述了Java语言的基础知识、HTML基础知识和JavaScript的内容,这些是进行JSP开发所必须掌握的。第3章:JSP的页面元素,先讲述JSP页面的基本结构,接着介绍JSP指令和JSP动作。第4章:讲述JSP内置对象的使用方法。第5章:讲述了JDBC技术和数据库驱动程序,JDBC常用接口方法,使用JDBC-ODBC方式访问Access数据库,使用JDBC方式访问SQLServer数据库、MySQL数据库和Oracle数据库,JDBC操作数据库实例等。第6章:讲述了JavaBean组件技术在JSP程序开发中的应用,包括JavaBeans的属性,JavaBeans的Scope属性并给出了一个学生信息管理的例子。上一页下一页返回前言第7章:讲述了Servlet的结构、接口方法和生命周期等概念以及Servlet与jsp之间的关系和jsp开发网站的两种模式。本书有以下特点:①内容由浅入深逐层推进。不同章节实现不同深度的代码,以深入透彻理解各知识模块的实际应用。②理论与应用紧密结合。各个章节都通过实例来理解概念,通过应用来学习技术,使读者易学易用,学以致用。③每一章开始都有本章要点。这些要点列在每一章的标题下面,这样有助于读者了解对每章知识的掌握程度。一些被引用的例子有详细的说明,这样有助于读者更好地掌握概念以及相关定义。上一页下一页返回前言通过本书的学习,读者应该能够掌握JSP,Servlet,JDBC和JavaBean等基本知识,可以利用这些基本知识实现简单的Web功能。更重要的是读者通过本书的学习会体会到Java技术的精髓。本书适合JSP初学者和进阶者阅读,既可作为高职院校计算机专业及相关专业的教材,也可作为技术人员的培训教材。由于作者水平有限,书中难免有疏漏和错误,恳请读者批评指正。上一页返回第1章JSP概述
1.1静态网页与动态网页
1.2JSP简介1.3JSP与其他动态网页的技术比较1.4配置JSP运行环境1.1静态网页与动态网页WWW(WorldWideWeb)又称万维网,是Internet提供的主要服务之一,同样也是常用服务之一。它起源于1989年欧洲物理研究室CCERN),当时是为了研究人员互相传递文献资料用的,主要是由该研究室的物理学家TimBerners-Lee提出的。自从WWW发明后,Internet不再局限于科学研究和军事目的,而是迅速进入千家万户,成为人们学习、工作、交流以及娱乐的一个非常贡要的手段。下一页返回1.1静态网页与动态网页目前的WWW网页根据其生成方式,大致可以分为静态网页和动态网页两种。静态网页,是指该网页文件单没有程序代码,只有HTML标记,这种网页一般以后缀.HTM或.HTML存放。静态网页一经生成,内容就不会再变化,不管何时何人访问,显示的都是一样的内容,如果要修改相关内容,就必须修改源代码,然后上传到服务器。比如一些常见的单位介绍、个人介绍等页面。上一页下一页返回1.1静态网页与动态网页动态网页,是指该网页文件单有程序代码,这种网页的后缀一般根据不同的程序设计语言而不同,如ASP文件的后缀为.ASP。动态网页能够根据不同时间、不同的来访者而显小不同的内容。如常见的BBS,留言板以及聊天室通常是用动态网页实现的。一般来说,静态网页制作比较简单,利用FrontPage,DreamWeaver等软件就可以方便地生成。而动态网页制作就比较复杂,击要用到ASPCActiveServerPages,动态服务器主页)、PHPCHypertextPreprocessor),JSP不IIASP.NET等专门的动态网页设计语言。上一页返回1.2JSP简介JSPCJavaServerPageJava服务器页面)是一种建立在Servlet规范提供的功能之上的动态网页技术,和ASP类似,它们都是在通常的网页文件中嵌入脚本代码,用于产生动态内容,不过JSP文件中嵌入的是Java代码和JSP标记。JSP文件在用户第一次清求时,会被编译成Servlet,然后由这个Servlet处理用户的清求,所以JSP也可以看成是运行时的Seru1eto既然JSP也是Servlet,那么为什么还要使用JSP,或者说JSP和Servlet的区别是子卜么呢?下一页返回1.2JSP简介Servlet是Java对CGI的回应。它们在服务器上执行和解释浏览器的请求,承担客户端和其他应用程序之间的中间层的角色。Servlet主要是把动态的内容混合到静态的内容中以产生HTML。JSP页面在HTML元素中嵌入Java脚本代码和JSP标记,使得文件长度变短,格式更加清晰。另一方面,JSP把静态和动态的内容分离开来,实现了内容和表示的分离。使用JSP,不需要单独配置每一个文件,只要扩展名是.JSP,JSP容器(也是Servlet容器)就会自动识别,将其转换为Servlet为客户端服务。术语Web容器和JSP容器是同义的。上一页返回1.3JSP与其他动态网页的技术比较JSP与ASP,PHP同为动态网页开发技术,但二者是有区别的,现在就来介绍二者各自的技术特点和应用范围。1.3.1ASP的特点ASP是Microsoft公司开发的一套服务器脚本环境,它内含于IIS中。利用ASP可以结合HTML网页、ASP指令和ActiveX建立动态的、交h_的、高效率的Web服务器应用程序。它同JSP,PHP比较主要有如下优势:下一页返回1.3JSP与其他动态网页的技术比较(1)易学易用。(2)安装、配置简单。(3)开发工具简单多样。(4)与浏览器无关。(5)组件具有扩充性。除了优势外,ASP在如下几个方面表现不足。(1)只能在Windows平台上运行。(2)开发环境不开放。(3)行速度比较慢。上一页下一页返回1.3JSP与其他动态网页的技术比较1.3.2PHP的特点PHP与ASP类似,是一种服务器端的脚本语言。PHP的语法混合了C,Java,Perl以及PHP的新式语法,可以比CGI或Perl更快地执行动态网页。PHP主要有如下优点:(1)PHP是跨平台的。(2)语法简单。(3)具有面向对象性。(4)良好的安全性。上一页下一页返回1.3JSP与其他动态网页的技术比较PHP在如下方面存在不足:(1)数据库的支持不足。(2)不是工业标准。(3)不支持ASP中的ActiveX不IIJSP中的Servlet组件开发技术。1.3.3JSP的特点JSP主要的特点如下:(1)一次编写,随处运行。(2)有统一的技术标准。(3)自由扩展JSP标签。上一页下一页返回1.3JSP与其他动态网页的技术比较(4)执行性能高。(5)开发工具多而强大。JSP也不是十全十美的,它主要的缺点如下:(1)必须熟悉Java语言。(2)难以调试。JSP和ASPJE优质、PHP比较,本身并没有特别明显的优势,JSP的优势在于它是以Java技术为基础的,JavaBean,Servlet等J2EE技术是JSP强大生命力所在。对于中小网站来说二者没有明显的区别,对于大型的网站来说,JSP是首选。上一页返回1.4配置JSP运行环境1.4.1JDK的安装与配置在安装Tomcat之前,必须先安装JDK,可以从Sun公司的网站:上免费下载。双击j2sdk-1_4_2-13-windows-i586-p.exe,进入安装界面,如图1-1所示。然后进入如图1-2所示的界面,选择Iacceptw·单选按钮后单击Next按钮进入下一步安装。下一页返回1.4配置JSP运行环境单击Next按钮,进入选择安装目录的界面,可以单击Change按钮来更改目录(如图1-3所示),单击Next按钮,再单击Install按钮,会显示一个安装进度条;安装完成后单击Finish按钮结束安装,如图1-4所示。
1.4.2Tomcat的安装和配置可以从网站上获取jakarta-tomcat-5.0.19.exe文件,双击进行安装,如图1-5,图1-6所示。在图1-6所示安装过程中可以单击Browse按钮,选择安装目录。单击Next按钮,直到安装结束。上一页下一页返回1.4配置JSP运行环境安装JDK和Tomcat成功后,击要配置环境变量,(上文中JDK的安装目录为C:\j2sdk1.4.2-13,Tomcat的安装b录为C:\Tomcat5.0)右击选择“我的电脑”一“属性”一“高级”一“环境变量”一“新建用户变量”命令,添加以下变量。JAVA_HOME:C:\j2sdk1.4.2-13(如图1-7所示)CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(注意:点号表示、当前目录,不能省略)上一页下一页返回1.4配置JSP运行环境PATH:%JAVA_HOME%\bin;(注意:这单的分号不能省略)到这单,JDK安装完毕。CATALINEHOME:C:\Tomcat5.0CATALINEBASE:C:\Tomcat5.0配置完毕,测试安装是否成功。首先启动Tomcat,找到C:\Tomcat5.0\bin目录下的startup.bat}双击。打开浏览器,在地址栏中输入:8080或者http://localhost:8080出现如图1-8所示的界面,表示安装成功。上一页下一页返回1.4配置JSP运行环境1.4.3安装开发工具Eclipse+MyEclipse首先下载eclipse-SDK-3.1.2-win32.zip(下载地址为:http://www.eclipse.org/downloads/);然后将eclipse-SDK-3.1.2-win32.zip直接解压到C盘根目录下(如图1-9所示),运行eclipse.exe就可以编程了。上一页下一页返回1.4配置JSP运行环境MyEclipse的安装,首先下载E口to印riseWorkbenchlnstaller4.1.16八E3.l.exe(下载地址为:/downloads/products/eworkbench/4.1.1GA/EnterpriseWorkbenchlnstaller4.1.1GAE3.l.exe);然后双击进入安装界面如图1-10所示,然后单击Next按钮,进入LicenseAgreement界面,选择Iaccept…单选按钮(如图1-11所示),单击Next按钮,选择Eclipse的安装路径(如图1-12所示),单击Next按钮,选择MyEclipse的安装路径(如图1-13所示),单击Next按钮直至安装成功。安装成功后,从“开始”“程序”菜单单面启动MyEclipse,如图1-14所示。上一页下一页返回1.4配置JSP运行环境启动后击要配置J2EE的运行环境。首先在WindowPreferencesJavaInstalledJREs中增加JDK。设置环境变量名称为JDK,指向JDK的安装b录CC:\j2sdk1.4.2-13)如图1-15所示,单击OK按钮完成。接着,如图1-16所示在WindowPreferencesMyEclipseApplicationServerTomcat5面板中选中Tomcat的安装目录,启用该服务器(选中Enable单选按钮)。接着,在WindowPreferencesMyEclipseApplicationServerTomcatSJDK面板中,在TomcatJDKname下拉列表框中选择JDK,如图1-17所示。上一页下一页返回1.4配置JSP运行环境1.4.4第一个JSP页面将JSP的运行环境配置好后,来建立第一个JSP页面。用记事本或任意一个文本编辑工具来编写第一个JSP页面(文件扩展名要以.JSP保存)。上一页返回图1-1安装JDK的界而返回图1-2安装JDK的界而(接受约定)返回图1-3安装JDK的界而(选择安装目录)返回图1-4安装JDK的界面(完成)返回图1-5Tomcat的安装界面(一)返回图1-6Tomcat的安装界面(二)返回图1-7JAVAHOME的设置返回图1-8Tomcat酉己置成功的测试页返回图1-9Eclipse的安装返回图1-10MyEclipse安装(一)返回图1-11MyEclipse安装(二)返回图1-12MyEclipse安装(三)返回图1-13MyEclipse安装(四)返回图1-14MyEclipse和Welcome界面返回图1-15MyEclipse的配置返回图1-16MyEclipse的配置(Tomcat的启用)返回图1-17MyEclipse的配置(TomcatJDKname的设置)返回第2章JSP程序设计基础
2.1Java基础
2.2HTML基础知识
2.3JavaScript简介
2.4典型案例:制作用户注册表单2.1Java基础2.1.1Java的特性Java是一种跨平台,适合于分布式计算环境的面向对象编程语言。具体来说,它具有如下特性:简单性、面向对象、分布式、解释性、可靠性、安全性、平台无关性、可移植性、多线程以及动态性等。本节简单介绍Java语言的面向对象、平台无关性、分布式、可靠性和安全性以及多线程5个主要特性。下一页返回2.1Java基础1.面向对象Java是面向对象的语言,可以面向对象编程。面向对象编程语言支持3个概念:封装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法。封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,刘象是支持封装的乎段,是封装的基本单位。Java语言的封装性较强,因为Java无全程变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java也提供了相应的对象类型以便与其他对象交互操作。上一页下一页返回2.1Java基础2.平台无关性Java是平台无关的语言,是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是Java平台无关的基础,在JVM上,有一个Java解释器用来解释Java编译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为JVM的字节代码。任何一台机器只要配备了Java解释器,就可以运行这个程序,而不竹这种字节码是在何种平台上生成的。另外,Java采用的是基于IEEE标准的数据类型。通过JVM保证数据类型的一致性,也确保了Java的平台无关性。上一页下一页返回2.1Java基础3.分布式分布式包括数据分布和操作分布。数据分布是指数据可以分散在网络的不同主机上,操作分布是指把一个计算分散在不同主机上处理。Java支持WWW客户机/服务器计算模式,因此,它支持这两种分布性。对于前者,Java提供了一个叫做URL的对象,利用这个对象,可以打开并访问具有相同URL地址上的对象,访问方式与访问本地文件系统相同。对于后者,Java的Applet小程序可以从服务器下载到客户端,即部分计算在客户端进行,提高系统执行效率。Java提供了一整套网络类库,开发人员可以利用类库进行网络程序设计,方便实现Java的分布式特性。上一页下一页返回2.1Java基础4.可靠性和安全性Java最初的设计目的是应用于电了类消费产品,因此要求较高的可靠性。第一,Java是强类型的语言,要求显式的方法声明,这保证了编译器可以发现方法调用错误,保证程序更加可靠;第一,Java不支持指针,这杜绝了内存的非法访问;第二,Java的自动单元收集防止了内存丢失等动态内存分配导致的问题;第四,Java解释器运行时实施检查,可以发现数组和字符串访问的越界,第五,Java提供了异常处理机制,程序员可以把一组错误代码放在一个地方,这样可以简化错误处理任务便于恢复。综上使得Java戊为安全的编程语言。上一页下一页返回2.1Java基础5.多线程线程是操作系统的一种新概念,它又被称为轻量进程,是比传统进程更小的可并发执行的单位。C和C++采用单线程体系结构,而Java却提供了多线程支持。Java在两方面支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行负责必要的无用单元回收、系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。上一页下一页返回2.1Java基础2.1.2Java程序结构Java程序结构的必要元素如下:(1)一个Java程序包含一系列的类。(2)每个程序中至少有一个类,也可以有多个类。(3)每个类的程序代码存放在一个单独的文件中,其文件名必须与内部定义的类名相同。(4)Java源文件必须使用扩展名.java。比如类Hello的文件名为Hello.java,Booklnfo类的文件名为Booklnfo.java。上一页下一页返回2.1Java基础2.1.3Java基本语法1.注释在Java中共包含3种类型的注释。刀:单行注释。/*……*八多行注释。/**……*/:文档注释,这种形式的注释可以使用JavaDoc工具牛成Java风格的帮助文件。2.标识符和关键字在Java中,为变量、方法、类和对象起的名字称为标识符。标识符以字符或下划线“_”或“$”符号开头,后面可以包含字母、下画线、“$”或数字。上一页下一页返回2.1Java基础Java中的关键字指的是由系统使用的,具备特定含义的字符。比如:abstract,continue,for,new及switch等。在Java中命名属性或方法时,不能与系统关键字重名。3.Java的数据类型Java中的数据分为两大类型:基本数据类型和引用数据类型。基本数据类型包括布尔,字符,整数和浮点数等。引用数据类型包括类,接口和数组。上一页下一页返回2.1Java基础4.Java流程控制Java的流程控制语句包括条件和循环语句。条件语句可以根据某个表达式的值有选择地执行某部分程序。Java支持两种类型的条件语句:if不IIswitch语句。if语句的基本格式如下:if(条件表达式){语句序列一;}else{语句序列二;上一页下一页返回2.1Java基础switch用来实现多贡分支结构,switch语句的基本格式如下:switch(表达式){case值1:语句1;break;case值2:语句2;break;case值n:上一页下一页返回2.1Java基础语句n;break;[default:语句]}循环语句可用于重复执行语句。有3种循环语句:for,while和do-while循环。fo:和while循环在循环开始执行循环体之前测试循环条件,而do-while循环在执行循环体之后检查循环条件。while语句的语法格式如下:while(循环条件){循环体中语句;}上一页下一页返回2.1Java基础do-while语句的格式如下:do{循环体中语句;}while(循环条件)for语句的语法格式如下:for(循环初始化语句;}T}环终止条件;}T}环变量修改){循环体;上一页返回2.2HTML基础知识在进行Web项目开发时,尤论在JSP中,还是在其他的服务器端脚本中,HTML都是最为基本的内容。本节介绍HTML的基础知识。
2.2.1HTML页面的基木结构一个HTML文档是由标记和文本内容组成。基本结构如下:<HTML><HEAD><TITLF>...下一页返回2.2HTML基础知识</TITLE></HEAD><BODY></BODY></HTML>说明:标记是HTML语言的标签符号和用标签符号构成的各种元素的统称,用来界定各种单元,用一对“<>”中间包含若十字符命令表示,前一个“<>”为起始标记,后一个“</>”为结束标记,单元的名称和属性由起始标记给出。上一页下一页返回2.2HTML基础知识1.<HTML>标记(最外层的标记)(1)语法规则:<HTML>…</HTML>(2)属性:VERSION=String2.<HEAD>标记(用来标记HTML文档的页首)(1)语法规则为:<HEAD>…</HEAD>(2)属性:None(无)3.<TITLE>标记(设置网页标题)(1)语法规则:<TITLE>…</TITLE>(2)属性:None(无)上一页下一页返回2.2HTML基础知识4.<BODY>标记(标注HTML文档的正文)(1)语法规则:<BODY>...</BODY>(2)属性:①BACKGROUND=URL;指定用于网页背景图片文件的地址。②BGCOLOR=#RRGGBB;指定背景色彩。③TEXT=#RRGGBB;指定非可链接文字的色彩。④LINK=#RRGGBB;指定口J链接文字的色彩。上一页下一页返回2.2HTML基础知识⑤ALINK=#RRGGBB;指定i1被鼠标单击的可链接文字的色彩。⑥VLINK=#RRGGBB;指定已被鼠标单击(访问)过的可链接文字的色彩。⑦说明:#RRGGBB是指色彩红一绿一蓝Cred-green-blueRGB)的值,用十六进制数码表小,根据规范前面击加“#”。2.2.2常用元素(1)段落标记:<P>...</P>(2)换行:<BR>(3)居中:<Center>…</Center>上一页下一页返回2.2HTML基础知识(4)下画线、加粗、倾斜:<u>...</u>,<b>...</b>,<i>...</i>(5)项目标题标签:<hl>...</hl>...<h6>...</h6>(6)无序列表:<UL><Li>…</Li>列表项<Li>…</Li></UL>(7)有序列表:<nL><Li>w</Li><Li>...</Li></nL>上一页下一页返回2.2HTML基础知识(8)图片标记:(9)注释:<!-<imgalt=“大山”src="images/mount.gif'>2.2.3链接标记在HTML中,通过使用链接标记,可以在互联网的资源之间方便地跳转。可以说,超级链接功能是HTML的一个重要因素。超级链接的标记语法如下:<ahref--"url"target="blank/self/parent/top">...</a>上一页下一页返回2.2HTML基础知识2.2.4表格标记在HTML中,表格标记是一个非常重要的标记,在}sP页面中经常用到,尤其在和数据库连接时。表格标记的语句结构如下:<table><tr><td>…</td></tr></table>上一页下一页返回2.2HTML基础知识结构说明:<table>…</table>定义表格<tr>…</tr>定义行<th>…</th>定义表头<td>…</td>定义数据2.2.5表单标记在Web开发中,表单标记是最为常用的标记之一。可以通过表单标记以及一些包含在表单中的其他标记,获得用户的输入信息,从而实现客户端和服务器端的交互。上一页下一页返回2.2HTML基础知识表单基本格式如下:<formaction="url"method="post/get"><inputtype=submit><inputtype=reset></form>下面依次将表单中的其他标记及格式列举如下:(1)文本域。单行文本域:<inputtype=textname=*>多行文本域:<textareaname=*rows=**cols=**>...<textarea>密码域:<inputtype=passwordname=*>上一页下一页返回2.2HTML基础知识(2)复选框(Checkbox)和单选框(RadioButton)。复选框:①<inputtype=checkbox>②<inputtype=checkboxchecked>③<inputtype=checkboxvalue=**>单选框:①<inputtype=radiovalue=**>②<inputtype=radiovalue=**checked>上一页下一页返回2.2HTML基础知识(3)列表框。<selectname=*><option>"""<optionselected>…<optionvalue=**>…</select>(4)隐藏域:<inpu七七ype=hiddenvalue=*>(5)文件域:<inpu七七ype="file"name=”file”>上一页返回2.3JavaScript简介JavaScript是Web项目开发中使用的一种技术,用来实现对客户端的控制,例如,实现客户端的特效,进行客户端用户输入信息的验证等,从而减少网络流量,减轻服务器端的负担。和Java不同的是,JavaScript是一种脚本语言,它不能脱离浏览器直接运行。返回2.4典型案例:制作用户注册表单在进行Web开发时,经常会有用户注册的功能,因此,用户注册表单是经常被用到的。下面通过案例来演示用户注册表单的程序代码,及对用户输入的数据进行验证的实现过程。(1)用户注册表单案例源码(reg.html)。(2)验证客户输入信息的JavaScript代码(validform.js)。(3)在reg.html中的<head>和</head>之间使用如下语句将validform.js引入进去。返回第3章JSP页面元素
3.1JSP页而的基本结构
3.2JSP指令
3.3JSP动作3.1JSP页而的基本结构JSP页面的基本结构包括注释、代码段、声明和表达式。3.1.1变量和方法的声明JSP的声明可以用来定义变量,在声明元素中声明的变量和方法在JSP页面初始化时被初始化。语法格式:<%!declaration;[declaration;]…%>或<%!声明;[声明;]…%>]下一页返回3.1JSP页而的基本结构说明:声明将要在JSP程序中用到的变量和方法。必须这样做,不然会出错。可以一次性声明多个变量和方法,只要以“;”结尾就行,当然这些声明在Java中必须是合法的。当声明方法和变量时,需要注意以下的一些规则。(1)声明必须以“;”结尾(scriptlet有同样的规则,但是表达式就不同了)。(2)可以直接使用在<%@page>中被包含进来的己经声明的变量和方法,不需要对它们重新进行声明。(3)一个声明仅在一个页面中有效。如果想每个页面都用到一些声明,最好把它们写成一个单独的文件,然后用<%@include>或<jsp:include>元素包含进来。上一页下一页返回3.1JSP页而的基本结构3.1.2JSP表达式表达式用于输出单个变量或某个计算的结果,可以将某个计算结果转换成一个字符串并目直接使用在输出页面上。表达式可以包含任何Java语言表达式,只要表达式可以求值即可。表达式的语法格式:<%=expression>或<%=表达式%>当在JSP中使用表达式时需要记住以下几点。(1)不能用一个分号(“;”)来作为表达式的结束符。(2)有时候表达式也能作为其他JSP元素的属性值。(3)一个表达式能够变得很复杂,它可能由一个或多个表达式组成,这些表达式的顺序是从左到右。上一页下一页返回3.1JSP页而的基本结构3.1.3码段代码段是JSP中的代码部分,即Java程序的一段代码,几乎可以使用任何Java语法,它可以使用JSP页面所定义的变量、方法、表达式或JavaBean。代码段语法格式:<%codefragment%>或<%代码%>上一页下一页返回3.1JSP页而的基本结构3.1.4JSP注释图3-2程序运行结果任何程序都有注释,JSP也不例外。JSP中的注释有两种,一种称为HTML式注释,它会在客户端显小;另一种是隐藏注释,它写在JSP程序中,只有服务器端的开发人员才能看到。1.HTML式注释语法格式:<!--comment[<%=expression%>]-->2.隐藏注释语法格式:<%--comment-->或<%/*comment*/%>上一页返回3.2JSP指令3.2.1page指令page指令用来设置整个JSP页面的相关属性和功能,其基本语法如下:<%@page[language="java"][extends="package.class"][import="{package.class}.*},…”[session="true}false"][buffer="none}8kb}sizekb"]下一页返回3.2JSP指令[autoFlush="true}false"][isThreadSafe="true}false"][info="text"][errorPage="relativeURL"][contentType="mimeType[;charset=characterSet]""text/HTML;charset=ISO-8859-1”1[isErrorPage="true}false"]%>page指令包含了很多属性,属性说明见表3-1。上一页下一页返回3.2JSP指令3.2.2include指令include指令在JSP页面被编译成Servlet时引入程序员期望包含的HTML文件或JSP文件(也可能是其他类型的文件,具体允许包含哪些类型的文件击要根据服务器的情况而定)。include指令的基本语法如下:<%@includefile="relativeURL"%>说明:(1)file属性指向击要引用的HTML页面和JSP页面,但是击要注意该页面的路径必须是相对的,否则会出错。上一页下一页返回3.2JSP指令(2)include指令在JSP文件中插入一个包含文本和代码的文件。被包含的文件可以是JSP文件,HTML文件或文本文件。如果被包含的文件是JSP文件,则JSP引擎编译完该JSP文件后,执行的结果将插入到主JSP文件中include指令所在的位置。如果被包含的文件是HTML文件或文本文件,则JSP引擎不对其进行编译,直接将其内容插入到主JSP文件中include指令所在的位置。该包含是静态包含,即被包含的文件处理完,而且结果也插入到主JSP文件完毕,主JSP文件将继续执行include指令下面的内容。上一页下一页返回3.2JSP指令(3)被包含的文件中不能含有<HTML>,</HTML>,<body>,或</body>标签。因为被包含的文件的全部内容将被插入到JSP文件中include指令所在的地方,这些标签将会同JSP文件中己有的同样的标签发生冲突。(4)假如被包含的文件发生变化,主JSP页面将被重新编译。3.2.3taglib指令taglib指令是JSP1.1规格中新增的功能,它允许用户自定义新的标签,就如同XML那样。taglib指令的基本语法如下:上一页下一页返回3.2JSP指令<%@tagliburl="relativetagLibURL"prefix="tagPrefix"%>其中url属性用来指明自定义标签库的存放位置。tagPrefix是为了区分不同标签库中的相同标签名,就如同包名和类名的关系。下面的例子显小了如何用定制的标签来产生动态内容,在这种情况下并不击要引入Java类、声明变量或者}5写任何Java代码。上一页返回3.3JSP动作3.3.1include动作include动作是向当前页面加入另一文件的方法。该动作把指定文件插入正在牛成的页面中。其语法如下:jsp:includepage="relativeURL"flush="true"/>前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这单的jsp:include动作不同,插入文件的时间是在页面被清求的时候。jsp:include动作的文件引入时间决定了它的效率要稍微差一点,而且被引用文件不能包含某些JSP代码(例如不能设置HTTP头),但它的灵活性却要好得多。下一页返回3.3JSP动作例如,下面的JSP页面把3则新闻摘要插入一个JSP页面。改变新闻摘要时只需改变这3个文件,而主JSP页面却可以不做修改。3.3.2forward动作jsp:forward动作把清求转到另外的页面。jsp:forward标记只有一个属性pageopage属性包含的是一个相对URLopage的值既可以直接给出,也可以在清求的时候动态计算,如下面的例子所小:<jsp:forwardpage="/utils/errorReporter.asp/><jsp:forwardpage="<%=someJavaExpression%>上一页下一页返回3.3JSP动作3.3.3param动作<jsp:param>用来提供参数信息,其基本语法是:jsp:paramname="parameterName"value="parameterValue">其中,name属性是参数的名称,value属性是参数值。上一页下一页返回3.3JSP动作3.3.4useBean动作前面已经介绍过include指令,它是在JSP文件被转换成jsp:useBcan动作时用来装载一个将在JSP页面中使用的JavaBean。这个功能非常有用,因为它使得我们既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。此动作用来生成一个bean组件,并设定它的id号及使用范围。上一页下一页返回3.3JSP动作jsp:useBeanid="beanName"scope="page}request}session}application}"class="package.class"type="package.class"beanName="{package.class}<%=expression%>}type="package.class""/>id="beanName"定义生成bean组件的名字,不能贡名A.scope的值也最好一样,否则JSP引擎将认定最先被创建的那个。上一页下一页返回3.3JSP动作scope="page}request}session}application":定义bean的活动范围,bean只有在它定义的范围!.才能使用,在它的活动范围外将尤法访问到它。JSP为它设定的范围有以下几个。(1)page:bean的默认使用范围。(2)request:作用于任何相同请求的JSP文件中,直到页面执行完毕向客户端发回响应或在此这之前已通过某种方式(如贡定向、链接等方式)转到另一个文件为止。还可通过使用Request对象访问bean,如request.getAttribute(beanName)。上一页下一页返回3.3JSP动作(3)session:作用于整个session的生存周期内,在session的生存周期内,对此bean属性的任何改动,都会影响到在此session内的另一page,另一request对此bean的调用。但必须在创建此bean的文件单事先用page指令指定了session=true。(4)application:作用于整个application的生存周期内,在application周期内,对此bean属性的任何改动,都会影响到此application内另一page,另一request以及另一session对此bean的调用。上一页下一页返回3.3JSP动作class="package.class"用class属性指向的类示例一个bean,其中package名必须是类单用关键字package指定的。type="package.class"class="package.class"type="package.class"eanName="{package.class}<%=expression%>}”type="package.class"如:jsp:useBeanid="name"class="package.class"/>这行代码的含义是:创建一个由class属性指定的类的实例,然后把它绑定到其名字由id属性给出的变量上。不过,就像接下来会看到的,定义一个scope属性可以让bean关联到更多的页面。此时,jsp:useBean动作只有在不存在同样id和scope的bean时才创建新的对象实例,同时,获得现有bean的引用就变得很有必要。上一页下一页返回3.3JSP动作注:scope=“page”时,运行testBean.jsp文件,name的初始值为”aaaa“。虽然在jsp文件中又贡设为,‘w11”,但刷新后仍为”aaaa“。scope=“session‘,时,运行test.jsp文件,name的初始值为”aaaa“。虽然在jsp文件中又贡设为”w11“,但刷新后仍为”w11“,只要不关闭此窗口,任何刷新或打开一个新窗口,都输出”w11“。直到关闭所有窗口,再运行testBean.jsp文件,输出才会为初始值”aaaa“。scope=“application‘,时,运行testBean.jsp文件,name的初始值为”aaaa“。虽然在jsp文件中又贡设为”w11“,但刷新后仍为”w11“,只要不关闭此窗口,任何刷新或打开一个新窗口,都输出“w11”。即使关闭所有窗口,再运行testBean.jsp文件,输出仍为”w11“。除非关闭服务后又重启,再运行testBean.jsp文件,name的输出为初始值”aaaa“。上一页下一页返回3.3JSP动作scope=“request‘,时,新建一文件testBcanl.jsp内容与testBean.jsp一样。先在浏览器中运行testBean.jsp文件,输出name的值为初始值”aaaa“。再在在浏览器中运行testBean.jsp文件,此时输出为”w11“,因为它们算是相同的request。
3.3.5setProperty动作jsp:setProperty用来设置已经实例化的bean对象的属性,有两种用法。首先,可以在jsp:useBean元素的外面}}u面)使用jsp:setProperty,如下所小:上一页下一页返回3.3JSP动作<jsp:useBeanid="myName”…/><jsp:setPropertyname="myName”property="someProperty"…/>此时,不竹jsp:useBean是找到了一个现有的bean实例,还是新创建了一个beanjspaetProperty都会执行。第一种用法是把jsp:setProperty放入jsp:useBcan元素的内部,如下所小:<jsp:useBeanid="myName”二‘><jsp:setPropertyname="myName”︸property=”someProperty”</jsp:useBean>上一页下一页返回3.3JSP动作此时,jsp:setProperty只有在新建bean实例时才会执行,如果是使用现有实例则不执行jspaetProperty。jsp:setProperty动作有下面4个属性。(1)name:name属性是必需的。它表示要设置属性的是哪个bean。(2)property:property属性是必需的。它表示要设置哪个属性。有一个特殊用法:如果property的值是“*”,表示所有名字和bean属性名字匹配的请求参数都将被传递给相应的属性set方法。上一页下一页返回3.3JSP动作(3)value:value属性是可选的。该属性用来指定bean属性的值。字符串数据会在目标类中通过标准的valueOf()方法自动转换成数字,boolean}BooleanbyteBytecharCharactero例如,booleanIIIBoolean类型的属性值(比如“true”)通过Boolean.valueOf()转换,int和Integer类型的属性值(比如“42”)通过Integer.valueOf()转换。Value和param不能同时使用,但可以使用其中任意一个。(4)param:param是可选的。它指定用哪个请求参数作为bean属性的值。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给bean属性的set方法。因此,可以让bean自己提供默认属性值,只有当清求参数明确指定了新值时才修改默认属性值。上一页下一页返回3.3JSP动作例如,下面的代码片断表小:如果存在numltems清求参数的话,把numberOfltems属性的值设置为清求参数numltems的值;否则什么也不做。<jsp:setPropertyname="orderBean"property="numberOfItems”param="numItems”/>如果同时省略value和param,其效果相当于提供一个paramA其值等于property的值。进一步利用这种借助清求参数和属性名字相同进行自动赋值的思想,还可以在propertyCbean属性的名字)中指定“*”,然后省略value和param。此时,服务器会查看所有的bean属性泪I清求参数,如果两者名字相同则自动赋值。上一页下一页返回3.3JSP动作如:前例中student组件,在setProperty中设定的属性<jsp:setPropertyname="student”property="classno”value="56789”/><jsp:setPropertyname=”student”property="name”value="bbbb"/><jsp:setPropertyname=”student”property="aqe”value="33”/>等价:<%Student.age=33;%>输出结果为:56789bbbb33上一页下一页返回3.3JSP动作3.3.6getProperty动作jsp:getProperty动作提取指定bean属性的值,转换成字符串,然后输出。jsp:getProperty有两个必击的属性,即:name,表小bean的名字;property,表小要提取哪个属性的值。下面是一个例子,得到前例中student组件的属性值:<jsp:getPropertyname="student"grope二ty="classno"/>等价:<%=student.classno%><jsp:getPropertyname="student"property="name"/><jsp:getPropertyname="student"property="age”/>输出结果为:12345aaaa21上一页下一页返回3.3JSP动作3.3.7plugin动作jsp:plugin动作用来根据浏览器的类型,插入通过Java插件运行JavaApplet所必击的OBJECT或EMBED元素。下面是一些特殊的标记或字符,可以利用它们插入注释或可能被视为具有特殊含义的字符。(1)<%一comment一%>:JSP注释,也称为“隐藏注释”。JSP引擎将忽略它。标记内的所有JSP脚本元素、指令和动作都将不起作用。上一页下一页返回3.3JSP动作(2)<!一comment一>:HTML注释,也称为“输出的注释”,直接出现在结果HTML文档中。标记内的所有JSP脚本元素、指令和动作正常执行。(3)<\%:在模板文本(静态HTML)中实际上希望出现“<%”的地方使用。(4)%\>:在脚本元素内实际上希望出现“%>”的地方使用。(5)\:使用单引号的属性内的单引号。不过,既可以使用单引号也可以使用双引号,而另外一种引号将具有普通含义。上一页返回表3-1page指令属性返回第4章JSP内置对象
4.1内置对象概述
4.2out对象
4.3request对象
4.4response对象
4.5session对象
4.6其他对象4.1内置对象概述动态网站开发中很重要的一个问题是网页之间的信息传递和状态维护,每当网页被发送到服务器时,都会在服务器端重新生成网页。在这个往返过程(浏览器一服务器一浏览器)中,JSP提供了一些内置对象保存所有与网页关联的信息。JSP的内置对象由JSP容器自动为JSP页面提供,是预先存在的。在编写JSP程序时,可以直接使用。JSP常用的内置对象包括:out,requestresponsesessionapplicationconfig,exceptionpage和pageContext这9大对象。返回4.2out对象out是类javax.servlet.jsp.JspWriter的一个对象,它表示为客户打开的输出流,其主要功能是用来向客户端输出数据。主要方法见表4-1。返回4.3request对象request是类javax.servlet.http.HttpServletRequest的一个对象。当客户端请求一个JSP网页时,客户端的请求信息将被JSP引擎封装在这个request对象中。request对象的主要功能是调用相应的方法获取用户提交的信息。主要方法见表4-2。通常用户向JSP页面提交信息是借助于表单来实现的。表单中包含文本框、列表及按钮等输入标记。当用户在表单中输入完信息后,单主submit按钮将信息提交。客户端可以使用post或者get两种方法实现提交。它们的区别是get方法提交的信息会显示在IE浏览器的地址栏中,而post方法不会显示。提交后的信息就被封装在request对象中。通常request对象调用getParameter()方法获取用户提交的信息。返回4.4response对象response是类javax.servlet.http.HttpServletResponse的一个对象。当用户向服务器端提交了HTTP请求后,服务器将会根据用户的请求建立一个默认的response对象,给客户端提供响应的信息。表4-3介绍了:esponse对象中所包含的方法。返回4.5session对象session是类javax.servlet.http.HttpSession的一个对象。session指的是客户端与服务器端的一次会话,会话从客户连接到服务器开始,一直到与服务器断开连接为止,这之间都可以访问session对象的属性和方法。当用户第一次升录网站时,服务器端的JSP引擎将为该用户生成一个独一无二的session对象,用以记录该用户的个人信息。一旦该用户退出网站,那么属于他的session对象将会被注销。session对象可以绑定若十个人信息或者Java对象。如果不同session对象内部定义了相同的变量名,那么这些同名变量是不会相互干扰的。主要说明的是,session对象中所保存和检索的信息不能是基本数据类型,必须是Java语言中相应的Object对象。表4-4介绍了session对象中所包含的方法。返回4.6其他对象4.6.1application对象application对象为多个应用程序保存信息,对于一个容器而言,每个用户都共同使用一个application对象,一旦创建,l涂非是服务器关闭,否则一直有效。application对象IIIsession对象不同,它不会为每个用户生成一个对象,而是所有用户共享一个application对象。所以1SP开发人员通常使用session对象实现购物车功能,使用application对象实现聊天室,计数器等功能。表4-5列举了application对象的方法。下一页返回4.6其他对象4.6.2config对象config对象被封装成javax.servlet.ServletConfig接日,它表小Servlet的配置。当一个Servlet初始化时,容器把某些信息通过此对象传递给这个Servlet。config对象很少用到,本书不做过多介绍,只将其主要方法列举出来,见表4-6。上一页下一页返回4.6其他对象4.6.3exception对象在进行JSP编程时难免会发生错误,遗憾的是编程人员并不知道。那么当JSP文件在执行过程中发生了错误该如何处理呢?实际上exception对象是专门负责处理这些问题的。一般直接使用exception对象处理异常的页面都必须指定page指令<%@pageisErrorPage=“true”%>。下面介绍exception对象中的方法,见表4-7。上一页下一页返回4.6其他对象4.6.4page对象page对象是java.lang.Object类的一个实例。page对象指向当前JSP页面本身,有点像类中的this指针。JSP实现类对象的一个句柄,只有在JSP页面的范围内才是合法的。
4.6.5pageContext对象pageContext对象代表页面上下文,该对象主要用于访问JSP之间的共亨数据。使用pageContext可以访问pagerequestsession和application范围的变量。上一页下一页返回4.6其他对象pageContext是PageContext类的实例,它提供了如下两个方法来访问page,request,session和application范围的变量。getAttribute(Stringname):取得page范围内的name属性。getAttribute(Stringname,intscope):取得指定范围内的name属性,其中scope可以是如下4个值。(1)PageContext.PAGE_SCOPE:对应于page范围。(2)PageContext.REQUESTSCOPE:对应于request范围。上一页下一页返回4.6其他对象(3)PageContext.SESSION_SCOPE:对应于session范围。(4)PageContext.APPLICATION_SCOPE:对应于application范围。与getAttribute()方法相对应,PageContext也提供了2个对应的setAttribute()方法,用丁将指定变量放入pagerequestsession和application范围内。上一页返回表4-1out的主要方法返回表4-2request的主要方法返回表4-3response的主要方法返回表4-4session的主要方法返回表4-5application的主要方法返回表4-6config的主要方法返回表4-7exception的主要方法返回第5章JSP连接数据库
5.1JDBC简介
5.2访问Access
5.3访问SQLServer
5.4JDBC访问其他数据库5.1JDBC简介JDBC(JavaDataBaseConnectivityJava数据库连接)是一种用于执行SQL语句的JavaAPI,它由一组Java类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API据此可以构建更高级的工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序,同时,JDBC也是个商标名。JDBC定义了许多接口和类,在JDBC3.0版本中,这些类包含在java.sqlIIIjavax.sql这两个包中。下一页返回5.1JDBC简介java.sql这个包中的类和接口主要针对基本的数据库编程服务,例如,生产连接,执行语句以及准备语句和运行批处理查询等。同时也有一些高级的处理,如批处理更新,事物隔离和可滚动结果集等。javax.sql这个包主要是为数据库的高级操作提供接口和类,如连接管理类、创建语句类和行集类等。虽然接口和类很多,但是经常使用的却不是很多。在这单介绍一下常用的接口和类的使用。上一页下一页返回5.1JDBC简介5.1.1DriverManagerDriverManager类是JDBC的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager类也处理诸如驱动程序矜录时间限制及矜录和跟踪消息的显小等事务。DriverManager类中一个重要的方法是DriverManager.getConnection(),该方法将建立与数据库的连接。JDBC允许用户调用DriverManager的方法getDriver(),getDrivers()和registerDriver()及Driver的方法connect()。上一页下一页返回5.1JDBC简介1.跟踪可用驱动程序DriverManager类包含一系列的驱动程序(Driver)类,它们通过调用方法DriverManager.registerDriver()对自己进行了注册。所有Driver类都必须包含有一个静态部分。它创建该类的实例,然后在加载该实例时DriverManager类进行注册。这样,用户正常情况下将不会直接调用DriverManager.registerDriver(),而是在加载驱动程序时由驱动程序自动调用。加载Driver类,然后自动在DriverManager中注册的方式有以下两种。上一页下一页返回5.1JDBC简介(1)通过调用方法C1ass.forName()。这将显式地加载驱动程序类。由于这与外部设置尤关,因此推荐使用这种加载驱动程序的方法。以下代4i加载类acme.db.Driver:Class.forName("acme.db.Driver");其中acme.db.Driver为不同数据库的驱动,例如:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")//加载MSSQLServer驱动Class.forName("org.git.mm.mysql.Driver")//加载MySQLJDBC驱动C1ass.forName("oracle.]dbc.driver.OracleDriver")//加载OracleJDBC驱动如果将acme.db.Driver编写为加载时创建实例,并调用以该实例为参数的DriverManager.registerDriver(),则它在DriverManager的驱动程序列表中,并可用于创建连接。上一页下一页返回5.1JDBC简介(2)通过将驱动程序添加到java.lang.System的属性jdbc.drivers中。这是一个由DriverManager类加载的驱动程序类名的列表,由冒号分隔:初始化DriverManager类时,它搜索系统属性jdbc.drivers,如果用户己输入了一个或多个驱动程序,则DriverManager类将试图加载它们。对DriverManager方法的第一次调用将自动加载这些驱动程序类。这种加载驱动程序的方法需要持久的预设环境。如果对这一点不能保证,则调用方法C1ass.forName()显式地加载每个驱动程序就显得更为安全。一旦DriverManager类被初始化,将不再检查jdbc.drivers属性列表,这也是引入特定驱动程序的方法。上一页下一页返回5.1JDBC简介在以上两种情况中,新加载的Driver类都要通过调用DriverManager.registerDriver类进行自我注册。如上所述,加载类时将自动执行这一过程。由于安全方面的原因,JDBC管理层将跟踪哪个类加载器提供哪个驱动程序。这样,当DriverManager类打开连接时,它仅使用本地文件系统或与发出连接请求的代码相同的类加载器提供的驱动程序。2.建立连接加载Driver类并在DriverManager类中注册后,它们即可用来与数据库建立连接。当调用DriverManager.getConnection()方法发出连接请求时,DriverManager将检查每个驱动程序,查看它是否可以建立连接。上一页下一页返回5.1JDBC简介有时可能有多个JDBC驱动程序可以与给定的URL连接。例如,与给定远程数据库连接时,可以使用JDBC-ODBC桥驱动程序、JDBC到通用网络陇议驱动程序或数据库厂商提供的驱动程序。在这种情况下,测试驱动程序的顺序至关重要,因为DriverManager将使用它所找到的第一个可以成功连接到给定URL的驱动程序。首先DriverManager试图按注册的顺序使用每个驱动程序。它将跳过代码不可信任的驱动程序,除非加载它们的源与试图打开连接的代码的源相同。它通过轮流在每个驱动程序上调用方法Driver.connect(),并向它们传递用户开始传递给方法DriverManager.getConnection()的URL来对驱动程序进行测试,然后连接第一个认出该URL的驱动程序。上一页下一页返回5.1JDBC简介这种方法初看起来效率不高,但由于不可能同时加载数十个驱动程序,因此每次连接实际只需几个过程调用和字符串比较。以下代码是通常情况下用驱动程序(例如JDBC-ODBC桥驱动程序)建立连接所击所有步骤的小例。Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序Stringurl=”jdbc:0dbc:fred”;DriverManaqer.qetConnection(url,"user工D","passwd");对于不同的数据库,)商提供的驱动程序和连接的URL都不相同,见表5-1。上一页下一页返回5.1JDBC简介5.1.2ConnectionConnection对象代表与数据源进行的唯一会话。连接过程包括所执行的SQL语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。一种简单而有效的与数据库建立连接的方法是调用DriverManager.getConnection)方法。该方法接受含有某个JDBCURL的字符串。当调用方法getConnection()时,DriverManager类将尝试检查己经注册的Drive:类的清单中的每个驱动程序,直到找到可与JDBCURL中指定的数据库进行连接的驱动程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年赤壁教学设计自我反思
- 水平仪定期校验记录表
- 2026下半年小学语文教资面试诗歌鉴赏题库
- 2025-2026学年钢琴教学视频app设计
- 2026年年度企业管理部主管年度工作情况汇报课件
- 2025-2026学年高粱的拼音教学设计
- 2025年河北省安国市高二生物上册期末考试试卷及完整答案【夺冠系列】
- 2026年黑龙江省抚远市高二历史下册期末考试检测卷及参考答案【巩固】
- 2025年山东省诸城市高二生物下册期末考试模拟检测卷加答案
- 2025年福建省建瓯市高二生物下册期末考试模拟卷含答案(综合题)
- 2024新科普版英语九年级上单词表(开学版)
- GB/T 47840-2026电气绝缘液体与结构材料相容性试验方法
- 肺炎的种类及其预防措施
- 杭州社区工作者招考真题及答案2025
- 索尼微单相机A7 II(ILCE-7M2)使用说明书
- 调取监控申请书
- 人工智能训练师理论知识考核要素细目表一级
- GB/T 9799-2024金属及其他无机覆盖层钢铁上经过处理的锌电镀层
- 第1课 社会主义在中国的确立与探索 教案-2023-2024学年中职高教版(2023)中国特色社会主义
- 第五课培养学习兴趣
- 配电箱技术规格书
评论
0/150
提交评论