javaWeb11:三层架构

三层架构:

数据库访问层
业务逻辑层
表示层

面向接口编程:为了将设计和实现完全分离

代码展示:

login.jsp

 dologin.jsp

在JavaResources-->src-->建四个包

 两种方式:

 一、

com.zking.biz(包):

IUserBiz(类):

package com.zking.biz;

import java.util.List;

import com.zking.dao.IUserDao;
import com.zking.dao.UserDao;
import com.zking.entity.User;

public interface IUserBiz {
    
   
     /**查询全部 shift+alt+j(注释)
         * @return  用户集合
         */
        List<User> getAll();
         /**模糊查询
         * @param colName 列名
         * @param str  关键字
         * @return  用户集合
         */
        List<User> getAll(String colName,String str);
         /**查询单个
         * @param uuid  用户编号
         * @return  用户对象
         */
        User getUser(int uuid);
         
         /**增加用户
         * @param u 用户对象
         * @return 影响行数
         */
        public int addUser(User u);
         /**根据ID删除用户
         * @param uuid 用户编号
         * @return 影响行数
         */
        public int deleteUser(int uuid);
         /**修改用户
         * @param u 用户对象
         * @param uuid 用户编号
         * @return 影响行数
         */
        public int updateUser(User u,int uuid);
         
         /**实现用户登录
         * @param uname 用户名
         * @param upwd 密码
         * @return 用户对象
         */
        public User login(String uname,String upwd);
}

com.zking.biz.impl:

UserBiz

package com.zking.biz.impl;

import java.util.List;

import com.zking.biz.IUserBiz;
import com.zking.dao.IUserDao;
import com.zking.dao.UserDao;
import com.zking.entity.User;
/**
 * 业务逻辑层 B
 * @author Anny
 *
 * @date下午7:03:02
 */
public class UserBiz implements IUserBiz {
    
    //业务逻辑层B 调用 数据访问层c
    IUserDao iud = new UserDao();//里式替换原则

    @Override
    public List<User> getAll() {
        return iud.getAll();
    }

    @Override
    public List<User> getAll(String colName, String str) {
        return iud.getAll(colName, str);
    }

    @Override
    public User getUser(int uuid) {
        
        return iud.getUser(uuid);
    }

    @Override
    public int addUser(User u) {
        return iud.addUser(u);
    }

    @Override
    public int deleteUser(int uuid) {
        return iud.deleteUser(uuid);
    }

    @Override
    public int updateUser(User u, int uuid) {
        return iud.updateUser(u, uuid);
    }

    @Override
    public User login(String uname, String upwd) {
        return iud.login(uname, upwd);
    }

}

二、

com.zking.dao(包):

IUserDao(类):

package com.zking.dao;

import java.util.List;

import com.zking.entity.User;

public interface IUserDao {
    //只做设计  不做实现
    
     /**查询全部 shift+alt+j(注释)
     * @return  用户集合
     */
    List<User> getAll();
     /**模糊查询
     * @param colName 列名
     * @param str  关键字
     * @return  用户集合
     */
    List<User> getAll(String colName,String str);
     /**查询单个
     * @param uuid  用户编号
     * @return  用户对象
     */
    User getUser(int uuid);
     
     /**增加用户
     * @param u 用户对象
     * @return 影响行数
     */
    public int addUser(User u);
     /**根据ID删除用户
     * @param uuid 用户编号
     * @return 影响行数
     */
    public int deleteUser(int uuid);
     /**修改用户
     * @param u 用户对象
     * @param uuid 用户编号
     * @return 影响行数
     */
    public int updateUser(User u,int uuid);
     
     /**实现用户登录
     * @param uname 用户名
     * @param upwd 密码
     * @return 用户对象
     */
    public User login(String uname,String upwd);
    
    /**
     * 接口有何特性?
     * 1.接口不能被实例化new 因此要用里式替换原则
     * 2.接口里面所有的方法都默认就是公开的抽象方法 public abstract
     * 
     * 抽象方法有何特点:
     * 1.抽象方法没有方法体
     * 2.抽象方法在子类中必须被实现(重写)  除非子类也是抽象类
     * 3.必须放在抽象类(接口)中
     * 
     */
}

UserDao:

package com.zking.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;

import com.zking.entity.User;
import com.zking.util.DBHelper;
/**
 * 
 * 数据库访问层 c
 * @author Anny
 *
 * @date下午6:26:47
 */
public class UserDao implements IUserDao {
    
    //你以前怎么写dao方法 这里就怎么写
    
    //三兄弟
    private Connection con = null;
    private PreparedStatement ps = null;
    private ResultSet  rs = null;

    @Override
    public List<User> getAll() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public List<User> getAll(String colName, String str) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public User getUser(int uuid) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int addUser(User u) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public int deleteUser(int uuid) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public int updateUser(User u, int uuid) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public User login(String uname, String upwd) {
        User u = null;
        try {
            con=DBHelper.getCon();//获得连接
            String sql = "select * from tb_0325 where sname=? and spwd=?";//定义sql语句
            ps=con.prepareStatement(sql);//获得执行对象
            //给占位符赋值
            ps.setString(1, uname);
            ps.setString(2, upwd);
            rs=ps.executeQuery();//获得结果集
            if(rs.next()) {
                u = new User();
                u.setUuid(rs.getInt(1));
                u.setUname(rs.getString(2));
                u.setUpwd(rs.getString(3));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            DBHelper.myClo(con, ps, rs);
        }
        return u;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值