JavaWeb11---三层架构

三层架构

三层架构字面意思就是一个结构由三层来组件构造而成,在外面程序员里面理解就是A-->B---C也就是我们很熟溪的dao方法与主界面

在以前我们都是直接从界面调用dao方法,其实这样是不严谨的,也就是A直接到C,而今天呢我们就要在中间插入一个B层

下面我们以登录页面为例子

底层代码

<body>
	<form action="dologin.jsp" method="post">
		用户名:<input type="text" name="iname"><br>
		密码:<input type="password" name="ipwd"><br>
		<input type="submit" value="登录">
		<input type="reset" value="清空">
	</form>
</body>

这里实体类就不展示出来了

像以前我们就是直接写一个dao方法类来进行使用,现在我们利用三层架构写一个接口来封装方法  类名IUserDao

//只做设计 不做实现
	
	/**
	 * 查询全部
	 * @return 用户集合
	 */
	public List<User> getAll();
	/**
	 * 模糊查询
	 * @param colName 列名 
	 * @param str 关键字
	 * @return 用户集合
	 */
	public List<User> getAll(String colName,String str);
	/**
	 * 根据用户id查询
	 * @param uuid 编号
	 * @return 用户对象
	 */
	public User getUser(int uuid);
	
	/**
	 * 增加用户
	 * @param u 用户对象
	 * @return 影响行数
	 */
	public int addUser(User u);
	/**
	 * 根据id删除用户
	 * @param uuid 用户编号
	 * @return 影响行数
	 */
	public int deleteUser(int uuid);
	/**
	 * 根据id修改用户
	 * @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.必须放在抽象类(接口)中
	 */
	

然后再写dao方法进行继承

/**
 * 数据库访问层  C
 * @author Janet
 *
 * @date 2022年4月8日 上午9:58:12
 */
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.myClose(con, ps, rs);
		}
		return u;
	}
	
	
	
	

}

最后我们再到dologin进行调用判断

<%
	//设置编码方式
	request.setCharacterEncoding("utf-8");
	//接收表单的值:用户名 密码
	String name=request.getParameter("iname");
	String pwd=request.getParameter("ipwd");
	//调用方法进行判断 是否登录成功
	//表示层A  调用  业务逻辑层B 
	IUserBiz iub=new UserBiz();
	//调用登录方法
	User u=iub.login(name, pwd);
	//判断
	if(u!=null){
		//说明登录成功
		out.print("登录成功");
	}
	else{
		//说明登录失败
		out.print("<script>alert('用户名或者密码有误');location.href='login.jsp';</script>");
	}
%>

这样我们就完成了我们的三层架构

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值