⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servlet_resource.txt

📁 详细讲述Servlet
💻 TXT
字号:
第四章 资源访问1、数据源(DataSource)	我们之前获得数据库的连接通过DriverManager.getConnection(url,user,password)获得数据库的连接Connection,对于连接数据库的配置参数写在一个properties的文件中,下次要更改数据库的话,只要将配置文件修改一下,这种方式虽然挺方便,但是有一个致命的弱点,每个用户要访问数据库,就要获得一个和数据库的连接(Connection),访问结束通过close()关闭和数据的连接,这种方式会造成以下的影响:	1)每个创建和数据库的连接时,都要先将Connection加载到内存,再来验证用户名和密码,等到一切通过后,再与用户建立连接,断开连接后又要重复执行一次。如此冗长的程序,既耗时又没有效率,而且会频繁地占用系统资源,如果用户频繁的连接数据库的话,系统的开销是很大的,很容易引起数据库的瘫痪。	2)如果用户没有关闭和数据库的连接,那么该连接将一直占用系统的资源,容易引起数据库的瘫痪。	在JDBC2.0中提供了数据源(DataSource)接口解决了这个问题,数据源是在web应用服务器上配置的,用户配置完DataSource后,在你的应用程序中只要获得DataSource,然后再调用它的一个getConnection()方法就可以获得和数据库的连接,至于数据源是如何管理用户和数据库的连接的,请看下面的连接池部分。2、连接池	在数据源中提供了一个连接池,数据源就是负责提供连接池的功用,我们所需要的是从数据源的连接池中获取数据库的连接Connection,那是如何获得连接的呢?	1)在web应用服务器上配置了数据源后,在应用服务器启动以后,会预先创建若干个和数据库的物理连接Connection放置在连接池中,创建的连接数可以设定。	2)当用户调用DataSource的getConnection()后,就会获得连接池中某个预先创建好的Connection,和它建立起了连接关系,这是一个逻辑连接,这样用户就可以访问数据库了。当访问完毕,就调用close()断开连接,将获得的Connection放回到连接池中,供其它用户获取。	3)连接池可以设定用户连接数据库的最大时限,如果用户在使用完毕后没有调用close()方法关闭连接的话,那么在超过这个时限后连接池会自动断开用户和数据库的连接,这样就不会一直占用系统的资源。3、JNDI	JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是命名服务的自然扩展。两者之间的关键差别是目录服务中对象可以有属性(例如,用户有email地址),而命名服务中对象没有属性。因此,在目录服务中,你可以根据属性搜索对象。JNDI允许你访问文件系统中的文件,定位远程RMI注册的对象,访问象LDAP这样的目录服务,定位网络上的EJB组件。	我们大家每天都不知不觉地使用了命名服务。例如,当你在web浏览器输入URL,http://java.sun.com时,DNS(Domain Name System,域名系统)将这个符号URL名转换成通讯标识(IP地址)。命名系统中的对象名称可以是URL,对象是IP地址。 	关于JNDI要注意的重要一点是,它提供了应用编程接口(application programming interface,API)和服务提供者接口(service provider interface,SPI)。这一点的真正含义是,要让你的应用与命名服务或目录服务交互,必须有这个服务的JNDI服务提供者,这正是JNDI SPI发挥作用的地方。服务提供者基本上是一组类,这些类为各种具体的命名和目录服务实现了JNDI接口—很象JDBC驱动为各种具体的数据库系统实现了JDBC接口一样。作为一个应用开发者,你不必操心JNDI SPI。你只需要确认你要使用的每一个命名或目录服务都有服务提供者。 Java 2 SDK 1.4.x的最新版本包括了几个增强和下面的命名/目录服务提供者: 	1) LDAP(Lightweight Directory Access Protocol)		服务提供者(简单目录访问协议) 	2) CORBA COS(Common Object Request Broker Architecture Common Object Services)		命名服务提供者地址 	3) RMI(Java Remote Method Invocation)		注册服务提供者 	4) DNS(Domain Name System)		服务提供者	在JNDI中,命名服务上下文用接口javax.naming.Context表示,这个接口是与命名服务交互的关键接口。目录服务上下文javax.naming.directory.DirContext接口是与目录服务交互的关键接口。	几乎所有计算平台都要依靠某种标准化的命名系统来查找、获取以及存储资源。例如,文件系统靠的是文件和目录名,目录服务靠的是对象名,而DNS系统依靠URL——你就是靠它找到IP地址.4、 转发请求至新的资源	1) RequestDispatcher的二种传送请求方式		a) Forward: 将请求从一个servlet传到服务器上的其他资源(servlet、JSP、HTML);		b) Include:将当前页面的内容包含进request中,一起转发到指定的资源	2) 获得RequestDispatcher的二种方式:       		a) ServletRequest.getRequestDispatcher(url).forward(request,response)      			将request转发给指定的资源或者将指定的资源包含进response中      		//url可以为相对路径(相对于当前的ServletPath),也可以为绝对路径(跟下面一样)       		b) ServletContext.getRequestDispatcher("/login.html").forward(request,response)			将request转发给指定的资源或者将指定的资源包含进response中   		 //url必须为绝对路径(如 /login.html,“/”代表了web应用程序的上下文的路径)5、重定向	response.sendRedirect(绝对路径),客户端要向服务器端发起两次request请求。比如:response.sendRedirect(request.getContextPath()+"/login.html");6、四种资源访问的范围       a. javax.servlet.ServletContext: 整个应用程序范围内(一个web应用程序只有一个此对象)       b. javax.servlet.http.HttpSession: 会话期间       c. javax.servlet.ServletRequest: 一个请求期间       d. javax.servlet.jsp.PageContext: 一个JSP页面

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -