JAVAEE案例: 基于javaweb、mysql的 学生信息管理系统
2017-11-18 13:55
891 查看
此案例是基于JavaEE、mysql技术的学生信息管理系统。
为了先对案例有个清楚的认识,这里先贴上运行结果截图:
1、索引页面,进入系统。
2、主页面:
3、点击添加:
4、删除李琦琦一栏:
5、修改马衍硕:
一、对数据库的封装:
在数据库库部分,通过Java代码对数据库操作进行封装,其中涉及到很多技术和技巧,请持续关注我的博客,后续会有详细介绍。
对数据库的封装代码:
(1)这里是定义数据库操作元素的结构,操作元素有三个属性,即deptno、dname、loc,分别对应学生信息的学号、姓名、家庭住址。
Dept.java
(2)连接数据库:
DeUtils.java
(3)对数据库操作的封装:
这里的接口定义了对数据库操作的方法:
DeptDao.java
这里实现了对数据库操作的封装:
在建立数据库连接的基础上,通过向数据库发送要执行的SQL语句,达到操作数据库的目的。
DeptDaoImpl.java
(4)为了代码的简洁,再封装:
DeptService.java
DeptServiceImpl.java
贴个代码分布图
这样,mysql的连接封装基本完成,接下来是web部分。
二、Web部分:
1、各个页面的JSP代码:
(1)index页面:
(2)主页面:
(3)修改页面:
2、服务器端:
对于客户端不同的HTTP请求对数据库进行不同的操作,并跳转页面。
为了先对案例有个清楚的认识,这里先贴上运行结果截图:
1、索引页面,进入系统。
2、主页面:
3、点击添加:
4、删除李琦琦一栏:
5、修改马衍硕:
一、对数据库的封装:
在数据库库部分,通过Java代码对数据库操作进行封装,其中涉及到很多技术和技巧,请持续关注我的博客,后续会有详细介绍。
对数据库的封装代码:
(1)这里是定义数据库操作元素的结构,操作元素有三个属性,即deptno、dname、loc,分别对应学生信息的学号、姓名、家庭住址。
Dept.java
package com.neusoft.dao; //实体类 public class Dept { private int deptno;// private String dname;// private String loc;// private String value1;// private String value2;// public int getDeptno() { return deptno; } public void setDeptno(int deptno) { this.deptno = deptno; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } public String getValue1() { return value1; } public void setValue1(String value1) { this.value1 = value1; } public String getValue2() { return value2; } public void setValue2(String value2) { this.value2 = value2; } }
(2)连接数据库:
DeUtils.java
package com.neusoft.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DbUtils { private DbUtils(){} private static final String url="jdbc:mysql://localhost:3306/smartstyle";; private static final String user="root"; private static final String password="857289"; static { //1.创建驱动类对象 //new oracle.jdbc.driver.OracleDriver(); try { //Class.forName("oracle.jdbc.driver.OracleDriver"); Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static Connection getConnection() { Connection conn=null; try { conn=DriverManager.getConnection(url, user, password); System.out.println("Ok"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } public static void closeConnection(Connection conn) { try { if(conn!=null) { conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void closePreparedStatement(PreparedStatement pstmt) { try { if(pstmt!=null) { pstmt.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void closeResultSet(ResultSet rs) { //4.关闭数据库 try { if(rs!=null) { rs.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void beginTransaction(Connection conn) { try { conn.setAutoCommit(false); } catch (SQLException ex) { ex.printStackTrace(); } } public static void commit(Connection conn) { try { conn.commit(); conn.setAutoCommit(true); } catch (SQLException ex) { ex.printStackTrace(); } } public static void rollback(Connection conn) { try { conn.rollback(); conn.setAutoCommit(true); } catch (SQLException ex) { ex.printStackTrace(); } } public static void main(String[] ars) { getConnection(); } }
(3)对数据库操作的封装:
这里的接口定义了对数据库操作的方法:
DeptDao.java
package com.neusoft.dao; import java.util.List; public interface DeptDao { void insertDept(Dept dept); void updateDept(Dept dept); void deleteDept(int deptno); List<Dept> getDepts(); Dept getDeptByDeptno(int deptno); }
这里实现了对数据库操作的封装:
在建立数据库连接的基础上,通过向数据库发送要执行的SQL语句,达到操作数据库的目的。
DeptDaoImpl.java
package com.neusoft.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class DeptDaoImpl implements DeptDao { @Override public void insertDept(Dept dept) { // TODO Auto-generated method stub Connection conn=null; PreparedStatement pstmt=null; try { conn=DbUtils.getConnection(); //3.操作数据库 String sql="insert into dept(deptno,dname,loc) values(?,?,?)"; pstmt=conn.prepareStatement(sql); pstmt.setInt(1, dept.getDeptno()); pstmt.setString(2, dept.getDname()); pstmt.setString(3,dept.getLoc()); pstmt.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //4.关闭数据库 DbUtils.closePreparedStatement(pstmt); DbUtils.closeConnection(conn); } } @Override public void updateDept(Dept dept) { // TODO Auto-generated method stub Connection conn=null; PreparedStatement pstmt=null; try { conn=DbUtils.getConnection(); String sql="update dept set dname=?,loc=? where deptno=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, dept.getDname()); pstmt.setString(2, dept.getLoc()); pstmt.setInt(3, dept.getDeptno()); pstmt.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //4.关闭数据库 DbUtils.closePreparedStatement(pstmt); DbUtils.closeConnection(conn); } } @Override public void deleteDept(int deptno) { // TODO Auto-generated method stub Connection conn=null; PreparedStatement pstmt=null; try { conn=DbUtils.getConnection(); String sql="delete from dept where deptno=?"; pstmt=conn.prepareStatement(sql); pstmt.setInt(1, deptno); pstmt.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //4.关闭数据库 DbUtils.closePreparedStatement(pstmt); DbUtils.closeConnection(conn); } } @Override public List<Dept> getDepts() { Connection conn=null; PreparedStatement pstmt=null; ResultSet rs=null; List<Dept> depts=new ArrayList<Dept>(); try { conn=DbUtils.getConnection(); //3.操作数据库 String sql="select * from dept"; pstmt=conn.prepareStatement(sql); rs=pstmt.executeQuery(); while(rs.next()) { Dept dept=new Dept(); dept.setDeptno(rs.getInt("DEPTNO"));// dept.setDname(rs.getString("DNAME")); dept.setLoc(rs.getString("LOC")); depts.add(dept); } }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { DbUtils.closeResultSet(rs); DbUtils.closePreparedStatement(pstmt); DbUtils.closeConnection(conn); } return depts; } @Override public Dept getDeptByDeptno(int deptno) { Connection conn=null; PreparedStatement pstmt=null; ResultSet rs=null; Dept dept=new Dept(); try { conn=DbUtils.getConnection(); //3.操作数据库 String sql="select * from dept where deptno=?"; pstmt=conn.prepareStatement(sql); pstmt.setInt(1, deptno); rs=pstmt.executeQuery(); if(rs.next()) { dept.setDeptno(rs.getInt("DEPTNO")); dept.setDname(rs.getString("DNAME")); dept.setLoc(rs.getString("LOC")); } }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { DbUtils.closeResultSet(rs); DbUtils.closePreparedStatement(pstmt); DbUtils.closeConnection(conn); } return dept; } }
(4)为了代码的简洁,再封装:
DeptService.java
package com.neusoft.service; import java.util.List; import com.neusoft.dao.Dept; public interface DeptService { void insertDept(Dept dept); void updateDept(Dept dept); void deleteDept(int deptno); List<Dept> getDepts(); Dept getDeptByDeptno(int deptno); }
DeptServiceImpl.java
package com.neusoft.service; import java.util.List; import com.neusoft.dao.Dept; import com.neusoft.dao.DeptDao; import com.neusoft.dao.DeptDaoImpl; public class DeptServiceImpl implements DeptService { @Override public void insertDept(Dept dept) { // TODO Auto-generated method stub DeptDao deptDao=new DeptDaoImpl(); deptDao.insertDept(dept); } @Override public void updateDept(Dept dept) { // TODO Auto-generated method stub DeptDao deptDao=new DeptDaoImpl(); deptDao.updateDept(dept); } @Override public void deleteDept(int deptno) { // TODO Auto-generated method stub DeptDao deptDao=new DeptDaoImpl(); deptDao.deleteDept(deptno); } @Override public List<Dept> getDepts() { DeptDao deptDao=new DeptDaoImpl(); return deptDao.getDepts(); } @Override public Dept getDeptByDeptno(int deptno) { // TODO Auto-generated method stub DeptDao deptDao=new DeptDaoImpl(); return deptDao.getDeptByDeptno(deptno); } }
贴个代码分布图
这样,mysql的连接封装基本完成,接下来是web部分。
二、Web部分:
1、各个页面的JSP代码:
(1)index页面:
<%@ 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> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <a href="DeptServlet?service=all">学生信息管理系统</a> </body> </html>
(2)主页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.List,com.neusoft.dao.Dept"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!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> <form action="<%=basePath %>dept/insert.jsp" method="post"> <table border="1" width="80%" align="center" cellspacing="0"> <caption>学生信息表</caption> <tr><th>学生学号</th><th>学生姓名</th><th>家庭地址</th><th>操作</th><tr> <%List<Dept> depts=(List<Dept>)request.getAttribute("depts"); if(depts==null) { %> <tr><td colspan="3">没有符合条件的数据</td></tr> <%}else{ for(Dept dept:depts) { %> <tr><td><%=dept.getDeptno() %></td> <td><%=dept.getDname() %></td> <td><%=dept.getLoc() %></td> <td><a href="DeptServlet?service=modify&deptno=<%=dept.getDeptno()%>">修改</a> <a href="DeptServlet?service=delete&deptno=<%=dept.getDeptno() %>" >删除</a></td> <tr> <%}} %> </table> <input type="submit" value="添加" > </form> </body> </html>
(3)修改页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="com.neusoft.dao.Dept"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!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> <form action="<%=basePath %>DeptServlet?service=update" method="post"> <center> <h1>修改信息</h1> <% Dept dept=(Dept)request.getAttribute("dept"); %> 学生学号:<input type="text" name="deptno" value="<%=dept.getDeptno() %>"><br> 学生姓名:<input type="text" name="dname" value="<%=dept.getDname() %>"><br> 家庭地址:<input type="text" name="loc" value="<%=dept.getLoc()%> "><br> <input type="submit" value="修改信息"> </body> </html>
2、服务器端:
对于客户端不同的HTTP请求对数据库进行不同的操作,并跳转页面。
package com.neusoft.controller; 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.neusoft.dao.Dept; import com.neusoft.service.DeptService; import com.neusoft.service.DeptServiceImpl; /** * Servlet implementation class DeptServlet */ @WebServlet("/DeptServlet") public class DeptServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * Default constructor. */ public DeptServlet() { // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub this.doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); String service=request.getParameter("service"); if("all".equals(service)) { DeptService deptService=new DeptServiceImpl(); List<Dept> depts=deptService.getDepts(); request.setAttribute("depts", depts); request.getRequestDispatcher("dept/main.jsp").forward(request, response); }else if("add".equals(service)) { //处理请求 int deptno=Integer.parseInt(request.getParameter("deptno")); String dname=request.getParameter("dname"); String loc=request.getParameter("loc"); Dept dept=new Dept(); dept.setDeptno(deptno); dept.setDname(dname); dept.setLoc(loc); //调用相应的业务逻辑 DeptService deptService=new DeptServiceImpl(); deptService.insertDept(dept); //找到某个视图响应回去 request.getRequestDispatcher("DeptServlet?service=all").forward(request, response); }else if("update".equals(service)) { //处理请求 int deptno=Integer.parseInt(request.getParameter("deptno")); String dname=request.getParameter("dname"); String loc=request.getParameter("loc"); Dept dept=new Dept(); dept.setDeptno(deptno); dept.setDname(dname); dept.setLoc(loc); //调用相应的业务逻辑 DeptService deptService=new DeptServiceImpl(); deptService.updateDept(dept); //找到某个视图响应回去 request.getRequestDispatcher("DeptServlet?service=all").forward(request, response); } else if("delete".equals(service)) { int deptno=Integer.parseInt(request.getParameter("deptno")); //调用相应的业务逻辑 DeptService deptService=new DeptServiceImpl(); deptService.deleteDept(deptno); //找到某个视图响应回去 request.getRequestDispatcher("DeptServlet?service=all").forward(request, response); }else if("modify".equals(service)) { int deptno=Integer.parseInt(request.getParameter("deptno")); //调用相应的业务逻辑 DeptService deptService=new DeptServiceImpl(); Dept dept= deptService.getDeptByDeptno(deptno); request.setAttribute("dept", dept); //找到某个视图响应回去 request.getRequestDispatcher("dept/update.jsp").forward(request, response); } } }
完整项目我已上传至我的GitHub
https://github.com/xiaomagege/students-information-management-system相关文章推荐
- 基于链表的学生信息管理系统和基于MySQL的学生信息管理系统 -C语言
- 基于数据库MySQL的简易学生信息管理系统
- 基于XML数据库的学生信息管理系统的设计与实现
- s2sh整合案例-学生信息管理系统(三)
- Java60行代码实现swing+mysql学生信息管理系统
- Py学生信息管理系统 案例(优化版)
- 学生信息管理系统--(Java+MySQL实现)
- Java基于MySQL实现学生管理系统
- StudentMIS学生信息管理系统—基于sql + javafx
- c语言学生信息管理系统(基于文件、链表)
- 基于struts2开发的学生信息管理系统
- PDO案例:学生信息管理系统
- 基于python的-学生信息管理系统(升级版)(可存入本地.txt中)
- PHP案例:学生信息管理系统
- Java swing mysql实现的学生学院班级信息管理系统V1.1附带视频运行指导教程
- 基于JavaEE(SSH)实现员工管理系统案例
- 基于文件的学生信息管理系统
- 基于java+mysql学生管理系统的实现
- 学生信息管理系统--(Java+MySQL实现)
- java swing mysql实现的学生信息管理系统v1.0附带视频指导教程