南理工计算机J2EE考核重点_第1页
南理工计算机J2EE考核重点_第2页
南理工计算机J2EE考核重点_第3页
南理工计算机J2EE考核重点_第4页
南理工计算机J2EE考核重点_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

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

文档简介

一◆◆◆◆http协议◆HTTP协议用于在Internet上发送和接收消息。是一种请求-应答式的协议—客户端发送一个请求,服务器返回该求的应答,所有的请求与应答都是HTTP包。HTTP协议使用可靠的TCP连接,默认端口是80。是一种无状态协议,在HTTP中,Client/Server之间的会话总是由客户端通过建立连接和发送HTTP请求包初始化,服务器不会主动联系客户端或要求与客户端建立连接.浏览器和服务器都可以随时中断连接,例如,在浏览网页时你可以随时点击“停止”按钮中断当前的文件下载过程,关闭与Web服务器的HTTP连接.不维持状态,一次请求和响应构成一个独立的事务,不同事务之间没有状态联系。◆请求包:三部分别是:方法-URI-协议/版本,请求头,请求正文(GET/index.jspHTTP/1.1)(Accept-Language:zh-cn;Connection:Keep-Alive;Host:06;Content-Length:37)(userName=new_andy&password=new_andy)◆HTTP应答包:三部分,分别是:协议-状态代码-描述,应答头,应答正文(HTTP/1.1200OK)(Server:Microsoft-IIS/4.0;Date:Mon,3Jan200513:13:33GMT;Content-Type:text/html;Last-Modified:Mon,1Jan200413:23:42GMT;Content-Length:90)(<html><head><title>解读HTTP包示例</title></head><body>HelloWORLD!</body></html>)◆HTTP最基本的请求类型GET和POST:HTTP1.1支持七种请求方法:GET,POST,HEAD,OPTIONS,PUT,DELETE和TRACE等.GET请求最为常见,它后面跟随一个网页的位置,服务器接受请求并返回其请求的页面。除了页面位置作参数之外,请求还可以跟随协议的版本如HTTP/1.0等作为参数,以发送给服务器更多的信息.POST请求要求服务器接收大量的信息,除了POST后面跟随的参数之外,浏览器还会在后面持续发送数据,让服务器进行处理。通常,POST方法是和CGI程序分不开的,服务器应该启动一个CGI程序来处理POST发送来的数据.◆URI与URL:URI--UniversalResourceIdentifier通用资源标志符(1访问资源的命名机制2存放资源的主机名3资源自身的名称,由路径表示),Web上可用的每种资源,如HTML文档,图像,视频片段,程序等,由URI进行定位。URL--UniformResourceLocation统一资源定位符,Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,采用URL可以用一种统一的格式来描述各种信息资源,包括文件,服务器的地址和目录等。◆url的语法:三部分:1.访问资源的命名机制。2.存放资源的主机名。3.资源自身的名称,由路径表示。由三部分组成:一是协议;二是存有该资源的主机IP地址(有时也包括端口号);三是主机资源的具体地址,目录和文件名等。第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。语法如下:http_URL=http://host[“:”port][path]例如:http//:/◆状态代码:400BadRequest请求出现语法错误401Unauthorized客户试图未经授权访问受密码保护的页面403Forbidden资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致404NotFound无法找到指定位置的资源。这也是一个常用的应答500InternalServerError服务器遇到了意料不到的情况,不能完成客户的请求501NotImplemented服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求;◆◆web应用程序:◆Web应用程序是servlets,jsp页面HTML页面,类,和其他资源等的集合缺省情形下,Web应用程序的实例必须运行在一个JVM(javavirtualmachine)中以两种方式存在于文件系统:一是web归档文件,以.war扩展名结尾;一是web归档文件展开后的目录结构◆Web应用程序的元素:Servlets,JSP页面,帮助类,静态文档(HTML,images,sounds,etc.),客户端的Javaapplets,beans,andclasses等,把上述元素组合起来的描述性的元信息(后缀.xml)◆web目录结构web应用程序的标准规划被定义为层次结构的目录和文件。该层次结构有两种组织形式。一种是“unpacked”方式,这种情况下每个目录和文件分散的保存在文件系统中,在开发期间比较有用;另一种是“packed”方式,如WebArchive或称WAR文件,主要用于应用程序的发布安装。web应用程序层次结构的顶级目录也即应用程序的documentroot(根文档),通常在该位置放置包含应用程序用户界面的HTML文件和JSP页面。当系统管理员将应用程序部署到一个特定的服务器上时,他将分配一个contextpath(上下文路径)给应用程序。因此,如果系统管理员给应用程序分配的上下文路径为/catalog,则指向/catalog/index.html的URI请求将从根文档下获取index.html文件。应用程序的"根文档"目录放置内容:1◆*.html,*.jsp,etc.:应用程序中的HTML文件、JSP页面文件及其他必须对客户端浏览器可见的文件(如JavaScript,stylesheet文件,images文件)。对于大型应用程序,你需要考虑把这些文件分别放置在不同的子目录结构中,但对于一个小应用程序,通常简单地把这些文件保存在同一个目录下。2◆/WEB-INF是根文档下一个特殊的目录。/WEB-INF/web.xml:Web应用程序的部署描述器(WebApplicationDeploymentDescriptor)。一个XML文件,描述servlets和其他组件,同时包括一些初始化参数、及需要服务器执行的容器管理的安全限制等。/WEB-INF/classes/:这个目录下保存所有的应用程序需要的、没有被打包到JAR文件中的Java类文件(及相关资源),包括servlet和non-servlet类。如果类被组织成Java的包,则必须在/WEB-INFO/classes/下以目录层次结构的方式保存。例如,一个名com.mycompany.mypackage.MyServlet的类,就应该保存为/WEB-INF/classes/com/mycompany/mypackage/MyServlet.class。/WEB-INF/lib/:这个目录下保存打包了Java类文件(及相关的资源)的JAR文件,如第三方的类库或JDBC驱动程序等。/WEB-INF是根文档下一个特殊的目录◆web部署描述符:在每一个Web应用程序路径的WEB-INF下存在一个web.xml配置文件,用来设定Web应用程序的配置。通常包括如下类型的配置和部署信息:1.ServletContextInitParameters2.SessionConfiguration3.Servlet/JSPDefinitions4.Servlet/JSPMappings5.MIMETypeMappings6.WelcomeFilelist7.ErrorPages8.Security9.FordetailstoseeDeploymentDescriptorDiagram1.servletElementStructure2.servlet-mappingElementStructure3.session-configElementStructure4.welcome-file-listElementStructure二◆◆◆◆J2EE应用程序◆◆C/S模型从本质上讲是一种软件结构,它包括三种逻辑成分:表示逻辑,业务处理逻辑,数据管理逻辑.◆C/S模型的缺陷:系统维护困难,系统的性能随用户数的增加而下降,系统的安全性差,系统的伸缩性差,客户机负载过重◆B/S模型:表示逻辑,业务处理逻辑,数据处理逻辑集中,客户端只需要安装一个浏览器Browser.优:维护和升级方式简单.成本降低,选择更多.不限制客户平台,客户端统一采用浏览器即可运行全部的模块.劣:应用服务器运行数据负荷较重◆分布式多层应用程序模型(右图)◆J2EE组件:是一个包含一定功能的软件单元,它有相关的类和文件一起组成,并与其他组件进行通信,J2EE应用程序由许多不同的组件组成(包括EJB组件,Web组件,客户层组件)J2EE客户端包括以下三个◆Web客户端:由两部分组成:1由运行在Web层的Web组件生成的包含各种标记语言(HTML,XML等等)的动态Web页面(①交互性,②自动更新,③因时因人而变)2接收从服务器传送来的页面并将它显示出来的Web浏览器(一般是瘦客户端,不做数据库查询,执行复杂的商业规则及连接传统应用程序这样的操作◆applet(客户端小型应用程序)从Web层接收的一个Web页面可以包含内嵌的applet,一个applet是一个用Java编程语言编写的小的客户端应用程序,它在安装在Web浏览器中的Java虚拟机中运行,为了在Web浏览器中成功地运行applet,客户端系统很可能需要Java插件和安全策略文件.◆Application客户端◆Web组件:既可以是servlet也可以是JSP页面.Servlets是一个Java类,它可以动态地处理请求并作出响应.JSP页面是一个基于文本的文档,它以servlet的方式执行,但是它可以更方便建立静态内容.静态的HTML页面,applet,服务器端的功能类并不被J2EE规范视为Web组件◆Business组件:由运行在业务层的enterprisebeans(EJB)处理,包括:会话beans,实体beans,and消息驱动beans.◆EIS层:企业信息系统层处理企业信息系统软件并包含诸如企业资源计划(ERP)、主机事务处理、数据库系统和其它传统系统这样的底层系统。J2EE应用程序组件可能需要访问企业信息系统,例如获得一个数据库连接。◆J2EE容器:容器为J2EE应用程序组件提供了运行时支持,容器充当组件与支持组件的底层特定于平台的功能之间的接口,J2EE服务器以容器的形式为每一个组件类型提供底层服务。◆容器服务:容器是一个组件和支持组件的底层平台特定功能之间的接口,在一个Web组件、enterprisebean或者是一个应用程序客户端组件可以被执行前,它们必须被装配到一个J2EE应用程序中,并且部署到它们的容器。装配的过程包括为J2EE应用程序中的每一个组件以及J2EE应用程序本身指定容器的设置。容器设置定制了由J2EE服务器提供的底层支持,这将包括诸如安全性、事务管理、Java命名目录接口(JNDI)搜寻以及远程序连接。J2EE的安全性模式可以让你对一个Web组件或enterprisebean进行配置以使得只有授权用户访问系统资源。J2EE的事务模式可以让你指定方法之间的关系以组成一个单个的事务,这样在一个事务中的所有方法将被视为一个单一的整体。JNDI搜寻服务为企业中的多种命名目录服务提供一个统一的接口,这使得应用程序组件可以访问命名目录服务。J2EE远程连接模式管理客户端和enterprisebean之间的底层通信。在一个enterprisebean被建立后,客户端在调用其中的方法时就象这个enterprisebean就运行在同一个虚拟机上一样。J2EE体系结构提供了可配置的服务意味着在相同的J2EE应用程序中的应用程序组件根据其被部署在什么在地方在实际运行时会有所不同。容器还管理诸如一个enterprisebean和servlet的生存周期、数据库连接资源池等不能配置服务。◆容器类型:EJB容器是执行J2EE应用程序的EJB组件所必需的,Applet容器用于管理Applet执行所必需的,其中,Web浏览器和Java插件将一起在客户端上运,Web容器管理J2EE应用程序的Servlet和JSP页面的执行,应用程序客户端容器是管理应用程序客户端组件执行所必需的。◆J2EE核心技术:JavaServlet,JavaServerPages,JDBC,JNDI,EnterpriseJavaBeans(EJB),Java邮件API,用于XML处理的JavaAPI,用于基于XML的RPC的JavaAPI,用于Java的带有附件API的SOAP,Java事务处理API,Java命名和目录接口◆开发、封装和部署J2EE应用程序:1开发环境搭建:(操作系统平台的选择,应用服务器的选择,数据库服务器的选择,开发工具的选择)2创建组件—封装组件—应用程序汇编—应用程序部署,三种角色:应用程序组件提供者,应用程序汇编者,部署者三◆◆◆◆Servlet技术◆JavaServlets:是基于Java技术的Web组件,用来扩展以请求/响应为模型的服务器的能力,提供动态内容。Servlet是使用JavaServlet应用程序设计接口(API)及相关类和方法的Java程序。因为是对象字节码,可动态地从网络加载。Servlet由容器或引擎来管理,通过请求/响应模型与Web客户进行交互◆servlet容器:servlet由servlet容器管理,servlet容器也叫servlet引擎,是servlet的运行环境,servlet容器是web服务器或应用服务器的一部分管理和维护servlet的整个生命周期必须支持http协议,负责处理客户请求、把请求传送给适当的servlet并把结果返回给客户。虽然容器的实现可能各不相同,但容器与servlet之间的接口是由servletAPI定义好的,规定了servlet容器在servlet上要调用的方法及传递给servlet的对象类。◆实现servletd的三种方法:publicclassExampleimplementsServlet(extendsGenericServlet,extendsHttpServlet)◆servlet接口,定义在javax.servlet.Servlet,当在编写某个servlet的时必须直接或间接的实现这个接口.一般趋向于间接实现:通过从javax.servlet.GenericServlet或javax.servlet.http.HttpServlet派生.,在实现servlet接口时必须实现它的五个方法1publicvoidinit(ServletConfigconfig)throwsServletException,一旦对servlet实例化后,容器就调用此方法.容器把一个ServletConfig对象传统给此方法,这样servlet的实例就可以把与容器相关的配置数据保存起来供以后使用.如果此方法没有正常结束就会抛出一个ServletException.一旦抛出该异常,servlet就不再执行,而随后对它的调用会导致容器对它重新载入并再次运行此方法.接口规定对任何servlet实例,此方法只能被调用一次,在任何请求传递给servlet之前,此方法可以在不抛出异常的情况下运行完毕.2publicvoidservice(ServletRequestreq,ServletResponseres)throwsServletException,IOException,只有成功初始化后此方法才能被调用处理用户请求.前一个参数提供访问初始请求数据的方法和字段,后一个提供servlet构造响应的方法.3publicvoiddestroy()容器可以在任何时候终止servlet服务.容器调用此方法前必须给service()线程足够时间来结束执行,因此接口规定当service()正在执行时destroy()不被执行4publicServletConfiggetServletConfig()在servlet初始化时,容器传递进来一个ServletConfig对象并保存在servlet实例中,该对象允许访问两项内容:初始化参数和ServletContext对象,前者通常由容器在文件中指定,允许在运行时向sevrlet传递有关调度信息,后者为servlet提供有关容器的信息.此方法可以让servlet在任何时候获得该对象及配置信息.5publicStringgetServletInfo()此方法返回一个String对象,该对象包含servlet的信息,例如开发者、创建日期、描述信息等.该方法也可用于容器.◆GenericServlet类1实现Servlet、ServletConfig、Serializable2提供了servlet接口的基本实现部分,其service()方法被申明为abstract,因此需要被派生.3init(ServletConfigconf)方法把servletConfig对象存储在一个privatetransient(私有临时)实例变量里4getServletConfig()方法返回指向本对象的指针,如果重载此方法,将不能使用getServletConfig来获得ServletConfig对象,如果确实想重载,记住要包含对super.config的调用.5log(Stringmsg)方法将servlet的名称和msg参数写到容器的日志中6getservletContext(),得到一个context实例,用于和环境交互,每个web只有一个context,context是定义在<web-app><context-param>中的全局参数。Context对象也可以用getServletConfig.getservletContext()得到,但只能访问与之对应的servlet中的<init-parameter>7this.getInitParameter(“name”)=this.getServletConfig.getInitParameter(“name”)◆HttpServlet类1扩展了GenericServlet类并对servlet接口提供了与HTTP更相关的实现2protectedvoidservice(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException该方法作为HTTP请求的分发器,任何时候都不能被重载.当请求到来时,service()方法根据请求的类型(GET,POST,HEAD,OPTIONS,DELETE,PUT,TRACE),并把请求分发给相应的处理方法(doGet(),doPost(),doHead(),doOptions(),doDelete(),screen-->在客户端页面源程序中显示为:<!--Thisfiledisplaystheuserloginscreen-->例2<!-页面调用日期为:<%=(newjava.util.Date()).toLocaleString()%>-->在客户端页面源程序中显示为:<!--页面调用日期为:January1,2000-->◆JSP页面的生命周期:翻译和编译(转换阶段),执行阶段。◆JSP执行过程:jsp文件在用户第一次请求时,会被编译成Servlet,然后由这个Servlet处理用户的请求,所以Servlet可以看成是运行时的jsp,jsp容器(也就是Servlet容器)管理jsp页面声明周期分为两个阶段.即转换阶段和执行阶段,当有一个对jsp页面的请求到来时,jsp容器检查jsp页面的语法是否正确,将jsp页面转换为Servlet源文件,然后调用javac命令编译Servlet源文件生成字节码文件.这是转换阶段,Servlet容器加载转换后的Servlet类,这是执行阶段。◆JSP隐式对象:◆1输入/输出对象:控制页面的输入和输出,访问与所有请求和响应有关的数据,输入和输出对象包括request、response和out。request对象:表示客户端对网页的请求,实javax.servlet.http.HttpServletRequest接口,使用HTTP协议处理客户端的请求.常用方法StringgetParameter(Stringname)根据页面表单组件名称获取请求页面提交数据String[]getParameterValues(Stringname)获取页面请求中一个表单组件对应多个值时的用户的请求数据,例如;Stringname=formatStr(request.getParameter("name"));response对象:处理JSP生成的响应,将响应发送给客户端,实现javax.servlet.http.HttpServletResponse接口,使用HTTP协议将响应发送给客户端。常用方法voidsetContentType(Stringname)设置作为响应生成的内容的类型和字符编码voidsendRedirect(Stringname)发送一个响应给浏览器,指示其应请求另一个URL。例如:response.setContentType("text/html;charset=GBK");response.sendRedirect("response2.jsp");out对象:表示输流,javax.servlet.jsp.JspWriter类的实例,以字符流的形式输出数据.通过page指令的,buffer属性来制定缓冲区的大小,默认是8kb,使用write()、print()和println()方法。例如:out.print(“欢迎来到JSP:隐式对象”);out.write(“欢迎来到JSP:隐式对象”);◆2作用域通信对象:包括:session对象:Web服务器为单个用户发送的多个请求创建会话,存储有关用户会话的所有信息,javax.servlet.http.HttpSession接口的实例,最常用的方法有:voidsetAttribute(Stringname,Objectvalue)以键/值的方式,将一个对象的值存放到session中,voidgetAttribute(Stringname)根据名称去获取session中存放对象的值,例如:Stringname=(String)session.setAttribute(“name”);application对象:表示JSP页面所属的应用程序,应用程序的JSP页面组合起来形成一个应用程序,javax.servlet.ServletContext接口实例,常用的方法有:voidsetAttribute(Stringname,Objectvalue)以键/值的方式,将一个对象的值存放到application中,voidgetAttribute(Stringname)根据名称去获取application中存放对象的值,例如:application.setAttribute(“ChartRecord”,“hihi”);pageContext对象:使用户可以访问页面作用域中定义的所有隐式对象,它的作用范围是在同一页面,javax.servlet.jsp.PageContext类的实例,常用的方法有:voidsetAttribute(Stringname,Objectvalue)以键/值的方式,将一个对象的值存放到pageContext中voidgetAttribute(Stringname)根据名称去获pageContext中存放对象的值。例如:(Integer)pageContext.getAttribute("pageCount");pageContext.setAttribute("pageCount",newInteger(Value()+1));◆3Servlet对象:JSP引擎为每个JSP生成一Servlet,Servlet对象提供了访问Servlet信息的方法和变量,Servlet对象包括page,config。page对象:使用page对象可以访问Servlet类的所有变量和方法(jsp页面中很少使用该对象),java.lang.Object类的一个实例。例如:<%=((javax.servlet.jsp.HttpJspPage)page).getServletInfo()%>config对象:存储在编译JSP页面的过程中创建的Servlet的信息,在Servlet初始化时向其传递配置信息,javax.servlet.ServletConfig接口的实例,提供了检索Servlet初始化参数的方法。例如:(String)config.getInitParameter(”PropertyFile”);exception对象:exception对象用于处理JSP页面中的错误,exception对象用于访问执行JSP的过程中引发的异常,◆4exception对象是java.lang.Throwable类的实例。例如:<%exception.printStackTrace(out);%>◆其他隐式对象:pageContext:提供对页面属性的访问param:返回客户端的请求参数的字符串值paramValues:返回映射至客户端的请求参数的一组值header:返回一个请求标题名称,然后将该值映射至单个字符串值headerValues:返回映射至请求标题的一组值cookie:返回映射至单个Cookie对象的Cookie名称initParam:返回映射至单个值的上下文初始化参数名称pageScope:返回页面范围的变量名,这些名称已映射至相应的值requestScope:返回对请求对象的属性的访问权限sessionScope:返回会话范围的变量名,这些名称已映射至相应的值applicationScope:返回应用范围内的变量,并将变量名映射至相应的值五◆◆◆◆JavaBean简述◆JavaBean:用Java语言描述的软件组件模型,与一般类的差别:遵循某些特定约定的Java类,分为可视化组件和非可视化组件,简单的GUI元素,如按钮或文本框,也可以是复杂的,如报表组件,没有GUI表现形式,用于封装业务逻辑,数据库操作等,最大的优点在于可以实现代码的可重用性,可移植性强JavaBean组件主要用于存储状态信息.◆编程规范:1需要特定的命空间(默认包是不允许的)2必须具备一个无参数(空)的构造函数(办法:省略所有的构造函数显式定义一个无参数构造函数)3不应该有public的类属性(字段)4应该通过getXxx和setXxx方法来访问类的属性,布尔型的属性使用isXxx,而非getXxx.◆不应使用public字段:可以对值加以约束,可以在不改变接口的情况下修改内部的表达,可以执行任意的边界效应。例子:1.javabean编写:(Putin…/WEB-INF/classes/coreservlets/StringBean.class)Packagecoreservlets;publicclassStringBean{privateStringmessage="Nomessagespecified";publicStringgetMessage(){return(message);}publicvoidsetMessage(Stringmessage){this.message=message;}}2.页面使用<jsp:useBeanid="stringBean"class="coreservlets.StringBean"/><OL><LI>Initialvalue(fromjsp:getProperty):<I><jsp:getPropertyname="stringBean"property="message"/></I>LI>Initialvalue(fromJSPexpression):<I><%=stringBean.getMessage()%></I><LI><jsp:setPropertyname="stringBean"property="message"value="Beststringbean:Fortex"/>Valueaftersettingpropertywithjsp:setProperty:<I><jsp:getPropertyname="stringBean"property="message"/></I>LI><%stringBean.setMessage("Myfavorite:KentuckyWonder");%>Valueaftersettingpropertywithscriptlet:<I><%=stringBean.getMessage()%></I></OL>六◆◆◆◆JDBC简介◆JDBC本身是个商标名而不是一个缩写字“JavaDatabaseConnectivity”.一种用于执行SQL语句的JavaAPI,由一组类和接口组成.为工具/数据库开发人员提供了一个标准的API,使他们能够用纯JavaAPI来编写数据库应用程序.采用JDBC,不需要针对各种关系数据库编写不同的数据库程序.将Java和JDBC结合起来将使程序员只须写一遍程序就可让它在任何平台上运行.◆体系结构:应用程序-JDBCAPI-JDBCDriverManager-数据库驱动◆数据库驱动有四种;Type1;JDBC-ODBC

Bridge,Type桥接器驱动程序之一,特色是必须在使用者端的计算机上事先安装好ODBC驱动程序,然后通过JDBC-ODBC的调用方法,进而通过ODBC来存取数据库.ApplicationJDBC-ODBC

BridgeJDBC-ODBC

LibraryODBC

DriverDatabase

,适用于快速的原型系统,没有提供JDBC驱动的数据库如Access

◆2;JDBC-Native

API

Bridge,Type;桥接器驱动程序之一,这类驱动程序也必须先在使用者计算机上先安装好特定的驱动程序(类似ODBC),然后通过JDBC-Native

API桥接器的转换,把Java

API调用转换成特定驱动程序的调用方法,进而存取数据库.利用开发商提供的本地库直接与数据库通信.ApplicaJDBC

DriverNative

Database

libraryDatabase

比A类性能略好◆3;JDBC-middleware,好处;省好处:省去了在使用者计算机上安装任何驱动程序的麻烦,只需在服务器端安装好middleware,而middleware会负责所有存取数据库必要的转换。具有最大的灵活性,通常由那些非数据库厂商提供.ApplicationJdbc

Driverjava

middlewareJDBC

DriverDatabase,

◆Type4;Pure

JDBC

driver这类型的驱动程序是最成熟的JDBC驱动程序,不但无需在使用者计算机上安装任何额外(不包括JDBC

Driver即JDBC

API)的驱动程序,也不需要在服务器端安装任何中介程序(middleware),所有存取数据库的操作,都直接由驱动程序来完成.ApplicationJdbc

driver>database

enginedatabase最高的性能,通过自己的本地协议直接与数据库引擎通信,具备在Internet装配的能力.◆JDBCAPI;JDBC是一种低级API,是高级API的基础JDBC是个“低级”接口,用于直接调用SQL命令.在这方面功能极佳,并比其它的数据库连接API易于使用.高级接口是“对用户友好的”接口,它使用的是一种更易理解和更为方便的API,这种API在幕后被转换为诸如JDBC这样的低级接口.核心的JDBCAPI在包java.sql中.JDBCAPI实现了四个基本的功能;建立与数据的连接,执行SQL语句和处理执行结果,关闭数据库的连接.JDBCAPI实现了四个基本的功能:建立与数据的连接、执行SQL语句和处理执行结果,关闭数据库的连接.◆Driver接口;JDBC驱动程序必须实现Driver接口,且该实现必须包含一个静态的初始化块,静态的初始化块使用DriverManager注册自身一个新实例.PublicclassMeDriverimplementsjava.sql.Driver{static{java.sql.DriverManager.registerDiver(newMeDriver())}}当使用Class.forName(“com.acme.jdbc.AcmeJdbcDriver”),加载该驱动的实例时静态的代码块将自动的注册该驱动的实例.当DriverManager试图建立某个数据库连接时,DriverManager调用驱动程序的connect()方法,并把数据库连接的URL传递给它.JDBCURL提供了一种标识数据库的方法.可以使相应的驱动程序能识别该数据库并与之建立连接.URL语法jdbc:<subprotocol>:<subname>JDBCURL中的协议总是jdbc,<subprotocol>子协议用来标识一种特定种类的数据库连接机制,<subname>的内容依赖于子协议,推荐的语法是://hostname:port/subsubname例;jdbc:mysql://localhost:3306/jpetstore?autoReconnect=true或jdbc:odbc:fredodbc子协议,是一种特殊情况.用于指定ODBC风格的数据资源名称的URL而保留的,并具有下列特性;允许在子名称(数据资源名称)后指定任意多个属性值.odbc子协议的完整语法为;jdbc:odbc:<数据资源名称>[;<属性名>=<属性值>]*合法的名称;jdbc:odbc:qeor7,jdbc:odbc:wombat,jdbc:odbc:wombat;CacheSize=20;ExtensionCase=LOWER,jdbc:odbc:qeora;UID=kgh;PWD=fooey◆DataSource接口;DataSource对象表示一个数据源,并提供了该数据源的连接使用DataSource对象增加了应用程序的可移植性(使用逻辑名称表示一个数据源,取代为驱动程序提供特定的连接信息)DataSource的属性改变,应用程序代码不需要改变.DataSource接口属性:databaseName,dataSourceName,description,networkProtocol(int),password,portNumber,roleName,serverName,user.DataSource属性遵循JavaBeans组件中属性的命名约定,DataSource的实现必须为每个支持的属性提供存取方法“getter”and“setter”,DataSource的属性对于JDBC客户端来说不是直接可访问的.使用JNDIAPI,指定逻辑名来访问DataSource对象,把逻辑名映射到相应的数据源.◆DriverManager类;负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并向DriverManager注册后才可以使用,同时提供方法来建立与数据库的连接。通过指定的URL查找合适的驱动DriverManager关键方法registerDriver,getConnection(Stringurl),getConnection(Stringurl,java.util.Propertiesprop)◆Connection类:Connection对象代表与数据库的连接。建立到底层数据源的连接有两种DriverManager,DataSource连接过程包括所执行的SQL语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。使用DriverManager的例子:StringclassName,url,uid,pwd;className=“com.microsoft.jdbc.sqlserver.SQLServerDriver”;url=“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testJDC;User=user;Password=password;//thehard-codeURLuid=”sa“;pwd=“sa”;Class.forName(className);//loadthedriverConnectioncn=DriverManager.getConnection(url);//Connectioncn=DriverManager.getConnection(url,uid,pwd)使用DataSource的例子:Stringjndi="jdbc/jpetstore1";Contextctx=(Context)newInitialContext().lookup("java:comp/env");DataSourceds=(DataSource)ctx.lookup(jndi);Connectioncn=ds.getConnection();◆Statement类:可以利用标准的SQL命令,对数据库直接新增、删除或修改操作

实现这种功能的类有三个:Statement、PreparedStatement,CallableStatement。创建Statements对象:通过Connection对象建立可创建多个Statements对象,供程序并发使用conn=DriverManager.getConnection(url,"简X","sb");Statementsb1=conn.creatStatement();Statementsb2=conn.creatStatement();执行select:ResultSet

executeQuery(String

sql)

throws

SQLException

:ResultSet

rs=sb1.executeQuery("select*from简X表")

;使用INSERT\DELETE\UPDATE对数据库进行新增、删除和修改操作:introws=sb1.

executeUpdate("update简X表setname='SEX'"+"whereNo=18")

;void

close()

throws

SQLException://结束Statement类对象对数据库的联机调用此方法表明已完成sql的执行创建Statement的Connection对象关闭,将导致Statement对象关闭关闭Statement对象将会导致,由Statement对象获得的ResultSet对象不在有效。◆PreparedStatement类

:是Statement的子类,在创建PreparedStatement时,会提供一个SQL语句。区别在于:PreparedStatement类对象会将传入的SQL命令事先编好等待使用,当有单一的SQL指令比多次执行时,用PreparedStatement类会比Statement类有效率。一般来说,使用PreparedStatement对象都是带输入参数的。例子(当前的表中有如下几个字段ID,NAME,PASSWORD,TEXT,NOTE):Connectioncon=DriverManager.getConnection(url,user,password);PreparedStatementinsertStatement=con.prepareStatement("INSERTINTOrbac_applicationvalues(?,?,?,?,?)");insertStatement.setInt(1,10);insertStatement.setString(2,"thinkersky");insertStatement.setString(3,"88888");insertStatement.setString(4,"这是个测试的应用程序");insertStatement.setString(5,"备注");intresult=insertStatement.executeUpdate();con.close();

◆CallableStatement类:是Statement的子类为所有的DBMS提供了一种以标准形式调用储存过程的方法。储存过程储存在数据库中。这种调用是用一种换码语法来写的,有两种形式:一种形式带结果参,另一种形式不带结果参数。结果参数是一种输出(OUT)参数,是已储存过程的返回值。两种形式都可带有数量可变的输入(IN参数)、输出(OUT参数)或输入和输出(INOUT参数)的参数。问号将用作参数的占位符。

例子:CallableStatementcstm=connection.prepareCall("{callreturn_student[?,?]}");cstm.setString(1,"8623034");cstm.registerOutparameter(2,Types.REAL);cstm.execute();floatgpa=cstm.getFloat(2);◆ResultSet类:在以下方面确定了ResultSet的功能:光标操作的方式对于底层数据源的改变如何反映到ResultSet对象.有三种类型:TYPE_FORWARD_ONLY〔默认值〕TYPE_SCROLL_INSENSITIVETYPE_SCROLL_SENSITIVE.ResultSetConcurrency〔并发性〕:有两个并发性层次:CONCUR_READ_ONLY〔默认值〕CONCUR_UPDATABLE。ResultSet持久性:holdability常量有:HOLD_CURSORS_OVER_COMMITCLOSE_CURSORS_AT_COMMIT◆光标移动:光标指向ResultSet对象的当前行,

温馨提示

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

评论

0/150

提交评论