实现了登录注册功能,并将数据传送到数据库中
- 创建登录和注册页面
- 将注册页面的form表单中的action=""改为自己写的servlet用于接收请求参数,并向数据库中存储。
- 登录的时候先进行前端检验,再进行后端检验,拿出数据库中的数据进行检验,若账户密码正确,则登陆成功。
- 登录注册页面,较为简单,省略。
- 创建registServlet,接收数据存储再数据库中,我们需要创建一个User类,来封装我们获取的请求参数:User类如下:(注意需要导入lombok包,并覆盖setter,getter和toString方法)
@Setter@Getter
public class User {
private String username;
private String password;
private String phone;
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", phone=" + phone + "]";
}
}
- registServlet如下
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("registServlet");
//1.设置字符编码
//设置请求编码,必须将form表单的提交方式设置为post
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
//2.获取请求的数据
Map<String, String[]> map = request.getParameterMap();
//创建User对象,使用beanutils将获取的数据封装到User对象中
User u = new User();
try {
BeanUtils.populate(u, map);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
//3.连接数据库,需要拿到数据库的数据源,和db.properties
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
//4.向数据库中插入数据
String sql = "insert into user value(?,?,?)";
try {
qr.update(sql,u.getUsername(),u.getPassword(),u.getPhone());
} catch (SQLException e) {
e.printStackTrace();
}
db.properties文件内容:(使用mysql8.0进行连接)
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/wzshop?useSSL=false&rewriteBatchedStatements=true&serverTimezone=UTC
username=root
password=123456
maxActive=8
- 进行数据库连接的类JDBCUtils如下:
public class JDBCUtils {
public static DataSource ds = null;
static {
try {
//1.加载配置文件
Properties p = new Properties();
//获取字节码目录,因为编译成字节码过后,该文件会存放在classes中。
String path = JDBCUtils.class.getClassLoader().getResource("db.properties").getPath();
System.out.println(path);
FileInputStream in = new FileInputStream(path);
p.load(in);
ds = DruidDataSourceFactory.createDataSource(p);
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDataSource() {
return ds;
}
/**
* 关闭资源
*/
public static Connection getCon() {
try{
return ds.getConnection();
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
public static void close(Connection conn,Statement st) {
if(st != null) {
try
{
st.close();
} catch (SQLException e)
{
e.printStackTrace();
}
}
if(conn != null) {
try
{
conn.close();
} catch (SQLException e)
{
e.printStackTrace();
}
}
这样一来注册功能就完成了。
其余内容接下一篇
- 需要导入的jar和文件有