分层:数据访问层、业务逻辑层、视图层
分层:开发模式
数据访问层业务逻辑层:调用数据访问层
视图层:调用业务逻辑层
数据库表
1、创建项目
2、创建包:
com.zking.util
com.zking.entity
com.zking.dao(放dao接口)
com.zking.dao.imp (放dao接口实现类)
com.zking.biz
com.zking.biz.imp
这里是链接oracle数据库的,下面会我给大家演示用户是如何分层的,如果想学习的你可以直接复制到你的项目中 理解我们的分层:数据访问层、业务逻辑层、视图层
DBHelper.java类
package com.zking.util;import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;public class DBHelper {private static String user = "scott";private static String upwd = "tiger";private static String cname = "oracle.jdbc.driver.OracleDriver";private static String url = "jdbc:oracle:thin:@localhost:1521:orcl";//注册驱动类static {try {Class.forName(cname);} catch (ClassNotFoundException e) {e.printStackTrace();}}//连接数据库/*** 连接数据库* @return*/public static Connection getCon() {Connection con = null;try {con = DriverManager.getConnection(url, user, upwd);} catch (Exception e) {e.printStackTrace();}return con;}/*** 关闭连接* @param con* @param ps* @param rs*/public static void closeDb(Connection con,PreparedStatement ps,ResultSet rs) {try {if(con!=null) {con.close();}if(ps!=null) {ps.close();}if(rs!=null) {rs.close();}} catch (Exception e) {e.printStackTrace();}}/*** 下一个获取下一个编号的方法* @return 下一个编号*/public static int getNextId(String tableName,String col) {int id = 1;Connection con = null;PreparedStatement ps = null;ResultSet rs = null;try {con = DBHelper.getCon();ps = con.prepareStatement("select max("+col+") from "+tableName);rs = ps.executeQuery();if(rs.next()) {id = rs.getInt(1)+1;}} catch (Exception e) {e.printStackTrace();}finally {DBHelper.closeDb(con, ps, rs);}return id;}//关闭连接}
User.java 实体类
package com.zking.entity;public class User {private int uuid;private String uname;private String uwpd;private String uinfo;public int getUuid() {return uuid;}public void setUuid(int uuid) {this.uuid = uuid;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public String getUwpd() {return uwpd;}public void setUwpd(String uwpd) {this.uwpd = uwpd;}public String getUinfo() {return uinfo;}public void setUinfo(String uinfo) {this.uinfo = uinfo;}public User() {super();}public User(String uname, String uwpd, String uinfo) {super();this.uname = uname;this.uwpd = uwpd;this.uinfo = uinfo;}public User(int uuid, String uname, String uwpd, String uinfo) {super();this.uuid = uuid;this.uname = uname;this.uwpd = uwpd;this.uinfo = uinfo;}@Overridepublic String toString() {return "User [uuid=" + uuid + ", uname=" + uname + ", uwpd=" + uwpd + ", uinfo=" + uinfo + "]";}}
IUserDao.java 用户的数据访问层接口
package com.zking.dao;import com.zking.entity.User;/*** 用户的数据访问层接口* @author d**/
public interface IUserDao {/*** 用户登录方法* @param uname 用户名* @param upwd 用户密码* @return 登录成功返回用户对象,否则返回null*/public User login(String uname,String upwd);/*** 用户注册方法* @param user 要注册的用户* @return 成功返回1,失败返回0*/public int register(User user);}
Imp_UserDao 用户的数据访问层实现类
package com.zking.dao.imp;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;import com.zking.dao.IUserDao;
import com.zking.entity.User;
import com.zking.util.DBHelper;/*** 用户的数据访问层实现类* @author d**/
public class Imp_UserDao implements IUserDao {public User login(String uname, String upwd) {Connection con = null;PreparedStatement ps = null;ResultSet rs = null;User user = null;try {con = DBHelper.getCon();ps = con.prepareStatement("select * from T277 where uname=? and upwd=?");ps.setString(1, uname);ps.setString(2, upwd);rs = ps.executeQuery();if(rs.next()) {user = new User(rs.getInt(1), uname, upwd, rs.getString(4));}} catch (Exception e) {e.printStackTrace();}finally {DBHelper.closeDb(con, ps, rs);}return user;}public int register(User user) {return 0;}}
IUserBiz 用户的业务逻辑层接口
package com.zking.biz;import com.zking.entity.User;/*** 用户的业务逻辑层接口* @author d**/
public interface IUserBiz {/*** 用户登录方法* @param uname 用户名* @param upwd 用户密码* @return 登录成功返回用户对象,否则返回null*/public User login(String uname,String upwd);/*** 用户注册方法* @param user 要注册的用户* @return 成功返回true,失败返回false*/public boolean register(User user);}
Imp_UserBiz 用户的业务逻辑层实现类
package com.zking.biz.imp;import com.zking.biz.IUserBiz;
import com.zking.dao.IUserDao;
import com.zking.dao.imp.Imp_UserDao;
import com.zking.entity.User;/*** 用户的业务逻辑层实现类* @author T277**/
public class Imp_UserBiz implements IUserBiz {//多态IUserDao iud = new Imp_UserDao();public User login(String uname, String upwd) {return iud.login(uname, upwd);}public boolean register(User user) {return iud.register(user)==1?true:false;}}
我们的登录页面就是直接调用了 dologin.jsp
<%//接收数据//调用登录方法-实例化业务逻辑层对象IUserBiz iub = new Imp_UserBiz();User us = iub.login("", "");%>
我们的login.jsp页面是不会用到我们的java代码的了
在接下来 我也会跟大家一起学习,初来驾到有很多不懂得东西希望大伙多多指教(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤
后面我会给大家出个使用分层实现购物车2.0版
分层:数据访问层、业务逻辑层、视图层相关推荐
- java中表示层 控制层 业务逻辑层 数据访问层
控制层(controller):的职能是负责读取视图表现层的数据,控制用户的输入,并调用业务层的方法: 业务层(service):需要根据系统的实际业务需求进行逻辑代码的编写,有些业务逻辑需要通过与数 ...
- ASP.NET三层架构——BLL层(业务逻辑层)
今天,我们来学习一下BLL层的框架搭建: 在创建BLL层之后,我们要搭建BLL层中的Manage类,具体样式参照下图: 注意:我们要遵循一个原则:要根据DAL层中的Service类来创建BLL层的Ma ...
- android ui层 交互层 业务逻辑层 服务层,表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)...
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦 ...
- java三层架构(表示层,业务逻辑层,数据访问层,与两层的区别,三层架构的优缺点)
目录 1 什么是三层 2 为什么使用三层 3 与两层的区别 1 什么是三层 UI(表现层): 主要是指与用户交互的界面.用于接收用户输入的数据和显示处理后用户需要的数据. BLL:(业务逻辑层): U ...
- 细说业务逻辑 -- 丢失的业务逻辑层
前言 记得几个月前,在一次北京博客园俱乐部的活动上,最后一个环节是话题自由讨论.就是提几个话题,然后大家各自加入感兴趣的话题小组,进行自由讨论.当时金色海洋同学提出了一个话题--"什么是业务 ...
- MyBatis知多少(6)表现层与业务逻辑层
表现层 表现层负责向最终用户展示应用程序的控制方式以及数据.它还要负责所有信息的布局和格式.今天,商业应用程序最流行的表现方式应该算是Web前端了,它使用HTML和JavaScript并通 过Web浏 ...
- java业务逻辑层文档,java业务逻辑层类图
Java 面向对象 16 种设计原则一 类的设计原则 1 ...假如已有的系统中存在以下既有的业务逻辑代码: void...下面的类图将它的 2 个不同职责分成 2 个不同的...... java大作 ...
- 表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦 ...
- 三层架构:表示层——业务逻辑层——数据访问层
三层架构:表示层--业务逻辑层--数据访问层 1.什么是三层架构 所谓的三层开发就是将系统的整个业务应用划分为表示层--业务逻辑层--数据访问层,这样有利于系统的开发.维护.部署和扩展. 分层是为了实 ...
最新文章
- 清华大学公管学院、数据科学研究院共同助力国家数据治理,国家数据与治理联盟在京成立
- [Python]一行代码判断请求参数是否正确
- pythonunicode和str_python的str,unicode对象的encode和decode方法
- Java基础篇:抽象类与接口
- You can't specify target table 'myusertable' for ......in FROM clause
- MVC学习九:MVC 特性本质
- uboot移植——使用三星官方的uboot进行移植
- 再续前缘 阿里云基础设施网络团队ACM SIGCOMM 2021续创佳绩
- 锐捷S12010交换机配置端口镜像
- Android sn 号修改
- linux中syscmd用法,M4 宏处理器
- 随手写一篇关于rabbitMQ的安装教程
- win7计算机如何进入管理员权限,win7电脑怎样获得管理员权限
- 详解Guitar Pro 7小节的组织定义
- Java从入门到高级(第三天)
- 用JS实现贪吃蛇小游戏
- LinkedBlockingQueue 实现生产者消费者模型
- suse11 安装 apache 记录
- Adobe Illustrator CC 制作排版
- 洛谷P4961 小埋与扫雷
热门文章
- 英文文献阅读器Paper Digest使用指南
- 云原生中间件——Redis Operator 篇
- 2017年计算机a级模拟试题,2017年计算机国考(二级Access)全真模拟试题及答案【手机题库】...
- Express全系列教程之(四):获取Post参数的两种方式
- Blender:制作匕首
- 研究人员发现某中国厂商生产的手机固件回传个人信息
- 云原生之kubectl命令详解
- 用友oa协同办公软件无限期试用
- 苹果手机备忘提醒软件哪个好?
- Volcano社区v1.6.0版本正式发布