三层架构的项目集成和回顾

目录

一、回顾

jsp第一次

第二次

第三次

第四次

第七次

第九次

第十次

第十一次

二、三层架构项目集成

登录界面 index.jsp

登录处理界面 doLogin.jsp

连接数据库 DBHelper.java

用户的实体类 User.java

针对用户的接口 IUserBiz.java

用户接口的实现 UserBizImpl.java

数据库访问接口类 IUserDao.java

实现数据库访问的类 IUserDaoImpl.java


在给大家分享新知识之前,先给大家稍稍回顾一下前几次的内容。

一、回顾

jsp第一次

什么是jsp ?

1.是一种文件格式
2.写java,html,css,js
3.jsp本质上是java的额外封装,解析过程中优先解析java

 安装tomcat

默认端口 8080
如果出现了端口异常,修改端口

第二次

基本指令

<%=输入内容 %>
<% java脚本 %>
<%@page 页面指令 %>
<%@include 包含指令 %>

表单提交方式

get  通过地址栏带参,参数有长度限制
post 不通过地址栏带参,参数没有长度限制
文件上传的时候 必须是post,必须是多段式表单

第三次

jsp的跳转方式

转发 forward

·可以携带数据(请求中的)
·地址栏不变
·是服务器行为

重定向 redirect 

·不可以携带数据(请求中的)
·地址栏变
·是客户端行为

第四次

jdbc的连接语句

jdbc:oracle:thin:@localhost:1521:orcl

第七次

【都可以设定存在时间:session-30分钟,cookie-浏览器关闭】

session 服务端存储
cookie  客户端存储

应用场景:

* 浏览记录  cookie
* 鉴权  session
* 存数据库里面,缓冲数据库

第九次

分页的制作

sql语句怎么写?规律

【规律】 page当前页数 rows显示条数
                page:1 rows:10  1~10
                page:2 rows:10  11~20
                page:3 rows:10  21~30
            begin(开始位置): (page-1)*rows+1
            end(结束位置): page*rows

【sql】
            select * from (
                select a.*,rownum myr from stu a
            )b where myr between begin and end;

第十次

文件上传

 - 文件上传的主要操作
            * 1.将文件保存到电脑路径中
            * 2.将保存的电脑路径存到数据库
            * 3.绑定tomcat映射,为你保存文件的目录加上一个访问路径

- 如果诞生一个不重复的名字
            * 使用UUID    UUID.randomUUID()

富文本编辑器    (把你输入的语句变成了html来保存)

第十一次

没有学习三层架构的时候:
        * jsp 将页面显示出来
        * dao 去数据库取数据,处理数据
dao层:1.拿数据 2.负责处理数据

【系统的耦合性:各个模块连接的紧密度】

【三层架构】
        * 各司其职
        * 高内聚,低耦合

【结构】
        * 表示层     服务员
        * 业务逻辑层     biz     厨师
        * 数据库访问层   dao     买菜的人

 【调用顺序】
        表示层->业务逻辑层->数据库访问层->|
                                                                     |
        表示层<-业务逻辑层<-数据库访问层 <-|

  【命令规则】
        com.biz -> Biz接口
        com.biz.impl ->Biz的接口实现类
        com.dao -> Dao接口
        com.dao.impl -> Dao接口的实现类

二、三层架构项目集成

废话不多说,我们直接上代码。

以上图片是我们所需要的包以及jsp文件 

登录界面 index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="doLogin.jsp">
	<p><input type="text" name="username"></p>
	<p><input type="text" name="password"></p>
	<p>
		<button>登录</button>
	</p>
</form>

</body>
</html>

登录处理界面 doLogin.jsp

<%@page import="com.xyz.biz.IUserBiz"%>
<%@page import="com.xyz.biz.impl.UserBizImpl"%>
<%@page import="com.xyz.pojo.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//doLogin是表示层
	
	//取到用户的数据
	String username=request.getParameter("username");
	String password=request.getParameter("password");
	
	//将数据分装到实体类中
	User user=new User(0,username,password);
	
	//判断用户是否登录
	
	//面向接口编程
	// 1.先编写接口
	// 2.实现该接口
	// 3.使用里氏替换原则来声明接口对象
	// 4.调用接口的方法
	IUserBiz userBiz=new UserBizImpl();
	
	String msg=userBiz.login(user);
	
%>
<h1><%=msg %></h1>

连接数据库 DBHelper.java

package com.xyz.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import oracle.jdbc.driver.OracleDriver;

public class DBHelper {
	
	//1.加载驱动
	static {
		//OracleDriver
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	//2.定义连接字符串
	private static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
	
	//3.获得连接
	public static Connection getCon() {
		try {
			return DriverManager.getConnection(URL,"scott","zkingedu");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
	//4.关闭资源
	public static void close(Connection con,PreparedStatement ps,ResultSet rs) {
		try {
			if(!con.isClosed()) {
				con.close();
			}
			if(ps!=null) {
				ps.close();
			}
			if(rs!=null) {
				rs.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

用户的实体类 User.java

package com.xyz.pojo;

public class User {

	private Integer userId;
	private String userName;
	private String userPwd;
	
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPwd() {
		return userPwd;
	}
	public void setUserPwd(String userPwd) {
		this.userPwd = userPwd;
	}
	
	public User() {
		// TODO Auto-generated constructor stub
	}
	
	public User(Integer userId, String userName, String userPwd) {
		super();
		this.userId = userId;
		this.userName = userName;
		this.userPwd = userPwd;
	}
	
	
}

针对用户的接口 IUserBiz.java

package com.xyz.biz;

import com.xyz.pojo.User;

/**
 * 接口
 * @author zjjt
 *
 */

public interface IUserBiz {

	String login(User user);
	
}

用户接口的实现 UserBizImpl.java

package com.xyz.biz.impl;

import com.xyz.biz.IUserBiz;
import com.xyz.dao.IUserDao;
import com.xyz.dao.impl.UserDaoImpl;
import com.xyz.pojo.User;

public class UserBizImpl implements IUserBiz{

	/**
	 * IUserBiz的实现类
	 * @author zjjt
	 *
	 */
	
	//需要调用dao层的方法
	
	//一个厨师对应多个送菜的人
	private IUserDao userDao=new UserDaoImpl();
	
	
	@Override
	public String login(User user) {
		User u=userDao.login(user);
		// user 表示层给我的(用户输入)
		// u 数据库来的
		if(u==null) {
			return "account not found";
		}
		if(!u.getUserPwd().equals(user.getUserPwd())) {
			return "password error";
		}
		return "login success";
	}
		
	
}

数据库访问接口类 IUserDao.java

package com.xyz.dao;

import com.xyz.pojo.User;

public interface IUserDao {

	User login(User user);
	
}

实现数据库访问的类 IUserDaoImpl.java

package com.xyz.dao.impl;

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

import com.xyz.dao.IUserDao;
import com.xyz.pojo.User;
import com.xyz.util.DBHelper;

public class UserDaoImpl implements IUserDao{
	
	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	
	@Override
	public User login(User user) {
		try {
			con=DBHelper.getCon();
			String sql="select * from t_user where user_name=?";
			ps=con.prepareStatement(sql);
			ps.setString(1, user.getUserName());
			rs=ps.executeQuery();
			if(rs.next()) {
				//将信息赋值给User对象
				User u=new User();
				u.setUserName(rs.getString(2));
				return u;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return null;
	}

}

今天就分享到这啦

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值