班级学习系统
数据库创建
首先,我们必须要认识到数据库是一个应用项目开发的基础,如果没有这个基础,我们有很多东西都不能完成,比如说项目的一些UI设计(表单等等)、代码编写等等。如果这个项目是个人开发的话或许还不会很麻烦,因为在开发期间如果发现数据库需要修改,你可以自己慢慢一个人修改,从UI到代码编写(但是如果你在开发后期,发现数据库需要修改,那大概率是要寄了)。但是,我们换个角度想一想,如果你是团队开发的话,每个人负责一个模块,假设每个模块都需要基于数据库实现代码编写,那么如果在开发的时候,发现数据库需要修改,那么对团队来说同样是一件非常耗时耗力的事情,会导致很多严重的问题,例如代码的重新编写等。
本项目用户是学生,学生可以使用本网站加入学习小组,然后学生可以在学习小组内进行发言和讨论,使用者也可以进行利用已有的网站进行登录和注册没有的账号。
所以项目正式编码前,先带大家建一下数据库
特此说明,该数据库可能在后期也需要修改,因为问题总是不断出现得,这边也是带大家过一下流程
-
首先,就是需要分析一下用户,在这里我们就简单地给出用户的关键字段,用户
ID
、用户名、用户密码、用户创建的时间(可以自行完善数据库字段)。 -
然后就是学生,学生信息需要学号、姓名、QQ、手机号码、权限等级(可以自行完善数据库字段)
-
还需要一个学习小组的数据表,学习小组需要小组
ID
、小组组长ID
、小组人数、小组名、小组介绍、其中小组ID
为主键。 -
因为在用户之间可以进行讨论,这里的讨论内容我们需要使用数据库来存储,需要的字段内容有评论
ID
编号、发出评论的用户ID
、评论所属学习小组、评论内容、评论时间。
到这里为止,我们就创建好了班级学习系统的数据库(十分十分简单),把刚刚我们建好的模型转换成数据库,如下图。
之后,我们就成功导入了刚刚创建好的数据库。
创建项目
我们创建好数据库之后,就需要创建好项目,并且给项目分层。使用IDEA
企业版来创建Web
项目。
首先,我们需要在项目中配置好数据库,因为这个Web
项目一定会使用JDBC
来与底层数据库来进行交互,例如用户登录会访问数据库来查询当前的用户到底存不存在,在注册账号的时候我们会使用使用数据库进行添加操作用户的操作。
配置数据库
在WEB-ING
创建lib
目录,在该目录下导入数据库的驱动jar
包(就是JDBC
那一套操作)
在上面的resources
创建数据库连接配置文件db.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/study?&useSSL=false&serverTimezone=UTC
username=root
password=123456
然后如果记得JDBC
操作的同学应该还知道进行数据库操作的时候,有一个数据库操作工具类,就是JDBCUtil
,我们首先需要创建一个util
文件来进行存放我们自定义的工具类
public class JDBCUtil {
private static final String driver;
private static final String url;
private static final String userName;
private static final String password;
static {
InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties();
try {
properties.load(is);
} catch (IOException e) {
e.printStackTrace();
}
driver = properties.getProperty("driver");
url = properties.getProperty("url");
userName = properties.getProperty("username");
password = properties.getProperty("password");
}
// 获取数据库连接
public static Connection getConnection() {
Connection con = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, userName, password);
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}
return con;
}
// 数据库查询,返回结果集
public static ResultSet query(Connection con, PreparedStatement st, ResultSet rs, String sql
, Object[] params) throws SQLException {
st = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
if (params != null) {
for (int i = 0; i < params.length; i++) {
st.setObject(i + 1, params[i]);
}
}
rs = st.executeQuery();
return rs;
}
// 数据库增删改
public static int update(Connection con, String sql
, Object[] params, ResultSet rs, PreparedStatement st) throws SQLException {
st = con.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
st.setObject(i + 1, params[i]);
}
return st.executeUpdate();
}
// 关闭数据库连接
public static void release(Connection con, Statement st, ResultSet rs) {
boolean flag = true;
if (rs != null) {
try {
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
flag = false;
}
}
if (st != null) {
try {
st.close();
st = null;
} catch (SQLException e) {
e.printStackTrace();
flag = false;
}
}
if (con != null) {
try {
con.close();
con = null;
} catch (SQLException e) {
e.printStackTrace();
flag = false;
}
}
}
}
这就是在Web
项目中,我们对数据库和数据库操作类的配置操作。
创建entity
文件
在创建entity
的作用就是把数据库的每张表变成项目中的一个实体entity
,这样更加符合Java
面向对象设计的思维。
在entity
中,我们需要把刚刚数据库中创建的数据表都变为一个实体,例如数据库中的user
对应的就是entity
下的user
类,数据库中的各个字段则对应的是Java
中的各个属性。
User
类如下:
public class User {
private int uid;
private String uname;
private String upassword;
private Date ucreatetime;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpassword() {
return upassword;
}
public void setUpassword(String upassword) {
this.upassword = upassword;
}
public Date getUcreatetime() {
return ucreatetime;
}
public void setUcreatetime(Date ucreatetime) {
this.ucreatetime = ucreatetime;
}
}
其余的数据库表都对应这一个Java
类,以此类推。
创建dao
文件夹
在dao
文件夹下中的Java
是对底层数据库操作的文件,就类似于JDBC
来对数据库实现增删改查等操作,今天我们就不做来编写这里面的数据库操作类。
创建filter
文件
filter
文件夹是存放的过滤器的文件,在Java Web
项目中,我们需要让用户有访问权限等,过滤游客用户(比如游客只能查看网站的主页,无法访问其他页面),这个时候就需要使用过滤器来进行权限过滤操作。还有一个应用场景就是使用过滤器来进行字符编码的过滤。
创建servlet
文件
servlet
主要是来响应前端的操作,比如说前端需要登录时,就想把这个请求交给servlet
,然后通过这个servlet
,来封装前端传来的数据,比如用户登录,把前端的数据包装成User
类,然后调用service
服务进行操作。
创建service
文件
service
文件里面的类是被servlet
调用的类,通过servlet
传来的封装好的类,进行具体的业务操作,并且调用dao
层内的数据库操作类,做到各个业务对数据库中的具体数据操作。
以上就是项目实战的第一步
servlet
,然后通过这个servlet
,来封装前端传来的数据,比如用户登录,把前端的数据包装成User
类,然后调用service
服务进行操作。
创建service
文件
service
文件里面的类是被servlet
调用的类,通过servlet
传来的封装好的类,进行具体的业务操作,并且调用dao
层内的数据库操作类,做到各个业务对数据库中的具体数据操作。
以上就是项目实战的第一步