目录
一.底层代码块
1.util包下的
①DBHelper代码块
package com.jiangwenjuan.util; 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 DBHelper { private static String driver; private static String url; private static String user; private static String password; static {// 静态块执行一次,加载,驱动一次 try { InputStream is = DBHelper.class .getResourceAsStream("config.properties"); Properties properties = new Properties(); properties.load(is); driver = properties.getProperty("driver"); url = properties.getProperty("url"); user = properties.getProperty("user"); password = properties.getProperty("pwd"); Class.forName(driver); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } /** * 获得数据连接对象 * * @return */ public static Connection getConnection() { try { Connection conn = DriverManager.getConnection(url, user, password); return conn; } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } public static void close(ResultSet rs) { if (null != rs) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } } public static void close(Statement stmt) { if (null != stmt) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } } public static void close(Connection conn) { if (null != conn) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } } public static void myClose(Connection con,PreparedStatement ps,ResultSet rs) { try { if(rs!=null) { rs.close(); } if(ps!=null) { ps.close(); } if(con!=null&&!con.isClosed()) { con.close(); } } catch (Exception e) { e.printStackTrace(); } } public static void close(Connection conn, Statement stmt, ResultSet rs) { close(rs); close(stmt); close(conn); } public static boolean isOracle() { return "oracle.jdbc.driver.OracleDriver".equals(driver); } public static boolean isSQLServer() { return "com.microsoft.sqlserver.jdbc.SQLServerDriver".equals(driver); } public static boolean isMysql() { return "com.mysql.jdbc.Driver".equals(driver); } public static void main(String[] args) { Connection conn = DBHelper.getConnection(); DBHelper.close(conn); System.out.println("isOracle:?" + isOracle()); System.out.println("isSQLServer:?" + isSQLServer()); System.out.println("isMysql:?" + isMysql()); System.out.println("数据库连接(关闭)成功"); } }
②连接某个数据库的连接,比如我的连的是MySQL的,然后就把MySQL的打开其他的注释。用什么数据库就打开什么数据库即可.
config.properties代码块:
#oracle9i #driver=oracle.jdbc.driver.OracleDriver #url=jdbc:oracle:thin:@localhost:1521:orcl #user=scott #pwd=123 #sql2005 #driver=com.microsoft.sqlserver.jdbc.SQLServerDriver #url=jdbc:sqlserver://localhost:1433;DatabaseName=test1 #user=sa #pwd=123 #sql2000 #driver=com.microsoft.jdbc.sqlserver.SQLServerDriver #url=jdbc:microsoft:sqlserver://localhost:1433;databaseName=unit6DB #user=sa #pwd=888888 #mysql driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8&useSSL=false user=root pwd=123456
2.实例类entity
①学生实体类
package com.jiangwenjuan.entity;
import java.io.Serializable;
import java.util.List;
/**
* 学生类
* @author Administrator
*
*/
public class Student implements Serializable{
private static final long serialVersionUID = 7154831938131519366L;
private int sid;
private String sname;
private Teacher t;
private Class c;
// private Hobby h;
private String ss;//用来增加 xiugai
private List<Hobby> ls;//用来绑值
//定义一个
public int getSid() {
return sid;
}
public String getSs() {
return ss;
}
public void setSs(String ss) {
this.ss = ss;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Teacher getT() {
return t;
}
public void setT(Teacher t) {
this.t = t;
}
public Class getC() {
return c;
}
public void setC(Class c) {
this.c = c;
}
public List<Hobby> getLs() {
return ls;
}
public void setLs(List<Hobby> ls) {
this.ls = ls;
}
public Student() {
// TODO Auto-generated constructor stub
}
public Student(int sid, String sname, Teacher t, Class c, List<Hobby> ls) {
super();
this.sid = sid;
this.sname = sname;
this.t = t;
this.c = c;
this.ls = ls;
}
public Student(String sname, Teacher t, Class c, String ss) {
this.sname = sname;
this.t = t;
this.c = c;
this.ss = ss;
}
@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + ", t=" + t + ", c=" + c + ", ls=" + ls + "]";
}
}
②老师实体类
package com.jiangwenjuan.entity;
import java.io.Serializable;
/**
* 教师类
* @author Administrator
*
*/
public class Teacher implements Serializable{
/**
*
*/
private static final long serialVersionUID = 4984197172186331612L;
private int tid;
private String tname;
private Class c;
public int getTid() {
return tid;
}
public void setTid(int tid) {
this.tid = tid;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public Class getC() {
return c;
}
public void setC(Class c) {
this.c = c;
}
public Teacher() {
// TODO Auto-generated constructor stub
}
public Teacher(int tid, String tname, Class c) {
this.tid = tid;
this.tname = tname;
this.c = c;
}
@Override
public String toString() {
return "Teacher [tid=" + tid + ", tname=" + tname + ", c=" + c + "]";
}
}
③班级实体类
package com.jiangwenjuan.entity;
import java.io.Serializable;
/**
* 班级类
* @author Administrator
*
*/
public class Class implements Serializable{
/**
*
*/
private static final long serialVersionUID = -5145856861606131091L;
private int cid;
private String cname;
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public Class() {
// TODO Auto-generated constructor stub
}
public Class(int cid, String cname) {
super();
this.cid = cid;
this.cname = cname;
}
@Override
public String toString() {
return "Class [cid=" + cid + ", cname=" + cname + "]";
}
}
④爱好实体类
package com.jiangwenjuan.entity;
import java.io.Serializable;
/**
* 爱好类
* @author Administrator
*
*/
public class Hobby implements Serializable{
/**
*
*/
private static final long serialVersionUID = -9120395110708701114L;
private String hid;
private String hname;
public String getHid() {
return hid;
}
public void setHid(String hid) {
this.hid = hid;
}
public String getHname() {
return hname;
}
public void setHname(String hname) {
this.hname = hname;
}
public Hobby() {
// TODO Auto-generated constructor stub
}
public Hobby(String hid, String hname) {
super();
this.hid = hid;
this.hname = hname;
}
@Override
public String toString() {
return "Hobby [hid=" + hid + ", hname=" + hname + "]";
}
}
3.dao方法 数据库访问层
①学生类的数据库访问层
package com.jiangwenjuan.dao;
import java.sql.Array;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.jiangwenjuan.entity.Class;
import com.jiangwenjuan.entity.Hobby;
import com.jiangwenjuan.entity.Student;
import com.jiangwenjuan.entity.Teacher;
import com.jiangwenjuan.util.DBHelper;
public class StudentDao implements IStudentDao{
//三兄弟
private Connection con=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
//调用爱好dao层
IHobbyDao ihd=new HobbyDao();
@Override
public List<Student> getAll() {
List<Student> ls=new ArrayList<Student>();
try {
con=DBHelper.getConnection();
String sql="select * from tb_student";
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()) {
//实例化一个爱好数组
List<Hobby> lss=new ArrayList<>();
Student stu=new Student();
stu.setSid(rs.getInt(1));
stu.setSname(rs.getString(2));
stu.setT(new BjJyAhDao().getTeacher(rs.getInt(3)));
stu.setC(new BjJyAhDao().getOne(rs.getInt(4)));
String sa = rs.getString(5);
//用逗号分割
String[] io = sa.split(",");
for (String kk : io) {
//调用查询单个方法
Hobby h = ihd.getHobby(kk);
lss.add(h);
}
stu.setLs(lss);
ls.add(stu);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return ls;
}
@Override
public int addStu(Student stu) {
int n=0;
try {
con=DBHelper.getConnection();
String sql="insert into tb_student(sname,tid,cid,hid) values(?,?,?,?)";
ps=con.prepareStatement(sql);
ps.setString(1, stu.getSname());
ps.setInt(2, stu.getT().getTid());
ps.setInt(3, stu.getC().getCid());
ps.setString(4, stu.getSs());
n=ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return n;
}
@Override
public int delStu(int sid) {
int n=0;
try {
con=DBHelper.getConnection();
String sql="delete from tb_student where sid=?";
ps=con.prepareStatement(sql);
ps.setInt(1, sid);
n=ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return n;
}
@Override
public int updStu(int sid, Student stu) {
int n=0;
try {
con=DBHelper.getConnection();
String sql="update tb_student set sname=?,tid=?,cid=?,hid=? where sid=?";
ps=con.prepareStatement(sql);
ps.setString(1, stu.getSname());
ps.setInt(2, stu.getT().getTid());
ps.setInt(3, stu.getC().getCid());
// ps.setString(4, stu.getH().getHid());
ps.setString(4, stu.getSs());
ps.setInt(5, sid);
n=ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return n;
}
@Override
public Student getStu(int sid) {
Student stu=new Student();
try {
con=DBHelper.getConnection();
String sql="select * from tb_student where sid=?";
ps=con.prepareStatement(sql);
ps.setInt(1, sid);
rs=ps.executeQuery();
if(rs.next()) {
//实例化一个爱好数组
List<Hobby> lss=new ArrayList<>();
stu.setSid(rs.getInt(1));
stu.setSname(rs.getString(2));
stu.setT(new BjJyAhDao().getTeacher(rs.getInt(3)));
stu.setC(new BjJyAhDao().getOne(rs.getInt(4)));
String sa = rs.getString(5);
//用逗号分割
String[] io = sa.split(",");
for (String kk : io) {
//调用查询单个方法
Hobby h = ihd.getHobby(kk);
lss.add(h);
}
stu.setLs(lss);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return stu;
}
@Override
public List<Student> getMH(String ctr, String htr, String str, int pageInde, int pageSize) {
List<Student> ls=new ArrayList<Student>();
int a=(pageInde-1)*pageSize;
try {
con=DBHelper.getConnection();
String sql="select * from tb_student where hid like '%"+htr+"%' and tid like '%"+str+"%' and cid like '%"+ctr+"%' limit ?,?";
ps=con.prepareStatement(sql);
ps.setInt(1, a);
ps.setInt(2, pageSize);
rs=ps.executeQuery();
while(rs.next()) {
//实例化一个爱好数组
List<Hobby> lss=new ArrayList<>();
Student stu=new Student();
stu.setSid(rs.getInt(1));
stu.setSname(rs.getString(2));
stu.setT(new BjJyAhDao().getTeacher(rs.getInt(3)));
stu.setC(new BjJyAhDao().getOne(rs.getInt(4)));
String sa = rs.getString(5);
//用逗号分割
String[] io = sa.split(",");
for (String kk : io) {
//调用查询单个方法
Hobby h = ihd.getHobby(kk);
lss.add(h);
}
stu.setLs(lss);
ls.add(stu);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return ls;
}
@Override
public int getRows(String str) {
int n=0;
try {
con=DBHelper.getConnection();
String sql="select count(*) from "+str;
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
if(rs.next()) {
n=rs.getInt(1);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return n;
}
}
②老师类的数据库访问层
package com.jiangwenjuan.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.jiangwenjuan.entity.Teacher;
import com.jiangwenjuan.util.DBHelper;
public class TeacherDao implements ITeacherDao{
//三兄弟
private Connection con=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
@Override
public List<Teacher> getAll() {
List<Teacher> ls=new ArrayList<Teacher>();
try {
con=DBHelper.getConnection();
String sql="select * from tb_teacher";
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()) {
Teacher t=new Teacher();
t.setTid(rs.getInt(1));
t.setTname(rs.getString(2));
ls.add(t);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return ls;
}
@Override
public Teacher getTeacher(int tid) {
Teacher t=new Teacher();
BjJyAhDao bjJyAhDao = new BjJyAhDao();
try {
con=DBHelper.getConnection();
String sql="select * from tb_teacher where tid=?";
ps=con.prepareStatement(sql);
ps.setInt(1, tid);
rs=ps.executeQuery();
if(rs.next()) {
t.setTid(rs.getInt(1));
t.setTname(rs.getString(2));
t.setC(bjJyAhDao.getOne(rs.getInt(3)));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return t;
}
}
③班级类的数据库访问层
package com.jiangwenjuan.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.jiangwenjuan.entity.Class;
import com.jiangwenjuan.util.DBHelper;
public class ClassDao implements IClassDao{
private Connection con=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
@Override
public List<Class> getAll() {
List<Class> ls=new ArrayList<Class>();
try {
con=DBHelper.getConnection();
String sql="select * from tb_class";
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()) {
Class c=new Class();
c.setCid(rs.getInt(1));
c.setCname(rs.getString(2));
ls.add(c);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return ls;
}
@Override
public Class getOne(int cid) {
Class c=new Class();
try {
con=DBHelper.getConnection();
String sql="select * from tb_class where cid=?";
ps=con.prepareStatement(sql);
ps.setInt(1, cid);
rs=ps.executeQuery();
if(rs.next()) {
c.setCid(rs.getInt(1));
c.setCname(rs.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return c;
}
}
④爱好类数据库访问层
package com.jiangwenjuan.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.jiangwenjuan.entity.Hobby;
import com.jiangwenjuan.util.DBHelper;
public class HobbyDao implements IHobbyDao{
private Connection con=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
@Override
public List<Hobby> getAll() {
List<Hobby> ls=new ArrayList<Hobby>();
try {
con=DBHelper.getConnection();
String sql="select * from tb_hobby";
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()) {
Hobby h=new Hobby();
h.setHid(rs.getString(1));
h.setHname(rs.getString(2));
ls.add(h);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return ls;
}
@Override
public Hobby getHobby(String hid) {
Hobby h=new Hobby();
try {
con=DBHelper.getConnection();
String sql="select * from tb_hobby where hid=?";
ps=con.prepareStatement(sql);
ps.setString(1, hid);
rs=ps.executeQuery();
if(rs.next()) {
h.setHid(rs.getString(1));
h.setHname(rs.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return h;
}
}
4.dao方法 接口
①学生接口:
package com.jiangwenjuan.dao;
import java.util.List;
import com.jiangwenjuan.entity.Student;
public interface IStudentDao {
//查询学生全部信息
public List<Student> getAll();
//增加学生信息
public int addStu(Student stu);
//删除学生信息
public int delStu(int sid);
//修改学生信息
public int updStu(int sid,Student stu);
//查询单个学生信息
public Student getStu(int sid);
//分页的模糊查询
public List<Student> getMH(String ctr,String htr,String str,int pageInde,int pageSize);
//查询总行数
public int getRows(String str);
}
②老师接口:
package com.jiangwenjuan.dao;
import java.util.List;
import com.jiangwenjuan.entity.Teacher;
public interface ITeacherDao {
//查询老师全部信息
public List<Teacher> getAll();
//查询单个信息
public Teacher getTeacher(int tid);
}
③班级接口:
package com.jiangwenjuan.dao;
import java.util.List;
import com.jiangwenjuan.entity.Class;
public interface IClassDao {
//查询班级全部信息
public List<com.jiangwenjuan.entity.Class> getAll();
//查询单个方法
public Class getOne(int cid);
}
④爱好接口:
package com.jiangwenjuan.dao;
import java.util.List;
import com.jiangwenjuan.entity.Hobby;
public interface IHobbyDao {
//查询爱好全部信息
public List<Hobby> getAll();
//查询单个信息
public Hobby getHobby(String hid);
}
共有类:
package com.jiangwenjuan.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.jiangwenjuan.entity.Class;
import com.jiangwenjuan.entity.Hobby;
import com.jiangwenjuan.entity.Teacher;
import com.jiangwenjuan.util.DBHelper;
public class BjJyAhDao {
private Connection con=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
public Class getOne(int cid) {
Class c=new Class();
try {
con=DBHelper.getConnection();
String sql="select * from tb_class where cid=?";
ps=con.prepareStatement(sql);
ps.setInt(1, cid);
rs=ps.executeQuery();
if(rs.next()) {
c.setCid(rs.getInt(1));
c.setCname(rs.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return c;
}
public Teacher getTeacher(int tid) {
Teacher t=new Teacher();
try {
con=DBHelper.getConnection();
String sql="select * from tb_teacher where tid=?";
ps=con.prepareStatement(sql);
ps.setInt(1, tid);
rs=ps.executeQuery();
if(rs.next()) {
t.setTid(rs.getInt(1));
t.setTname(rs.getString(2));
t.setC(getOne(rs.getInt(3)));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return t;
}
public Hobby getHobby(String hid) {
Hobby h=new Hobby();
try {
con=DBHelper.getConnection();
String sql="select * from tb_hobby where hid=?";
ps=con.prepareStatement(sql);
ps.setString(1, hid);
rs=ps.executeQuery();
if(rs.next()) {
h.setHid(rs.getString(1));
h.setHname(rs.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return h;
}
}
5.biz方法 业务逻辑层
①学生类:
package com.jiangwenjuan.biz;
import java.util.List;
import com.jiangwenjuan.dao.IStudentDao;
import com.jiangwenjuan.dao.StudentDao;
import com.jiangwenjuan.entity.Student;
public class StudentBiz implements IStudentBiz{
IStudentDao isd=new StudentDao();
@Override
public List<Student> getAll() {
return isd.getAll();
}
@Override
public int addStu(Student stu) {
return isd.addStu(stu);
}
@Override
public int delStu(int sid) {
return isd.delStu(sid);
}
@Override
public int updStu(int sid, Student stu) {
return isd.updStu(sid, stu);
}
@Override
public Student getStu(int sid) {
return isd.getStu(sid);
}
@Override
public List<Student> getMH(String ctr, String htr, String str, int pageInde, int pageSize) {
return isd.getMH(ctr, htr, str, pageInde, pageSize);
}
@Override
public int getRows(String str) {
return isd.getRows(str);
}
}
②教员类:
package com.jiangwenjuan.biz;
import java.util.List;
import com.jiangwenjuan.dao.ITeacherDao;
import com.jiangwenjuan.dao.TeacherDao;
import com.jiangwenjuan.entity.Teacher;
public class TeacherBiz implements ITeacherBiz{
ITeacherDao itd=new TeacherDao();
@Override
public List<Teacher> getAll() {
return itd.getAll();
}
@Override
public Teacher getTeacher(int tid) {
return itd.getTeacher(tid);
}
}
③班级类:
package com.jiangwenjuan.biz;
import java.util.List;
import com.jiangwenjuan.dao.ClssDao;
import com.jiangwenjuan.dao.IClassDao;
import com.jiangwenjuan.entity.Class;
public class ClassBiz implements IClassBiz{
IClassDao icd=new ClssDao();
@Override
public List<Class> getAll() {
return icd.getAll();
}
@Override
public Class getOne(int cid) {
return icd.getOne(cid);
}
}
④爱好类:
package com.jiangwenjuan.biz;
import java.util.List;
import com.jiangwenjuan.dao.HobbyDao;
import com.jiangwenjuan.dao.IHobbyDao;
import com.jiangwenjuan.entity.Hobby;
public class HobbyBiz implements IHobbyBiz{
IHobbyDao ihd=new HobbyDao();
@Override
public List<Hobby> getAll() {
return ihd.getAll();
}
@Override
public Hobby getHobby(String hid) {
return ihd.getHobby(hid);
}
}
6.biz方法 接口
①学生接口:
package com.jiangwenjuan.biz;
import java.util.List;
import com.jiangwenjuan.entity.Student;
public interface IStudentBiz {
//查询学生全部方法
public List<Student> getAll();
//增加学生方法
public int addStu(Student stu);
//删除学生信息
public int delStu(int sid);
//修改学生信息
public int updStu(int sid,Student stu);
//查询单个信息
public Student getStu(int sid);
//分页的模糊查询
public List<Student> getMH(String ctr, String htr, String str, int pageInde, int pageSize);
//查询总行数
public int getRows(String str);
}
②教员接口:
package com.jiangwenjuan.biz;
import java.util.List;
import com.jiangwenjuan.entity.Teacher;
public interface ITeacherBiz {
//查询老师全部
public List<Teacher> getAll();
//查询单个
public Teacher getTeacher(int tid);
}
③班级接口:
package com.jiangwenjuan.biz;
import java.util.List;
import com.jiangwenjuan.entity.Class;
public interface IClassBiz {
//查询班级全部信息
public List<com.jiangwenjuan.entity.Class> getAll();
//查询单个方法
public Class getOne(int cid);
}
④爱好接口:
package com.jiangwenjuan.biz;
import java.util.List;
import com.jiangwenjuan.entity.Hobby;
public interface IHobbyBiz {
//查询爱好全部信息
public List<Hobby> getAll();
//查询单个信息
public Hobby getHobby(String hid);
}
二.主界面
1.主界面的jsp代码块:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<center>
<form method="post" action="IndexServlet">
<c:if test="${empty la}">
<jsp:forward page="IndexServlet"></jsp:forward>
</c:if>
<c:if test="${not empty la}">
<select name="str">
<c:forEach var="t" items="${la}">
<option value="${t.tid}">${t.tname}</option>
</c:forEach>
</select>
</c:if>
<c:if test="${empty lc}">
<jsp:forward page="IndexServlet"></jsp:forward>
</c:if>
<c:if test="${not empty lc}">
<select name="ctr">
<c:forEach var="c" items="${lc}">
<option value="${c.cid}">${c.cname}</option>
</c:forEach>
</select>
</c:if>
<c:if test="${empty lh}">
<jsp:forward page="IndexServlet"></jsp:forward>
</c:if>
<c:if test="${not empty lh}">
<c:forEach items="${lh}" var="h">
<input type="checkbox" name="htr" value="${h.hid},"/>${h.hname}
</c:forEach>
</c:if>
<input type="submit" value="查询"/>
</form>
<c:if test="${empty ls}">
<jsp:forward page="IndexServlet"></jsp:forward>
</c:if>
<c:if test="${not empty ls}">
<table border="1px">
<tr>
<td>学生编号</td>
<td>学生姓名</td>
<td>学生的教员</td>
<td>学生所在班级</td>
<td>学生爱好</td>
<td>操作 <a href="add.jsp">增加</a></td>
</tr>
<c:forEach items="${ls}" var="s">
<tr>
<td>${s.sid}</td>
<td>${s.sname}</td>
<td>${s.t.tname}</td>
<td>${s.c.cname}</td>
<td>
<c:forEach items="${s.ls}" var="sd">
${sd.hname}
</c:forEach>
</td>
<td>
<a onclick="return confirm('你确定要删除吗?');" href="DeleteServlet?sid=${s.sid}">删除</a>
<a href="PreUpdateServlet?sid=${s.sid}">修改</a>
</td>
</tr>
</c:forEach>
<tr>
<td colspan="6">
<a href="IndexServlet?pid=1">首页</a>
<a href="IndexServlet?pid=${pageIndex>1?pageIndex-1:1}">上一页</a>
[${pageIndex}/${max}]
<a href="IndexServlet?pid=${pageIndex<max?pageIndex+1:max}">下一页</a>
<a href="IndexServlet?pid=${max}">尾页</a>
</td>
</tr>
</table>
</c:if>
</center>
</body>
</html>
2.主界面的Servlet代码块:
package com.jiangwenjuan.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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 com.jiangwenjuan.biz.ClassBiz;
import com.jiangwenjuan.biz.HobbyBiz;
import com.jiangwenjuan.biz.IClassBiz;
import com.jiangwenjuan.biz.IHobbyBiz;
import com.jiangwenjuan.biz.IStudentBiz;
import com.jiangwenjuan.biz.ITeacherBiz;
import com.jiangwenjuan.biz.StudentBiz;
import com.jiangwenjuan.biz.TeacherBiz;
import com.jiangwenjuan.entity.Class;
import com.jiangwenjuan.entity.Hobby;
import com.jiangwenjuan.entity.Student;
import com.jiangwenjuan.entity.Teacher;
@WebServlet("/IndexServlet")
public class IndexServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码方式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
//定义页码页数
int pageInde=1;
int pageSize=4;
//接收表单传值
String ctr = request.getParameter("ctr");//班级
String htr = request.getParameter("htr");//爱好
String str = request.getParameter("str");//教员
if(str==null) {
str="";
}
if(htr==null) {
htr="";
}
if(ctr==null) {
ctr="";
}
String pid=request.getParameter("pid");
if(pid!=null) {
pageInde=Integer.parseInt(pid);
}
IStudentBiz isb=new StudentBiz();
int rows=isb.getRows("tb_student where cid like '%"+ctr+"%' and hid like '%"+htr+"%' and tid like '%"+str+"%'");
int max=rows/pageSize;
if(rows%pageSize!=0) {
max++;
}
if(max==0) {
max=1;
}
//查询所有的班级
IClassBiz icb=new ClassBiz();
List<Class> lc = icb.getAll();
//查询所有的教员
ITeacherBiz itb=new TeacherBiz();
List<Teacher> lt = itb.getAll();
//查询所有的学生
// List<Student> ls = isb.getAll();
//带模糊查询的分页
List<Student> ls = isb.getMH(ctr, htr, str, pageInde, pageSize);
//查询所有的爱好
IHobbyBiz ihb=new HobbyBiz();
List<Hobby> lh = ihb.getAll();
if(ls.size()!=0&<.size()!=0&&lc.size()!=0&&lh.size()!=0) {
request.setAttribute("pageIndex", pageInde);
request.setAttribute("ls", ls);
request.setAttribute("la", lt);
request.setAttribute("lc", lc);
request.setAttribute("lh", lh);
request.setAttribute("max", max);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
else {
System.out.println("集合为空");
}
}
}
三.增加功能
1.增加的jsp代码块:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function myf(){
location.href="index.jsp";
}
</script>
</head>
<body>
<center>
<form action="AddServlet" method="post">
<table border="1px">
<tr>
<td>学生姓名</td>
<td><input type="text" name="sname"/></td>
</tr>
<tr>
<td>教员</td>
<td>
<c:if test="${empty la}">
<jsp:forward page="PreAddServlet"></jsp:forward>
</c:if>
<c:if test="${not empty la}">
<select name="teacher">
<c:forEach var="t" items="${la}">
<option value="${t.tid}">${t.tname}</option>
</c:forEach>
</select>
</c:if>
</td>
</tr>
<tr>
<td>班级</td>
<td>
<c:if test="${empty lc}">
<jsp:forward page="PreAddServlet"></jsp:forward>
</c:if>
<c:if test="${not empty lc}">
<select name="class">
<c:forEach var="c" items="${lc}">
<option value="${c.cid}">${c.cname}</option>
</c:forEach>
</select>
</c:if>
</td>
</tr>
<tr>
<td>爱好</td>
<td>
<c:if test="${empty lh}">
<jsp:forward page="PreAddServlet"></jsp:forward>
</c:if>
<c:if test="${not empty lh}">
<c:forEach items="${lh}" var="h">
<input type="checkbox" name="aa" value="${h.hid},"/>${h.hname}
</c:forEach>
</c:if>
</td>
</tr>
</table>
<input type="submit" value="增加"/>
<input type="button" value="清空" onclick="myf()"/>
</form>
</center>
</body>
</html>
2.增加界面的绑值代码块:
package com.jiangwenjuan.servlet;
import java.io.IOException;
import java.util.List;
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 com.jiangwenjuan.biz.ClassBiz;
import com.jiangwenjuan.biz.HobbyBiz;
import com.jiangwenjuan.biz.IClassBiz;
import com.jiangwenjuan.biz.IHobbyBiz;
import com.jiangwenjuan.biz.ITeacherBiz;
import com.jiangwenjuan.biz.TeacherBiz;
import com.jiangwenjuan.entity.Class;
import com.jiangwenjuan.entity.Hobby;
import com.jiangwenjuan.entity.Teacher;
@WebServlet("/PreAddServlet")
public class PreAddServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码方式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
//调用业务逻辑层
IHobbyBiz ihb=new HobbyBiz();
IClassBiz icb=new ClassBiz();
ITeacherBiz itb=new TeacherBiz();
List<Hobby> lh = ihb.getAll();
List<Class> lc = icb.getAll();
List<Teacher> lt = itb.getAll();
if(lh.size()!=0&&lc.size()!=0&<.size()!=0) {
request.setAttribute("lh", lh);
request.setAttribute("lc", lc);
request.setAttribute("la", lt);
request.getRequestDispatcher("add.jsp").forward(request, response);
}
else {
System.out.println("集合为空");
}
}
}
3.增加界面的Servlet代码块:
package com.jiangwenjuan.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
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 com.jiangwenjuan.biz.ClassBiz;
import com.jiangwenjuan.biz.HobbyBiz;
import com.jiangwenjuan.biz.IClassBiz;
import com.jiangwenjuan.biz.IHobbyBiz;
import com.jiangwenjuan.biz.IStudentBiz;
import com.jiangwenjuan.biz.ITeacherBiz;
import com.jiangwenjuan.biz.StudentBiz;
import com.jiangwenjuan.biz.TeacherBiz;
import com.jiangwenjuan.entity.Class;
import com.jiangwenjuan.entity.Hobby;
import com.jiangwenjuan.entity.Student;
import com.jiangwenjuan.entity.Teacher;
@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码方式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
//拿out
PrintWriter out = response.getWriter();
//接收表单传值
String sname = request.getParameter("sname");
String tid = request.getParameter("teacher");
String cid = request.getParameter("class");
String[] hobby = request.getParameterValues("aa");
String ss="";
for (String string : hobby) {
ss+=string;
}
//调用业务逻辑层
IStudentBiz isb=new StudentBiz();
ITeacherBiz itb=new TeacherBiz();
Teacher t = itb.getTeacher(Integer.parseInt(tid));
IClassBiz icb=new ClassBiz();
Class c = icb.getOne(Integer.parseInt(cid));
Student stu=new Student(sname, t, c, ss);
int n = isb.addStu(stu);
if(n>0) {//加入成功
out.print("<script>alert('增加成功');location.href='index.jsp';</script>");
}
else {//加入失败
out.print("<script>alert('增加失败');location.href='add.jsp';</script>");
}
}
}
四.修改功能
1.修改界面的jsp代码块:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<center>
<form action="PreUpdateServlet1?sid=${stu.sid}" method="post">
<table border="1px">
<tr>
<td>学生姓名</td>
<td><input type="text" name="sname" value="${stu.sname}"/></td>
</tr>
<tr>
<td>教员</td>
<td>
<select name="teacher">
<c:forEach var="t" items="${la}">
<option <c:if test="${t.tid==stu.t.tid}"> selected="selected" </c:if> value="${t.tid}">${t.tname}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>班级</td>
<td>
<select name="class">
<c:forEach var="c" items="${lc}">
<option <c:if test="${c.cid==stu.c.cid}"> selected="selected" </c:if> value="${c.cid}">${c.cname}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>爱好</td>
<td>
<c:forEach items="${lh}" var="h">
<input <c:forEach items="${stu.ls}" var="oo"> <c:if test="${h.hname==oo.hname}"> checked="checked" </c:if> </c:forEach> type="checkbox" name="aa" value="${h.hid},"/>${h.hname}
</c:forEach>
</td>
</tr>
</table>
<input type="submit" value="修改"/>
</form>
</center>
</body>
</html>
2.修改界面的绑值的Servlet
package com.jiangwenjuan.servlet;
import java.io.IOException;
import java.util.List;
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 com.jiangwenjuan.biz.ClassBiz;
import com.jiangwenjuan.biz.HobbyBiz;
import com.jiangwenjuan.biz.IClassBiz;
import com.jiangwenjuan.biz.IHobbyBiz;
import com.jiangwenjuan.biz.IStudentBiz;
import com.jiangwenjuan.biz.ITeacherBiz;
import com.jiangwenjuan.biz.StudentBiz;
import com.jiangwenjuan.biz.TeacherBiz;
import com.jiangwenjuan.entity.Class;
import com.jiangwenjuan.entity.Hobby;
import com.jiangwenjuan.entity.Student;
import com.jiangwenjuan.entity.Teacher;
@WebServlet("/PreUpdateServlet")
public class PreUpdateServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码方式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
//接收
String sid = request.getParameter("sid");
//调用业务逻辑层
IStudentBiz isb=new StudentBiz();
Student stu = isb.getStu(Integer.parseInt(sid));
IHobbyBiz ihb=new HobbyBiz();
IClassBiz icb=new ClassBiz();
ITeacherBiz itb=new TeacherBiz();
List<Hobby> lh = ihb.getAll();
List<Class> lc = icb.getAll();
List<Teacher> lt = itb.getAll();
request.setAttribute("lh", lh);
request.setAttribute("lc", lc);
request.setAttribute("la", lt);
request.setAttribute("stu", stu);
request.getRequestDispatcher("update.jsp").forward(request, response);
}
}
3.修改界面的Servlet
package com.jiangwenjuan.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
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 com.jiangwenjuan.biz.ClassBiz;
import com.jiangwenjuan.biz.HobbyBiz;
import com.jiangwenjuan.biz.IClassBiz;
import com.jiangwenjuan.biz.IHobbyBiz;
import com.jiangwenjuan.biz.IStudentBiz;
import com.jiangwenjuan.biz.ITeacherBiz;
import com.jiangwenjuan.biz.StudentBiz;
import com.jiangwenjuan.biz.TeacherBiz;
import com.jiangwenjuan.entity.Class;
import com.jiangwenjuan.entity.Hobby;
import com.jiangwenjuan.entity.Student;
import com.jiangwenjuan.entity.Teacher;
@WebServlet("/PreUpdateServlet1")
public class PreUpdateServlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码方式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
//接收表单传值
String sid = request.getParameter("sid");
String sname = request.getParameter("sname");
String tid = request.getParameter("teacher");
String cid = request.getParameter("class");
String[] hobby = request.getParameterValues("aa");
String ss="";
for (String string : hobby) {
ss+=string;
}
//调用业务逻辑层
IStudentBiz isb=new StudentBiz();
ITeacherBiz itb=new TeacherBiz();
Teacher t = itb.getTeacher(Integer.parseInt(tid));
IClassBiz icb=new ClassBiz();
Class c = icb.getOne(Integer.parseInt(cid));
Student stu=new Student(sname, t, c, ss);
int n = isb.updStu(Integer.parseInt(sid),stu);
if(n>0) {//加入成功
out.print("<script>alert('修改成功');location.href='index.jsp';</script>");
}
else {//加入失败
out.print("<script>alert('修改成功');location.href='PreUpdateServlet?sid="+sid+"';</script>");
}
}
}
五.删除功能
1.删除界面的Servlet:
package com.jiangwenjuan.servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 com.jiangwenjuan.biz.IStudentBiz;
import com.jiangwenjuan.biz.StudentBiz;
@WebServlet("/DeleteServlet")
public class DeleteServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码方式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
//接收表单传值
String sid = request.getParameter("sid");
//调用业务逻辑层
IStudentBiz isb=new StudentBiz();
int n = isb.delStu(Integer.parseInt(sid));
if(n>0) {
out.print("<script>alert('删除成功');location.href='index.jsp';</script>");
}
else {
out.print("<script>alert('删除失败');location.href='index.jsp';</script>");
}
}
}