jndi技术,dao模式开发数据库项目,jsp指令

本文介绍了JNDI技术,用于在服务器上查找和管理资源,降低了代码耦合性并实现了资源共享。数据库连接池如c3p0和Druid解决了频繁创建和关闭数据库连接的资源消耗问题。文章还详细讲解了如何配置和使用数据库连接池,并通过Tomcat的Context.xml配置资源。此外,文章提到了三层架构(显示层、业务逻辑层和数据访问层)以及DAO模式在数据访问中的作用,最后讨论了MVC模式在项目开发中的重要性和各部分职责。

jndi技术,dao模式开发数据库项目,jsp指令

1、jndi 方式链接资源
(1)、jndi介绍:(java name derictory interface)
jndi 就是服务器的一种技术,用于帮我们的项目代码查找资源。
包括文本资源,jar包资源,还有配置信息资源。

	(2)、jndi的优点:
			1、jndi的好处就是,可以不用在你的项目中修改配置信息了。
					这样就可以降低代码的耦合性,
			2、只要是在服务器里面部署的项目,都可以共用这些资源。
			
	(3)、jndi的使用。
	
		练习1:
		
			* 在服务器tomcat里面要配置相关的信息。
			
				在服务器tomcat的conf 目录下,找到 
				context.xml,在里面加入<Environment>标签内容。
				
					<Context>
					
					   <Environment name="tjndi" value="hello JNDI" type="java.lang.String" />
					   
					</Context>

			java 代码在 jsp页面里面要写的东西。
	
					// javax.naming.Context提供了查找JNDI 的接口
					
					Context ctx = new InitialContext();	
					
					// java:comp/env/为前缀
					String testjndi = (String)ctx.lookup("java:comp/env/tjndi");
					out.print("JNDI: " + testjndi);

					
	(4)、 注意: jndi技术,只能应用在web应用,jsp等相关页面中获取。
				而java代码的main方法里面,获取jndi是获取不到的。
				本质上,是因为main方法运行根本就不依靠 服务器			

2、数据库连接池的讲解。

(1)、数据库链接池技术出现的背景:
		因为我们每次访问数据库,都需要创建数据库链接,用完了又关闭。
		如果频繁访问数据库的话,那么创建数据库链接,将是非常耗费资源的事情。
		——>出现的数据库连接池的技术。
			之前给大家介绍过的,数据库连接池的jar包,c3p0 ,druid
			
(2)、数据库链接池技术的原理:
		主要是为了解决数据库链接耗费大量系统资源的问题。
		
		* 通过jndi的方式,来获取数据库资源管理。
				javax.sql.DataSource 接口的实现类
				负责管理与数据库的连接
				以连接池的形式对数据库连接进行管理		

(3)、怎么用。
			
		1、也需要配置服务器tomcat里面的Context.xml里面的配置。
		
			   <Resource name="jndi_jdbc" auth="Container" type="javax.sql.DataSource"
				  maxActive="100" maxIdle="30" maxWait="10000" username="root"
				  password="123" driverClassName="com.mysql.jdbc.Driver"
				  url="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=utf-8" />
				  
			解释<Resource>标签内容:	
				1、name=""  auth=""    type=""
				2、maxActive="10" 	最大数据库链接数量
					maxIdel="5"		平时准备数据库链接数量
					maxWait="3000" 	最大链接超时的时间。以毫秒为单位
				3、username=""  pasword="" driverClassName="" url=""
		
		
		2、也需要通过web、项目中的jsp页面编写代码获取。
			
			(1)、需要把数据库链接的jar包,放到服务器tomcat的lib目录下。
					mysql-connector-java-5.1.37-bin.jar
					
					
			(2)、配置项目的web.xml 里面,获取资源管理的配置。
						
					  <resource-ref>
						<res-ref-name>jdbc_poll</res-ref-name>
						<res-auth>Container</res-auth>
						<res-type>javax.sql.DataSource</res-type>
					  </resource-ref>
					
					如果项目有报错,提示下面的错误,那么都是web版本出现问题。
						cvc-complex-type.2.4.a: Invalid content was found starting 
						 with element 'res-type'. One of '{"http://java.sun.com/xml/ns/
						 javaee":res-sharing-scope, "http://java.sun.com/xml/ns/
						 javaee":mapped-name, "http://java.sun.com/xml/ns/
						 javaee":injection-target}' is expected.						 
						
						 
					解决报错:
					 <web-app version="2.4" 
						 http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd
					 
					 
			
		3、 jsp页面中,java 代码的具体编写。
		
				
				//这里,我要获取获取服务器配置是数据库链接资源对象,然后获取数据库链接,进行访问。
					Context ctx = new InitialContext();
					
					//通过ctx、对象的lookup方法,获取到数据库资源对象。
					DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc_pool");
					
					//通过数据库资源对象(具有数据库连接池属性)。来获取数据库链接通道
					Connection conn = ds.getConnection();
					
					//通过数据库链接通道,获取sql执行对象。PreparedStatement
					PreparedStatement pstmt =
					conn.prepareStatement("insert into news_users values(null,'wwww','123123') ");
					
					// 接收PreparedStatement对象执行sql语句后,返回的结果。
					int result  = pstmt.executeUpdate();
					
					//处理返回结果。
					out.println(result);

3、三层架构

三层架构的开发思想,是针对于javaee 项目而言的,也就web项目。
三层架构的好处,就是让各部分代码,实现分内的事情。互相之间不干扰。
		好处1: 降低代码之间的耦合性,利于现有代码的维护。
		好处2: 提高代码的可扩展性,利于项目增加新功能开发。
		
		
(1)显示层:jsp页面,作为显示。servlet做页面的逻辑。

		业务逻辑层   Controler.jsp 页面里面做的逻辑业务处理。
		数据层		 JDBCUtils 专门做数据的处理
		页面显示层。 regist.jsp   login.jsp  welcome.jsp
		
	MVC 开发模式:
		M   model 模型   Accout 类, JDBCUtils
		v   view  视图   regist.jsp   login.jsp  welcome.jsp
		C   control控制   Controler.jsp 页面里面做的逻辑业务处理。

(2)业务逻辑层:只做业务逻辑 处理,不做页面的展示。
				比如我们之前做的登录注册项目:Controller.jsp
				这里面我们做的,就是页面逻辑处理,然后进行跳转页面。
				* 从页面中拿到数据,存放到数据库
				* 从数据库获取数据,然后显示在页面。
				* 从页面和数据库分别获取数据,然后进行逻辑处理。
				
	
(3)数据访问层: dao模式开发:

			数据库中的表account  封装一个类Account
			针对于account的增删改查,再创建一个dao的接口。 AccountDao
					在AccountDao封装增删改查的抽象方法。
					在给AccountDao 创建实现类。AccountImpl
					
							在方法中调用JDBCUtils
								进行增删改查的操作。
						

		dao模式: 通过封装一个数据库对应表的javabean 的方式,然后进行数据处理。
		dao: data access Object 数据访问对象。用对象的方式访问数据。
			dao模式开发:
				* 创建一个数据库操作的接口,里面定义一些操作数据库的抽象法。
				* 创建一个操作数据库的类,实现操作数据库的接口
					在里面重写所有要实现的方法,具体的访问数据库的CRUD
				* 封装一个与表一一对应的数据单元,javabean。
				* dao模式下,数据的传递,都是通过javabean对象的方式操作。

4、mvc模式开发。

(1)、MCV模式开发,包含三层架构:
		上面说了三层架构,是只针对于javaee web项目来说的。
		mvc模式开发,适用于所有项目,都是要按照这个思想模式开发的。

(2)、MVC模式的介绍:
		MVC模式是咱们具体工作中必备的开发模式。
		也是让各个部分代码之间相互独立,尽量不产生联系,
		这样可以方便每个部分代码的解耦和扩展。
		
(3)、MVC各部分分析:
		
		M modle 模型:就是封装基本的数据单元。把数据封装成对象操作。
					对应咱们做过的项目,我们封装的user 类,就是M 模型层			
	
		V view  显示:显示层,界面的展示。数据的展示。
					对应咱们做过的项目,jsp页面就是V  显示层。			
		
		C control 控制:对项目中所有的要处理的业务逻辑,进行代码编码的部分。
					对应咱们做过的项目,Controller.jsp页面做逻辑处理的,就是C 控制层。

(4)、mvc模式开发过程中,就是通过C 控制部分的代码,访问数据库将数据封装成 M 模型,
						然后让数据在 V 显示层上进行展示。

5、JSP的指令

	* JSP中,有三个指令
		写法 <%@ 指令名   属性名="属性值" %>
	
		(1)、page 指令
				<1>、设置jsp页面的一些信息。
				<2>、写法<%@ page 属性名="属性值"%>
				<3>、属性:
				
					* language 	:jsp页面支持的语言类型,目前是只支持java语言。
					* extends	:jsp页面会编译成servlet,继承的类,默认继承的类是HttpJspBase
					* session	:jsp页面中默认是可以直接使用session对象的,默认值是true
					* import	:jsp页面中的导包,可以写在一个page指令中,也可以独立来写。
					* buffer	:jsp页面对浏览器数据内容,缓冲空间大小,默认是8kb
					* autoFlush	:jsp页面是否自动刷新缓冲区的内容到浏览器页面。默认值是true
					* errorpage	:jsp页面如果发生了错误,要跳转到错误处理页面。
					* isErrorPage:jsp页面是否是错误处理页面,默认值是flase,true代表是错误处理页面。
									如果设置为是错误处理页面,那么就可以使用内置对象execption对象。
									通过execption对象的getMessage 方法获取错误原因。
					* contentType:jsp页面设置在浏览器显示的编码方式。
					* pageEncoding:jsp编译成servlet,使用的编码方式,优先级大于 	contentType,
									也就是,设置了pageEncoding之后,contentType就失效了,以pageEncoding为准
					* isElIgnored: 是否忽略el表达式的写法。默认是false就是不忽略。
									改成true之后,el表达式变成普通文本。					



		(2)、include 指令:
				<1>、 在一个页面中包含的内容。
				<2>、 写法<%@ include 属性名= "属性值"%>、
						<%@ include file="被包含的jsp页面"%>
				<3>、规范:
					第一、被包含的页面中,直接写内容。
					第二、被包含的页面中不能使用变量传递。
							<% String url = "aa.jsp"%>
							<%@ include file="<%=url%>" %>
					第三、被包含的页面路径后面不能加参数。
							<%@ include file="aa.jsp ? username=zhangsan & password=123" %>
		
				<4>、include 包含,也称为 静态包含,
					当我们包含多个jsp页面,那么我们编译之后,会生成几个servlet ?、
					结论: 多个被jsp包含的页面,最终编译后,会融合到包含的一个servlet页面。
					
					(不理解可以画图理解)		
		
		
		
		(3)、taglib 指令:	
				<1>、经常和jstl标签库一起使用,替代页面中的<%%>
				<2>、写法:<%@ taglib uri="jstl标签库的路径" prefix="jstl标签库的别名"%>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值