使用分层实现业务处理
JNDI
什么是JNDI:
java Naming and directory Iterface , java命名和目录接口
通过名称将资源与服务进行关联
JNDI的作用与优点:
在应用与java对象或资源之间建立耦合的逻辑关联,简化应用对于资源的配置及维护工作
可以在更大范围、不同应用之间共享资源
问题:如何实现在Tomcat中发布一条信息供所有的web应用程序使用?
实现步骤:
发布信息:修改Tomcat\conf\context.xml文件
<Context>
<Environment name="tjndi" value="hello JNDI" type="java.lang.String"/>
<Context>
获取资源:使用lookup()进行查找
//javax.naming.Context提供了查找JNDI的接口
Context ctx=new InitialContext(); //初始化Context对象
//java:comp/env/为前缀
String testjndi =(String)ctx.looup(“java:comp/env/tjndi”);//调用lookup()方法
out.print(testjndi);
为什么使用连接池:
连接池概念:
数据库连接是非常占用系统资源的,这一点在多用户访问的应用程序中体现得尤为突出。对数据库连接的管理
性能显著影响到整个应用程序的伸缩和健壮性。数据库连接池正式针对这个问题提出来的。
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重
新建立一个;释放那些空闲时间超过最大空闲时间的数据库连接,以避免由于没有释放数据库连接而引起的数据库
连接泄露。
DataSource与连接池:
java.sql.DataSource接口的实现类
以连接池的形式对数据库连接进行管理
问题:如何获取DataSource的实例?
Tomcat支持DataSource实现发布为JNDI资源
Web应用通过JNDI获得DataSource引用
使用连接池实现数据库连接:
1、配置context.xml文件
2、配置web.xml
3、添加数据库驱动文件
4、进行代码编写,查找并获取数据源
第一步配置:
<Context>
<Resource name="jdbc/news" auth="Container" type="java.sql.DataSoure"
maxActive="100" maxldle="30" maxWait="10000" username="newsu"
password="123456" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/newsmanagersystem?
useUnicode=true&characterEncoding=utf-8"/>
</Context>
第二步配置:
添加数据库驱动文件
把数据库驱动文件jar文件,加入到Tomcat的lib中
配置应用程序的web.xml文件
在web.xml中配置<resource-ref>
<resource-ref>
<description>news DataSource</description>
<res-ref-name>jdbc/news</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
设计分层模式
JSP开发时分层的弊端:
层与层之间的关系:
分层原则: