使用Java MVC模式设计一个学生管理系统
最近在做web实验,要求是用jsp+servlet+mysql实现一个学生管理系统,完成对数据库的增删改查。
效果图:



代码:

package dao;
import java.util.List;
import entity.Student;
public interface IStudentDao {
public boolean isExist(int sno);
public boolean AddStudent(Student student);
public List<Student> queryAll();
public boolean updateStudentBySno(int sno,Student student);
public Student queryStudentBysno(int sno);
public boolean deleteStudentBySno(int sno);
}
8)StudentDaoImpl
package daoImpl; import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import dao.IStudentDao;
import entity.Student;
import util.DBUtil; /*
* 数据访问层
* 与数据库交互
*/
public class StudentDaoImpl implements IStudentDao {
/*
* 判断学号是否存在
* 返回学号是否存在
*/
public boolean isExist(int sno) {
return queryStudentBysno(sno)==null?false:true;
} /*
* 增加学生信息
* 返回是否成功
*/
public boolean AddStudent(Student student) {
String sql="insert into student values(?,?,?,?)";
Object[] params= {student.getSno(),student.getSname(),student.getAge(),student.getAge(),student.getAddress()};
return DBUtil.executeUpdate(sql, params);
}
/*
* 根据学号删人
* 返回是否成功
*/
public boolean deleteStudentBySno(int sno) {
String sql="delete student where sno=?";
Object[] params= {sno};
return DBUtil.executeUpdate(sql, params);
}
/*
* 根据学号sno修改数据student
* 返回是否成功
*/
public boolean updateStudentBySno(int sno,Student student) {
String sql="update student set sname=?,sage=?,saddress=? where sno=?";
Object[] params= {student.getSname(),student.getAge(),student.getAddress(),sno};
return DBUtil.executeUpdate(sql, params);
}
/*
* 查询全部学生
* 返回学生集合
*/
public List<Student> queryAll() {
Student student=null;
PreparedStatement pst =null;
ResultSet rs =null;
List<Student> students=new ArrayList<Student>();
try {
String sql="select * from student";
rs = DBUtil.executeQuery(sql, null);
while(rs.next()) {
int no=rs.getInt("sno");
String name=rs.getString("sname");
int age=rs.getInt("sage");
String address=rs.getString("saddress");
student=new Student(no,name,age,address);
students.add(student);
}
return students;
} catch (SQLException e) {
e.printStackTrace();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally {
try {
if(rs!=null) rs.close();
if(pst!=null) pst.close();
if(DBUtil.connection!=null) DBUtil.connection.close();
}
catch (SQLException e) {
e.printStackTrace();
}
} }
/*
* 根据学号查询学生
* 返回查询学生类
*/
public Student queryStudentBysno(int sno) {
Student student=null;
PreparedStatement pst =null;
ResultSet rs =null;
try {
String sql="select * from student where sno=?";
Object params[]= {sno};
rs = DBUtil.executeQuery(sql, params);
if(rs.next()) {
int no=rs.getInt("sno");
String name=rs.getString("sname");
int age=rs.getInt("sage");
String address=rs.getString("saddress");
student=new Student(no,name,age,address);
}
return student;
} catch (SQLException e) {
e.printStackTrace();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally {
DBUtil.closeAll(rs, pst, DBUtil.connection);
}
}
}
dao

package util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; //通用的数据库操作方法
public class DBUtil {
//sql数据库连接字符串
private static final String URL="jdbc:sqlserver://localhost:1433;databasename=javatest";
//sql用户名 和密码 用作连接用
private static final String USERNAME="sa";
private static final String PWD="cc123nice"; public static Connection connection=null;
public static PreparedStatement pst =null;
public static ResultSet rs =null; /*
* 得到PreparedStatement减少代码冗余
*/
public static PreparedStatement getPreparedStatement(String sql,Object[] params) {
//导入驱动,加载具体驱动类
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//与数据库建立链接
connection = DriverManager.getConnection(URL, USERNAME, PWD);
pst=connection.prepareStatement(sql);
if(params!=null) {
for(int i=0;i<params.length;i++){
pst.setObject(i+1,params[i]);
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return pst;
}
/*
* 最后关闭所有
*/
public static void closeAll(ResultSet rs,Statement stmt,Connection connection) {
try {
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
if(connection!=null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/*
* 通用的增删改 通过传入的sql和obj数组确认语句
*/
public static boolean executeUpdate(String sql,Object[] params) {
try {
int count = getPreparedStatement(sql,params).executeUpdate();
if(count>0)
return true;
else
return false;
} catch (SQLException e) {
e.printStackTrace();
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally {
closeAll(null, pst, connection);
}
}
/*
* 通用的查询(只能返回到ResultSet)之后必须与具体类型耦合
*/
public static ResultSet executeQuery(String sql,Object[] params) {
try {
rs= getPreparedStatement(sql,params).executeQuery();
return rs;
} catch (SQLException e) {
e.printStackTrace();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
db

package service;
import java.util.List;
import entity.Student;
public interface IStudentService {
public boolean addStudent(Student student);
//删
public boolean deleteStudentBySno(int sno);
//改
public boolean updateStudentBySno(int sno,Student student);
//根据学号查
public Student queryStudentBysno(int sno) ;
//查询所有
public List<Student> queryAll();
}
service

public class StudentServiceImpl implements IStudentService{
IStudentDao std=new StudentDaoImpl();
//增
public boolean addStudent(Student student) {
if(!std.isExist(student.getSno())){
return std.AddStudent(student);
}else
return false;
}
//删
public boolean deleteStudentBySno(int sno) {
if(std.isExist(sno)){
return std.deleteStudentBySno(sno);
}else
return false;
}
//改
public boolean updateStudentBySno(int sno,Student student) {
if(std.isExist(sno)){
return std.updateStudentBySno(sno, student);
}else
return false;
}
//根据学号查
public Student queryStudentBysno(int sno) {
return std.queryStudentBysno(sno);
}
//查询所有
public List<Student> queryAll(){
return std.queryAll();
}
}
ServiceImpl

package MyServerlet; import java.io.IOException; 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 entity.Student;
import service.IStudentService;
import serviceImpl.StudentServiceImpl; /*
* serverlet--增加
*/
@WebServlet("/AddServerlet")
public class AddServlet extends HttpServlet {
private static final long serialVersionUID = 1204432039484958110L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
int sno =Integer.parseInt( request.getParameter("sno"));
String name = request.getParameter("sname");
int age = Integer.parseInt(request.getParameter("sage"));
String address = request.getParameter("saddress"); Student student =new Student(sno,name,age,address);
IStudentService studentService = new StudentServiceImpl();
boolean res = studentService.addStudent(student);
request.setCharacterEncoding("utf-8");
//给request增加标识符
if(!res)
request.setAttribute("res", "增加失败");
else
request.setAttribute("res", "增加成功");
}catch(Exception e){
request.setAttribute("res", "数据有误增加失败");
}
request.getRequestDispatcher("QueryAllServlet").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
addservlet

package MyServerlet; import java.io.IOException;
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 service.IStudentService;
import serviceImpl.StudentServiceImpl; @WebServlet("/DeleteServerlet")
public class DeleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接受学号
int sno = Integer.parseInt(request.getParameter("sno"));
IStudentService service = new StudentServiceImpl();
boolean res = service.deleteStudentBySno(sno);
response.setContentType("text/html; charset=utf-8");
if(!res)
request.setAttribute("res", "删除失败");
else
request.setAttribute("res", "删除成功"); request.getRequestDispatcher("QueryAllServlet").forward(request, response);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }
deleteservlet

package MyServerlet; import java.io.IOException;
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 service.IStudentService;
import serviceImpl.StudentServiceImpl; @WebServlet("/DeleteServerlet")
public class DeleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接受学号
int sno = Integer.parseInt(request.getParameter("sno"));
IStudentService service = new StudentServiceImpl();
boolean res = service.deleteStudentBySno(sno);
response.setContentType("text/html; charset=utf-8");
if(!res)
request.setAttribute("res", "删除失败");
else
request.setAttribute("res", "删除成功"); request.getRequestDispatcher("QueryAllServlet").forward(request, response);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }
queryallservlet

package MyServerlet; import java.io.IOException;
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 entity.Student;
import service.IStudentService;
import serviceImpl.StudentServiceImpl; @WebServlet("/QuerySnoServerlet")
public class QuerySnoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int no = Integer.parseInt(request.getParameter("sno"));
IStudentService service = new StudentServiceImpl();
Student student = service.queryStudentBysno(no);
request.setAttribute("student", student);
request.getRequestDispatcher("studentinfo.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }
queryoneservlet

package MyServerlet; import java.io.IOException;
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 entity.Student;
import service.IStudentService;
import serviceImpl.StudentServiceImpl; @WebServlet("/UpdateServlet")
public class UpdateServlet extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理获取数据编码
request.setCharacterEncoding("utf-8");
//获取待修改学生的学号
int no = Integer.parseInt(request.getParameter("sno"));
//修改后内容
String name = request.getParameter("sname");
int age = Integer.parseInt(request.getParameter("sage"));
String address = request.getParameter("saddress");
Student student=new Student(name,age,address);
IStudentService service = new StudentServiceImpl();
boolean res = service.updateStudentBySno(no, student);
//处理相应编码
response.setContentType("text/html; charset=utf-8");
if(!res)
request.setAttribute("res", "修改失败");
else
request.setAttribute("res", "修改成功"); request.getRequestDispatcher("QueryAllServlet").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }
updateservlet

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>新增用户信息</title>
</head>
<body>
<form action="AddServerlet">
学号:<input type="text" name="sno"/><br/>
姓名:<input type="text" name="sname"/><br/>
年龄:<input type="text" name="sage"/><br/>
地址:<input type="text" name="saddress"/><br/>
<input type="submit" value="新增"/><br/>
</form>
</body>
</html>
add.jsp

<%@page import="entity.Student"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>学生信息列表</title>
</head>
<body>
<%
String res=(String)request.getAttribute("res");
if(res!=null){
out.print(res);
}
%>
<!-- 设置表格边框 -->
<table border="1PX"> <!-- 设置标题 -->
<tr>
<th>学号</th>
<th>姓名</th>
<th>年龄</th>
<th>操作</th>
</tr>
<%
//获取request域中的数据
List<Student> students=( List<Student> ) request.getAttribute("students");
for(Student student:students){
%>
<tr>
<td><a href="QuerySnoServerlet?sno=<%=student.getSno() %>"><%=student.getSno() %></a></td>
<td><%=student.getSname() %></td>
<td><%=student.getAge() %></td>
<td><a href="DeleteServerlet?sno=<%=student.getSno() %>">删除</a></td>
</tr>
<%
}
%>
</table>
<a href="add.jsp">增加</a>
</body>
</html>
index.jsp

<%@page import="entity.Student"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<%
Student student=(Student)request.getAttribute("student");
%>
<!-- 表单显示信息 -->
<form action="UpdateServlet">
学号:<input type="text" name="sno" value=<%=student.getSno() %>><br>
姓名:<input type="text" name="sname" value=<%=student.getSname() %>><br>
年龄:<input type="text" name="sage" value=<%=student.getAge() %>><br>
地址:<input type="text" name="saddress" value=<%=student.getAddress() %>><br>
<input type="submit" value="修改">
</form>
<a href="QueryAllServlet">返回</a> </body>
</html>
info
使用Java MVC模式设计一个学生管理系统的更多相关文章
- MVC模式设计的Web层框架初识
struts是个什么东西? struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类 ...
- 设计一个学生类&班级类
第一题 设计一个学生类 属性:姓名.学号.年龄.成绩 设计一个班级类要求:实现向班级中添加学生.删除学生.查看学生.按照指定条件排序 属性:班级代号,所有学生 需要使用 calss, __int__, ...
- C++ 封装类 2 设计一个学生类 属性有姓名学号 可以给姓名 和学号赋值 可以显示学生的姓名和学号
1 //设计一个学生类 属性有姓名学号 可以给姓名 和学号赋值 可以显示学生的姓名和学号 2 #include <iostream> 3 #include<string> 4 ...
- Java初学者作业——编写Java程序,输入一个学生的5门课程的成绩,求其平均分。
返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个学生的5门课程的成绩,求其平均分.计算平均成绩,需要将每一门课程的成绩逐步累加到总成绩中,使用 for 循环实现,然后求出平均分. 实现 ...
- Java实现功能简单的学生管理系统(附带源代码)
这几天Java学了点新的知识,打算要用这些知识做一个比较简单的管理系统,实战一下子,代码中的功能简洁,可能不多,但是作为一个练手来了解一个项目是怎么样一点一点思考的还是不错的 一.代码中要实现的功能 ...
- 生活中的MVC模式,一个吃货的理解。
以下是生活中对于MVC模式的领悟,虽然可笑,轻喷. 2015年 8月 26日 M => Model 模型 我认为叫做模具更好的理解.批量加工生产具有相同特征的东西. ...
- java web基础之mvc模式设计(一)--使用httpservlet实现mvc分层设计,DAO层使用的是dbutils实现与数据库的链接
一:1.最终的实现效果图: 2.案例的目录结构: 3.案例中使用到的jar包: 二:案例的链接数据库的层次结构关系:数据库是:mysql ,数据库名字:dsm,表格名字:customers 数据库表格 ...
- 【译】采用MVC模式创建一个简单的javascript App
原文标题:Build A Simple Javascript App The MVC Way 作者:joshcrawmer4 翻译人:huansky 初次翻译,翻译的不好,还请见谅 JavaScrip ...
- 采用MVC模式创建一个简单的javascript App
初次翻译,翻译的不好,还请见谅 JavaScript中最好的一部分之一,也可能是最糟糕的. 在HTML文档的头部添加一个开始和结束脚本标记,并在其中引入一些意大利面条式的代码,毫无疑问这是一种过分简单 ...
随机推荐
- 内网隧道与SOCKS代理思路总结
早就想总结一下这部分内容了,总是有其他事情卡住,一直拖到现在 内网中有很多边界设备,比如防火墙.这种边界设备会控制内部主机的对外连接,一般会仅允许某些种类的端口开放或某种数据流量出入 这就意味着我们只 ...
- DHCP服务-中继代理
DHCP中继代理(即DHCP Relay Agent)用于转发来自于另一个没有DHCP服务器子网段中客户端的DHCP请求,即当一台DHCP客户端发起请求后,此时DHCP中继代理就会将已经预先定义好的D ...
- 带你从0到1实现canvas的undo和redo功能
不知不觉又到了周末,又到了Fly写文章的日子,今天给大家介绍下一个web中很常见的功能, 就是撤销和复原这样一个功能,对于任何一个画图软件,或者是建模软件.没有撤销和复原.这不是傻了对啊吧,所以本篇文 ...
- 使用Java8改造出来的模板方法真的是yyds
GitHub 21.3k Star 的Java工程师成神之路,不来了解一下吗! GitHub 21.3k Star 的Java工程师成神之路,真的不来了解一下吗! 我们在日常开发中,经常会遇到类似的场 ...
- docker配置cdn-容器内可以通过域名访问
添加docker的cdn配置 # 没有这个文件创建 vim /etc/docker/daemon.json 添加内容如下 { "dns":["8.8.8.8", ...
- C# 不是异步的方法中获取异步的结果
var waiter = HP.UtilsLib.TaskAwaiterHelper.GetTaskAwaiter( async () => { return await feedBack(ve ...
- 【RPC】远程接口调用实例 的几种方式比较
pring中,用JMS搞RPC时会用到: org.springframework.jms.remoting.JmsInvokerServiceExporter org.springframework. ...
- COM笔记-关于GUID
GUID 它实际上是组件和接口的标识号 static const IID IID_IX = { 0x1ee235bd, 0x2e73, 0x49c2, 0xa5, 0x7c, 0x8b, 0xe5, ...
- 从元素抽取属性,文本和HTML
问题 在解析获得一个Document实例对象,并查找到一些元素之后,你希望取得在这些元素中的数据. 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的 ...
- uwp 之后台音频
C# code 后台任务 ---------------------------- public sealed class BgTask : IBackgroundTask { #region 私有字 ...