servlet实现考试系统源代码
整体布局
一、Jdbcutil工具包
连接数据库嘛,非它不可,毕竟数据库连接就那几步,总不能一直重复写
public class JdbcUtil {
//数据库url、用户名和密码
private static String driver="com.mysql.jdbc.Driver";//Ctrl+Alt+F抽取全局静态变量
private static String url="jdbc:mysql://localhost:3306/testweb?useUnicode=true&characterEncoding=utf-8";
private static String username="root";
private static String password="123456";
/*读取属性文件,获取jdbc信息*/
/*static{
ResourceBundle bundle = ResourceBundle.getBundle("db");
driver = bundle.getString("driver");
url = bundle.getString("url");
username = bundle.getString("username");
password = bundle.getString("password");
}*/
public static Connection getConnection() {
Connection connection = null;
try {
//1、注册JDBC驱动
Class.forName(driver);
/* 2、获取数据库连接 */
connection = DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static PreparedStatement createStatement(String sql) {
Connection con = getConnection();
PreparedStatement ps = null;
try {
ps = con.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return ps;
}
/*关闭结果集、数据库操作对象、数据库连接*/
public static void close(ResultSet re){
if(re!=null){
try {
re.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(PreparedStatement ps){
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void release(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
if(resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(preparedStatement!=null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
二、users实体类,dao类
匹配数据库表,用实体类把它封装起来方便使用!
package com.song.entity;
public class Users {
private Integer userId;
private String userName;
private String password;
private String sex;
private String email;
public Users(Integer userId, String userName, String password, String sex, String email) {
this.userId = userId;
this.userName = userName;
this.password = password;
this.sex = sex;
this.email = email;
}
public Users() {
}
public int 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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
userdao类,对数据库操作的方法全在这里边了
package com.song.dao;
public class UserDao {
private JdbcUtil util=new JdbcUtil();
public int add(Users users) throws SQLException {//从网页写数据入数据库操作
String sql="insert into Users(userName,password,sex,email)"+"values(?,?,?,?)";
PreparedStatement ps= util.createStatement(sql);
int result= 0;
try {
ps.setString(1,users.getUserName());
ps.setString(2,users.getPassword());
ps.setString(3,users.getSex());
ps.setString(4,users.getEmail());
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
ps.close();
}
return result;
}
public List findAll() {//查询操作
String sql="select * from users";
PreparedStatement ps=util.createStatement(sql);
List<Users> list = new ArrayList<>();
ResultSet re = null;
try {
re=ps.executeQuery();
while(re.next()){
Integer userId=re.getInt("userId");
String userName=re.getString("userName");
String password=re.getString("password");
String sex=re.getString("sex");
String email=re.getString("email");
Users users = new Users(userId, userName, password, sex, email);
list.add(users);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
util.close(re);
}
return list;
}
public int deleteUser(String userId) {//显然,删除操作
//JdbcUtil util = new JdbcUtil();
//Users users = new Users();
String sql="delete from Users where userId=?";
PreparedStatement ps = util.createStatement(sql);
int result=0;
try {
ps.setInt(1,Integer.valueOf(userId));
//ps.executeQuery();
//System.out.println("why???"+Integer.valueOf(userId));
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
util.close(ps);
//util.close(result);
}
return result;
}
}
三、servlet实现的注册,查询,删除用户数据
1、UserAddServlet,添加数据,用户注册操作
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
@WebServlet(name = "UserAddServlet")
public class UserAddServlet extends HttpServlet {
/*protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//调用请求对象
request.setCharacterEncoding("utf-8");
//request.setContentType("text/html;charset=UTF-8");
String userName,password,sex,email;
userName=request.getParameter("userName");
password=request.getParameter("password");
sex=request.getParameter("sex");
email=request.getParameter("email");
System.out.println("userName"+userName);
UserDao dao = new UserDao();
Users users = new Users(null, userName, password, sex, email);
int result= 0;
try {
result = dao.add(users);
} catch (SQLException e) {
e.printStackTrace();
}
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
if (result==1){
out.print("<font style='color:red;font-size:40'>用户信息注册成功</font>");
}else {
out.print("<font style='color:red;font-size:40'>用户信息注册失败</font>");
}
}
}
2、FindUserServlet 查询数据和用户
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
public class FindUserServlet extends HttpServlet {//查询数据
//protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UserDao dao = new UserDao();
PrintWriter out;
List<Users> list=dao.findAll();
//request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
out=response.getWriter();
out.print("<table border='2' align='center'>");
out.print("<tr>");
out.print("<td>用户编号</td>");
out.print("<td>用户姓名</td>");
out.print("<td>用户密码</td>");
out.print("<td>用户性别</td>");
out.print("<td>用户邮箱</td>");
out.print("<td>操作</td>");
out.print("</tr>");
for(Users users:list){
out.print("<tr>");
out.print("<td>"+users.getUserId()+"</td>");
out.print("<td>"+users.getUserName()+"</td>");
out.print("<td>******</td>");
out.print("<td>"+users.getSex()+"</td>");
out.print("<td>"+users.getEmail()+"</td>");
out.print("<td><a href='/myWeb/delete?userId="+users.getUserId()+"'>删除用户</a></td>");
out.print("</tr>");
}
out.print("</table>");
System.out.println("从数据库中查出来是否是乱码"+list.toString());
}
}
3、删除数据用户 DeleteUserServlet
public class DeleteUserServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userId;
PrintWriter out=null;
int result=0;
userId=request.getParameter("userId");
System.out.println(userId);
UserDao dao = new UserDao();
result=dao.deleteUser(userId);
System.out.println("???????"+result);
response.setContentType("text/html;charset=utf-8");
out=response.getWriter();
if(result==1){
out.print("<font style='color:red;font-size:40'>用户信息删除成功</font>");
}else{
out.print("<font style='color:red;font-size:40'>用户信息删除失败</font>");
}
}
}
四、其余网页(html)代码以及web.xml配置
用户注册网页,UserAdd.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<center>
<form action="/myWeb/user/add" method="get">
<table>
<tr>
<td>用户姓名</td>
<td><input type="text" name="userName"></td>
</tr>
<tr>
<td>用户密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>用户性别</td>
<td>
<input type="radio" name="sex" value="男"/>男
<input type="radio" name="sex" value="女"/>女
</td>
</tr>
<tr>
<td>用户邮箱</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td><input type="submit" value="用户注册"/></td>
<td><input type="reset"/></td>
</tr>
</table>
</form>
</center>
</body>
</html>
导航页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>主页</title>
</head>
<frameset rows="15%,85%">
<frame name="top"src="/myWeb/top.html"/>
<frameset cols="15%,85%">
<frame name="left" src="/myWeb/left.html"/>
<frame name="right" charset="UTF-8">
</frameset>
</frameset>
</html>
左侧
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body style="font-size: 15px;background-color: darkgrey">
<ul>
<li>用户信息管理
<ol>
<li><a href="/myWeb/user_Add.html"target="right">用户注册</a></li>
<li><a href="/myWeb/find"target="right">用户信息查询</a></li>
</ol></li>
<li>aaa</li>
</ul>
</body>
</html>
顶部
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body style="background-color: aqua">
<center>
<front style="color: black;font-size: 45px">天软在线考试管理系统</front>
</center>
</body>
</html>
web.xml文件配置
<servlet>
<servlet-name>UserAddServlet</servlet-name>
<servlet-class>com.song.controller.UserAddServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>FindUserServlet</servlet-name>
<servlet-class>com.song.controller.FindUserServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>DeleteUserServlet</servlet-name>
<servlet-class>com.song.controller.DeleteUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DeleteUserServlet</servlet-name>
<url-pattern>/delete</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FindUserServlet</servlet-name>
<url-pattern>/find</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>UserAddServlet</servlet-name>
<url-pattern>/user/add</url-pattern>
</servlet-mapping>
五、结果图,
用户注册
用户信息查询