用eclipse做的课后实验项目,功能还挺多的,包括注册、登录(有验证码)、对学生信息的增删查改以及文件的上传和下载等。具体效果如下:
注册界面:
登录界面:
登录成功后跳转到如下界面:
选择第一个操作,进到下一个页面(查询学生信息):
点击修改和删除可以对学生信息进行修改和删除,文件上传和下载功能网上都可以搜,这里就不做演示了。
首先是数据库中有个学生表,其中包含学生的基本信息。
项目大概结构如下:
分包大概如下吧(自身习惯):
做项目前先准备好下面工具:
导入需要的jar包以及创建连接数据库的配置文件
连接数据库的配置文件:(可以搜索c3p0的用法,那个比较简洁。当时做实验的时候还不会用那个,后来回了之后前面的代码也不想改了,就先用着以前的吧)
student是我的数据库,后面的对编码格式和时差的设置(版本问题,有些可以不用设置)
url=jdbc:mysql://localhost/student?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username=root
password=123456
然后就是连接数据的工具类JDBCUtil,会用jdbc的自动跳过这些
package com.util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCUtil {
static String url=null;
static String username=null;
static String password=null;
static {
try {
Properties pro=new Properties();
//FileInputStream in=new FileInputStream("jdbc.properties");
InputStream in=JDBCUtil.class.getClassLoader().getResourceAsStream("../../config/jdbc.properties");
Class.forName("com.mysql.cj.jdbc.Driver");
pro.load(in);
url=pro.getProperty("url");
username=pro.getProperty("username");
password=pro.getProperty("password");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConn() {
Connection conn=null;
try {
conn=DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn,Statement sta,ResultSet rs) {
closeConn(conn);
closeSta(sta);
closeRs(rs);
}
public static void close(Connection conn,Statement sta) {
closeConn(conn);
closeSta(sta);
}
private static void closeConn(Connection conn) {
try {
if (conn!=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private static void closeSta(Statement sta) {
try {
if (sta!=null) {
sta.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private static void closeRs(ResultSet rs) {
try {
if (rs!=null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
好了,现在就是代码演示了。
1、注册功能
**register.jsp:**这里样式用了jQuery进行设置,这里就不具体介绍了。实在不行将那些样式删了用最直接的form表单也行。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="js/jquery-1.12.4.js"></script>
<script src="js/reg.js"></script>
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>注册</title>
<link href="css/style.css" rel="stylesheet"/>
</head>
<body>
<div class="container">
<h3 class="reg-top"></h3>
<div class="reg-box">
<div class="reg-main">
<h4>注册账号</h4>
<form action="registerServlet" method="post" class="reg-form">
<div class="reg-input">
<label><i>*</i>姓名:</label>
<input type="text" name="name" required placeholder="用户名不能为空"/>
</div>
<div class="reg-input">
<label><i>*</i>密码:</label>
<input type="password" name="pass" required placeholder="长度为6-16个字符" pattern="[a-zA-Z0-9]{6,16}"/>
</div>
<div class="reg-input">
<label><i>*</i>邮箱:</label>
<input type="email" name="email" required name="email"/>
</div>
<br>
<div>
<label><i></i>性别:</label>
<input type="radio" name="gender" value="男"/>男
<input type="radio" name="gender" value="女"/>女
</div>
<div class="reg-input">
<label>生日:</label>
<input type="date" name="date">
</div>
<div class="reg-input">
<label>手机号码:</label>
<input type="text" name="phone" pattern="^1[34578][0-9]{9}$"/>
<span id="tel-tip">忘记密码时找回密码使用</span>
</div><br>
<div>
<label>密码问题:</label>
<input type="text" name="question">
<label>密码答案:</label>
<input type="text" name="answer">
</div>
<div class="reg-input">
<label>爱好:</label>
<input type="text" name="hobby"/>
</div>
<div class="submit-box">
<input type="submit" id="submit" value="立即注册" >
</div>
</form>
</div>
</div>
</div>
</body>
</html>
然后就是学生表的实体类Student(放在bean包),用于存放学生信息。(和数据库中的学生表相对应)
package com.bean;
public class Student {
private int id;
private String name;
private String password;
private String email;
private String gender;
private String birthday;
private String phone;
private String question;
p