【javaweb简单教程】5.数据源及分层开发(Tomcat自带的JNDI连接池的简单介绍和分层图解)

5.数据源及分层开发

JDBC访问数据库的弊端

  • 分析
    • 访问前需要先获取连接
    • 每次操作结束后,要释放资源
    • 频繁的连接导致系统的安全性和稳定性差
  • 解决问题
    • 可以使用数据源和连接池

使用Tomcat数据源

  • 连接池工作原理
    • 连接池是由容器提供的,用来管理池中连接对象
  • 数据源(DataSource)
    • javax.sql.DataSource接口负责建立与数据库的连接
    • 由Tomcat提供,将连接保存在连接池中
  • 注意:
    • 数据源用来连接数据库,获得连接(Connection)对象
    • 连接池用来管理连接( Connection )对象
    • 在程序中使用JNDI获取数据源
  • 在Tomcat中配置数据源的步骤
    • Tomcat中加入数据库驱动文件
    • 配置Tomcat的conf/context.xml
    • 使用JNDI获取连接对象
步骤

1、配置Tomcat的conf/context.xml

<Resource name="jdbc/news" 
              auth="Container"  type="javax.sql.DataSource"  maxActive="100" 
              maxIdle="30" maxWait="10000" username="root"  password="bdqn" 
              driverClassName="com.mysql.jdbc.Driver" 
              url="jdbc:mysql://127.0.0.1:3306/kgcnews"/>
<!-- 
name 			指定Resource的JNDI名称
Container 		指定管理Resource的Manager
type            指定Resource所属的Java类
maxActive		指定连接池中处于活动状态的数据库连接的最大数目
maxIdle		指定连接池中处于空闲状态的数据库连接的最大数目
maxWait 		指定连接池中的连接处于空闲的最长时间 
-->

2、使用JNDI获取连接对象

Context ctx = new InitialContext();
	DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/news");		//上面的数据源name
	Connection conn = ds.getConnection();
	out.println(conn);

JavaBean

  • JavaBean

    • 就是一个Java类
  • 作用

    • 封装业务逻辑
    • 封装数据
  • dao包中的接口(NewsDao)以及类(NewsDaoImpl)主要负责和数据操作相关的事情

    CategoryDao{
    //根据类别删除新闻信息
    //删除新闻分类
    }


* **service**包中的接口和类对dao的方法进行封装和调用,主要负责和**业务逻辑相关的操作**

 * ```java
//需求:删除某新闻类别
CategoryService{
…deleteCategory ()…
}

JSP动作标签

通过动作标签,程序员可以在JSP页面中把页面的显示功能部分封装起来,使整个页面更简洁和易于维护

< jsp:useBean >

  • < jsp:useBean >
    • 装载一个将在JSP页面中使用的JavaBean,发挥Java组件重用的优势
<jsp:useBean id="name" class="package.class"  scope="scope" >
/*
id="name" ———— JavaBean的引用名
class="package.class" ———— JavaBean的类
scope="scope" ———— JavaBean的范围
*/

< jsp:include >

  • < jsp:include >
    • 把指定文件插入正在生成的页面中
<jsp:include page="URL">	//page="URL" ———— 引入的页面

< %@include% >

<%@include file="URL"%>		//file="URL" ———— 引入的页面
  • < %@include% >与< jsp:include >
    • < jsp:include >为动态包含,将被包含页面的结果包含进来。先处理,再包含
    • < %@include% >为静态包含,将被包含页面的内容包含进来。先包含,再处理

页面跳转

  • 页面跳转
    • request.getRequestDispatcher().forward()转发
    • response.sendRedirect()重定向
  • < jsp:forward >
<jsp:forward page="URL">	//page="URL" ———— 跳转的页面

分层开发

图解

请添加图片描述

解释

  • 三层架构:
    • 视图:HTMLJSP
    • 业务逻辑层:service
    • 数据访问层:dao
  • SpringMVC:
    • View:视图
    • Model:daoservicepojo
    • Controller:actionservlet
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tuerlechat,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值