jsp牛刀小试在线报名系统
首先,我们需要按照需求确定我们要做的报名系统的功能。即,我们只完成以下三个简单功能:
- 在线注册
- 查询报名详情
- 导出excel
其次,确定我们项目中所涉及的对象及关系。在这里,我们只有两个对象,一个为报名人员,一个为管理人员。根据这两个对象和报名所用到的信息,我们设计如下对象
我们把所有的对象都放在po包下,不要忘记自动生成get、set方法,重写toString()和构造方法。
package com.bzucsdn.po;
public class Member {
public String name;
public String grade;
public String department;
public String classes;
public String phone;
public String qq;
public String email;
public String remarks;
}
package com.bzucsdn.po;
public class Admin{
public String name;
public String password;
}
接下来,根据我们的对象,设计数据库
create table member(
id int primary key,
name char(20),
grade char(6),
department char(10),
classes char(10),
phone char(11),
qq char(12),
email char(20),
remarks char(200)
);
create table admin(
aname char(10),
apassword char(20)
);
实现注册报名,我们需要把人员信息存入到数据库,查询信息,我们需要把信息从数据库中取出来,下面我们就完成这两个数据库操作。
我们这里对数据库的操作用到了dbutil工具
- 首先,在util包中对数据库的连接关闭操作做好封装
package com.bzucsdn.util;
import java.sql.Connection;
import java.sql.DriverManager;
import org.apache.commons.dbutils.DbUtils;
public class DBUtil {
//0定义组件
private static Connection conn=null;
private static String strUserName="root";
private static String strPassword="yourPassWord";
private static String strUrl="jdbc:mysql://127.0.0.1:3306/bzucsdn?characterEncoding=utf8";
//获取链接
public static Connection getConnection() {
DbUtils.loadDriver("com.mysql.jdbc.Driver");
if (conn==null) {
try {
conn=DriverManager.getConnection(strUrl, strUserName, strPassword);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
return conn;
}
//关闭链接
public static void closeConnection() {
try {
if (!conn.isClosed()) {
conn.close();
}
if (conn!=null) {
conn=null;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- 其次,在dao包中,完成对数据库的操作
//首先是member的操作
package com.bzucsdn.dao;
import java.math.BigInteger;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapHandler;
import com.bzucsdn.po.Member;
import com.bzucsdn.util.DBUtil;
public class memberDao {
private QueryRunner qr=null;
private String strSql="";
private int intResult=-1;
public memberDao(){
qr=new QueryRunner();
}
public int memberInsert(Member mbr) {
// TODO Auto-generated method stub
Connection conn = DBUtil.getConnection();
int i=1;
BigInteger id=new BigInteger("0") ;
try {
strSql = "select LAST_INSERT_ID()";
Map<String, Object> map = qr.query(conn, strSql, new MapHandler());
id = (BigInteger)map.get("LAST_INSERT_ID()");
strSql = "insert into member (name,grade,department,classes,phone,qq,email,remarks) values(?,?,?,?,?,?,?,?)";
Object[] parms = {mbr.getName(),mbr.getGrade(),mbr.getDepartment(),mbr.getClasses(),mbr.getPhone(),mbr.getQq(),mbr.getEmail(),mbr.getBeizhu()};
i = qr.update(conn, strSql, parms);
DBUtil.closeConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 1;
}
return 0;
}
}
//其次是admin的操作
package com.bzucsdn.dao;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapListHandler;
import com.bzucsdn.util.DBUtil;
public class adminDao {
private QueryRunner qr=null;
private String strSql="";
public adminDao(){
qr=new QueryRunner();
}
public List<Map<String, Object>> getAllMember() {
strSql="select * from member ";
List<Map<String, Object>> map=null;
try {
map = qr.query(DBUtil.getConnection(), strSql, new MapListHandler());
DBUtil.closeConnection();
return map;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DBUtil.closeConnection();
return map;
}
}
这样就完成了对数据库的操作。那么接下来,就是需要完成servlet的功能了
同样我们把所有的web-api功能都放到servlet包下
- 首先是member的操作
package com.bzucsdn.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http