前言
之前把Java的基础知识系统的过了一遍,目前总算可以看懂Java代码了,接下来就是要学习Java开发框架(主要是springMVC)。
下面用一个用户注册的小案例,来总结一下之前学习的Java基础知识。
此案例涉及知识点
- Java分层思想
- JDBC连接数据库工具类封装
- 数据库语句
创建数据库
使用数据库管理管理软件连接数据库,依次执行下面数据库语句。
create Database
test_sql;
use test_sql;
CREATE TABLE t_user(u_id varchar(255) PRIMARY KEY
NOT NULL,u_name varchar(255) NOT NULL
, u_pwd varchar(255) NOT NULL
)
;
项目说明
开发工具是IDEA2020.3.1,数据库是MySql8
jetbrains升级IDEA2020版之后,创建servlet项目跟之前大不一样了,如果不会使用新版的IDEA创建servlet项目,请移步《如何使用IDEA2020.2新建servlet工程》。
简单说明一下项目的分层架构,项目下新建四个package。
- util【存放项目工具类,目前此项目只放自定义封装的JDBCUtil类,用于连接数据库】
- dao【存放数据库操作类】
- entity【存放实体类,与数据库表一一对应】
- servlet【存放servlet类,接收用户请求参数,并调用处理方法】
项目处理逻辑是这样的:servlet层接收到用户请求参数后,将请求参数数据组合成entity类。entity类就是在项目流转的数据。然后将组合好的entity数据传给dao层【怎么传?实例化dao层中相关类对象,调用dao层中的方法传参】。dao层中拿到数据,执行数据相关操作【获取数据库连接,执行相关数据库语句】。
新建用户实体类 – UserEntity
此类与数据库表对映
package cn.ixuela.entity;
import java.io.Serializable;
public class UserEntity implements Serializable {
private String id;
private String userName;
private String userPwd;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
}
新建DAO层
用于操作数据库,dao包下新建IUserDao接口类,并新建impl包。impl包下新建IUserDao接口的实现类IUserDaoImpl
package cn.ixuela.dao;
import cn.ixuela.entity.UserEntity;
import java.util.List;
public interface IUserDao {
/**
* 保存用户信息
* @param userEntity
*/
boolean saveUser(UserEntity userEntity) throws Exception;
}
package cn.ixuela.dao.impl;
import cn.ixuela.dao.IUserDao;
import cn.ixuela.entity.UserEntity;
import cn.ixuela.utils.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;
public class UserDaoImpl implements IUserDao {
private Connection conn;
// 传递sql语句
private PreparedStatement ps;
@Override
public boolean saveUser(UserEntity userEntity) {
try {
conn = DBUtil.getConn();
// 定义sql语句
String Sql = "insert into t_user(u_id,u_name,u_pwd) values (?,?,?)";
// 执行sql语句
ps = conn.prepareStatement(Sql);
ps.setString(1,userEntity.getId());
ps.setString(2,userEntity.getUserName());
ps.setString(3,userEntity.getUserPwd());
// 返回结果集
int i = ps.executeUpdate();
if (i == 1) {
return true;
}else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.close(set,ps,conn);
}
return false;
}
}
新建RegisterServlet类
用于接收用户提交的数据,并把数据转交给DAO层
package cn.ixuela.servlet;
import cn.ixuela.dao.IUserDao;
import cn.ixuela.dao.impl.UserDaoImpl;
import cn.ixuela.entity.UserEntity;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
/**
* 获得一个UUID
* @return String UUID
*/
public static String getUUID(){
String uuid = UUID.randomUUID().toString();
//去掉“-”符号
return uuid.replaceAll("-", "");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
UserEntity userEntity = new UserEntity();
IUserDao userDao = new UserDaoImpl();
String username = request.getParameter("userName");
String userPwd = request.getParameter("userPwd");
userEntity.setId(RegisterServlet.getUUID());
userEntity.setUserName(username);
userEntity.setUserPwd(userPwd);
Map<String,Object> map = new HashMap<>();
try {
boolean flag = userDao.saveUser(userEntity);
if (flag) {
map.put("success", "true");
map.put("msg", "注册成功!");
} else {
map.put("success", "false");
map.put("msg", "注册失败!");
}
response.getWriter().write(map.toString());
response.getWriter().flush();
response.getWriter().close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
项目总结
项目虽然简单,但是却是能说明JavaWeb的基础。此项目属于自己真正从零开始独立完成的。抛弃JSP,可以搭配独立的前端工程或使用postman调试。
原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/java/javaweb-register.html