该系统需要设计以下有关的组件,主要是设计3个大类和一个接口。
(1)描述学生信息的数据类:Students类。
(2)数据库连接和关闭的工具:JavaBean类。
(3 实现数据库访问和业务逻辑的结合体DAO类:StudentDAO类,该DAO类的实例对象应负责处理数据库记录的基本操作(增删改查),即完成对CRUD操作的封装。
(4)实现业务逻辑处理的接口:IStudentDAO。
(5)实现诗句信息提交,查询,修改,删除等有关操作的JSP页面。
代码如下:
1.建立对应数据库表结构的JavaBean——学生表Student
package bean;
public class Student {
// 学号
private String Sno;
// 学生名称
private String Sname;
// 性别
private String Ssex;
// 年龄
private int Sage;
// 专业
private String Sdept;
public String getSno() {
return Sno;
}
public void setSno(String sno) {
this.Sno = sno;
}
public String getSname() {
return Sname;
}
public void setSname(String sname) {
this.Sname = sname;
}
public String getSsex() {
return Ssex;
}
public void setSsex(String ssex) {
this.Ssex = ssex;
}
public int getSage() {
return Sage;
}
public void setSage(int sage) {
this.Sage = sage;
}
public String getSdept() {
return Sdept;
}
public void setSdept(String sdept) {
this.Sdept = sdept;
}
}
2.数据库连接与关闭资源工具JavaBean类的设计
package db;
import java.sql.*;
public class Dbconnect {
private static String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static String userName = "sa";
private static String userPwd = "jiayou417";
private static String dbName = "lzy";
public static Connection getDBconnection(){
String url = "jdbc:sqlserver://localhost:1433; DatabaseName=lzy";
try {
Class.forName(driverName);
Connection con = DriverManager.getConnection(url,userName,userPwd);
return con;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void closeDB(Connection con,PreparedStatement pstm,ResultSet rs){
try{
if(rs != null)
rs.close();
if(pstm != null)
pstm.close();
if(con != null)
con.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
3.建立实现数据库处理的接口
package dao;
import java.util.List;
import bean.Student;
public interface IStudentDAO {
public abstract Student create(Student stu) throws Exception;
public abstract void remove(Student stu) throws Exception;
public abstract Student find(Student stu) throws Exception;
public abstract List findAll() throws Exception;
public abstract void update(Student stu) throws Exception;
}
4.对接口的实现以及逻辑访问类StudentDAO类
package dao;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import db.Dbconnect;
import bean.Student;
public class StudentDAO implements IStudentDAO{
protected static final String FIELDS_INSERT="sno,sname,ssex,sage,sdept";
protected static String INSERT_SQL="insert into Student("+FIELDS_INSERT+")"+"values(?,?,?,?,?)";
protected static String SELECT_SQL="select "+FIELDS_INSERT+" from Student where sno=?";
protected static String UPDATE_SQL="update Student set"+" sno=?,sname=?,ssex=?,sage=?,sdept=? where sno=?";
protected static String DELETE_SQL="delete from Student where sno=?";
@Override
public Student create(Student stu) throws Exception {
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
try{
con=Dbconnect.getDBconnection();
prepStmt=con.prepareStatement(INSERT_SQL);
prepStmt.setString(1, stu.getSno());
prepStmt.setString(2, stu.getSname());
prepStmt.setString(3, stu.getSsex());
prepStmt.setInt(4, stu.getSage());
prepStmt.setString(5, stu.getSdept());
prepStmt.executeUpdate();
}catch(Exception e){
}finally{
Dbconnect.closeDB(con, prepStmt, rs);
}
return stu;
}
@Override
public void remove(Student stu) throws Exception {
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
try{
con=Dbconnect.getDBconnection();
prepStmt=con.prepareStatement(DELETE_SQL);
prepStmt.setString(1, stu.getSno());
prepStmt.executeUpdate();
}catch(Exception e){
}finally{
Dbconnect.closeDB(con, prepStmt, rs);
}
}
@Override
public Student find(Student stu) throws Exception {
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
Student stu2=null;
try{
con=Dbconnect.getDBconnection();
prepStmt=con.prepareStatement(SELECT_SQL);
prepStmt.setString(1,stu.getSno());
rs=prepStmt.executeQuery();
if(rs.next()){
stu2=new Student();
stu2.setSno(rs.getString(1));
stu2.setSname(rs.getString(2));
stu2.setSsex(rs.getString(3));
stu2.setSage(rs.getInt(4));
stu2.setSdept(rs.getString(5));
}
}catch(Exception e){
}finally{
Dbconnect.closeDB(con, prepStmt, rs);
}
return stu2;
}
@Override
public List findAll() throws Exception {
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
List student=new ArrayList(); //创建集合存放Student引用
con=Dbconnect.getDBconnection();
prepStmt=con.prepareStatement("select * from Student");
rs=prepStmt.executeQuery();
while(rs.next()){
Student stu2=new Student();
stu2.setSno(rs.getString(1));
stu2.setSname(rs.getString(2));
stu2.setSsex(rs.getString(3));
stu2.setSage(rs.getInt(4));
stu2.setSdept(rs.getString(5));
student.add(stu2); //将引用添加到集合中
}
return student;
}
@Override
public void update(Student stu) throws Exception {
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
try{
con=Dbconnect.getDBconnection();
prepStmt=con.prepareStatement(UPDATE_SQL);
prepStmt.setString(1, stu.getSno());
prepStmt.setString(2, stu.getSname());
prepStmt.setString(3, stu.getSsex());
prepStmt.setInt(4, stu.getSage());
prepStmt.setString(5, stu.getSdept());
prepStmt.setString(6,stu.getSno()); //要求学号不可更改
int rowCount = prepStmt.executeUpdate();
if(rowCount == 0){
throw new Exception("update Error:Student Sno:"+stu.getSno());
}
}catch(Exception e){
}finally{
Dbconnect.closeDB(con, prepStmt, rs);
}
}
}
4.对应数据库操作的Servlet设计
package 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.HttpServletResponse;
import bean.Student;
import dao.StudentDAO;
public class create extends HttpServlet {
/**
* Constructor of the object.
*/
public create() {
super();
}
/**
* Destruction of the servlet.
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet.
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
/**
* The doPost method of the servlet.
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("GB2312");
Student stu=new Student();
stu.setSno(request.getParameter("sno"));
stu.setSname(request.getParameter("sname"));
stu.setSsex(request.getParameter("ssex"));
stu.setSage(Integer.parseInt(request.getParameter("sage")));
stu.setSdept(request.getParameter("sdept"));
StudentDAO insert=new StudentDAO();
try {
insert.create(stu);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Initialization of the servlet.
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Student;
import dao.StudentDAO;
public class find extends HttpServlet {
/**
* Constructor of the object.
*/
public find() {
super();
}
/**
* Destruction of the servlet.
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet.
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
/**
* The doPost method of the servlet.
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Student stu=new Student();
stu.setSno(request.getParameter("sno"));
StudentDAO find=new StudentDAO();
try {
Student student=find.find(stu);
request.setAttribute("stu",student);
System.out.println("查找成功");
} catch (Exception e) {
System.out.println("查找失败");
}
request.getRequestDispatcher("findshow.jsp").forward(request, response);
}
/**
* Initialization of the servlet.
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Student;
import dao.StudentDAO;
public class findAll extends HttpServlet {
/**
* Constructor of the object.
*/
public findAll() {
super();
}
/**
* Destruction of the servlet.
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet.
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
StudentDAO findAll=new StudentDAO();
List student=new ArrayList();
try {
student = findAll.findAll();
request.setAttribute("list", student);
} catch (Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("findAll.jsp").forward(request, response);
}
/**
* The doPost method of the servlet.
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
/**
* Initialization of the servlet.
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
package 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.HttpServletResponse;
import bean.Student;
import dao.StudentDAO;
public class remove extends HttpServlet {
/**
* Constructor of the object.
*/
public remove() {
super();
}
/**
* Destruction of the servlet.
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet.
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
/**
* The doPost method of the servlet.
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Student stu = new Student();
stu.setSno(request.getParameter("sno"));
StudentDAO remove=new StudentDAO();
try{
remove.remove(stu);
System.out.println("删除成功");
}catch (Exception e) {
System.out.println("删除失败");
}
}
/**
* Initialization of the servlet.
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
package 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.HttpServletResponse;
import bean.Student;
import dao.StudentDAO;
public class update extends HttpServlet {
/**
* Constructor of the object.
*/
public update() {
super();
}
/**
* Destruction of the servlet.
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet.
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
/**
* The doPost method of the servlet.
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Student stu=new Student();
stu.setSno(request.getParameter("sno"));
stu.setSname(request.getParameter("sname"));
stu.setSsex(request.getParameter("ssex"));
stu.setSage(Integer.parseInt(request.getParameter("sage")));
stu.setSdept(request.getParameter("sdept"));
StudentDAO update=new StudentDAO();
try {
update.update(stu);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Initialization of the servlet.
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
5.JSP页面的设计
JSP页面设计一共有八个,如有需要私聊我或者留言,这里就不一一贴出。
6.XML文件
Super数据库
create
This is the display name of my J2EE component
This is the description of my J2EE component
servlet.create
find
This is the display name of my J2EE component
This is the description of my J2EE component
servlet.find
findAll
FindAll
This is the description of my J2EE component
servlet.findAll
remove
This is the display name of my J2EE component
This is the description of my J2EE component
servlet.remove
update
This is the display name of my J2EE component
This is the description of my J2EE component
servlet.update
create
/create
find
/find
findAll
/findAll `````````
remove
/remove
update
/update
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
运行界面如下图: