最近在做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模式设计一个学生管理系统的更多相关文章

  1. MVC模式设计的Web层框架初识

    struts是个什么东西? struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类 ...

  2. 设计一个学生类&班级类

    第一题 设计一个学生类 属性:姓名.学号.年龄.成绩 设计一个班级类要求:实现向班级中添加学生.删除学生.查看学生.按照指定条件排序 属性:班级代号,所有学生 需要使用 calss, __int__, ...

  3. C++ 封装类 2 设计一个学生类 属性有姓名学号 可以给姓名 和学号赋值 可以显示学生的姓名和学号

    1 //设计一个学生类 属性有姓名学号 可以给姓名 和学号赋值 可以显示学生的姓名和学号 2 #include <iostream> 3 #include<string> 4 ...

  4. Java初学者作业——编写Java程序,输入一个学生的5门课程的成绩,求其平均分。

    返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个学生的5门课程的成绩,求其平均分.计算平均成绩,需要将每一门课程的成绩逐步累加到总成绩中,使用 for 循环实现,然后求出平均分. 实现 ...

  5. Java实现功能简单的学生管理系统(附带源代码)

    这几天Java学了点新的知识,打算要用这些知识做一个比较简单的管理系统,实战一下子,代码中的功能简洁,可能不多,但是作为一个练手来了解一个项目是怎么样一点一点思考的还是不错的 一.代码中要实现的功能 ...

  6. 生活中的MVC模式,一个吃货的理解。

    以下是生活中对于MVC模式的领悟,虽然可笑,轻喷. 2015年 8月 26日 M  => Model       模型 我认为叫做模具更好的理解.批量加工生产具有相同特征的东西.        ...

  7. java web基础之mvc模式设计(一)--使用httpservlet实现mvc分层设计,DAO层使用的是dbutils实现与数据库的链接

    一:1.最终的实现效果图: 2.案例的目录结构: 3.案例中使用到的jar包: 二:案例的链接数据库的层次结构关系:数据库是:mysql ,数据库名字:dsm,表格名字:customers 数据库表格 ...

  8. 【译】采用MVC模式创建一个简单的javascript App

    原文标题:Build A Simple Javascript App The MVC Way 作者:joshcrawmer4 翻译人:huansky 初次翻译,翻译的不好,还请见谅 JavaScrip ...

  9. 采用MVC模式创建一个简单的javascript App

    初次翻译,翻译的不好,还请见谅 JavaScript中最好的一部分之一,也可能是最糟糕的. 在HTML文档的头部添加一个开始和结束脚本标记,并在其中引入一些意大利面条式的代码,毫无疑问这是一种过分简单 ...

随机推荐

  1. 复杂字符串转List<JSONObject>

    public static List<JSONObject> getlist(String data){ ObjectMapper mapper = new ObjectMapper(); ...

  2. GraphQL API vs REST API

    REST是构建API的一种流行方法,而且比GraphQL应用更广泛,让我们看看GraphQL和REST的区别. Rest是一个概念 REST是一个事实上的架构标准,但它实际上没有规范,有大量的非官方定 ...

  3. Redis实现分布式锁那件事

    今天我们来聊一聊分布式锁的那些事. 相信大家对锁已经不陌生了,我们在多线程环境中,如果需要对同一个资源进行操作,为了避免数据不一致,我们需要在操作共享资源之前进行加锁操作.在计算机科学中,锁(lock ...

  4. VulnHub靶场渗透之:Gigachad

    环境搭建 VulnHub是一个丰富的实战靶场集合,里面有许多有趣的实战靶机. 本次靶机介绍: http://www.vulnhub.com/entry/gigachad-1,657/ 下载靶机ova文 ...

  5. 常见web中间件漏洞(二)Apache漏洞

    Apache(总联想到武直那个)是最常见,使用人数最多的一款web服务器软件.跨平台,多扩展,开源,用过的人都说好 Apache的漏洞主要集中在解析漏洞这一块 1.未知扩展名解析漏洞 Apache的一 ...

  6. 题解 Lost My Music

    传送门 多明显的斜率式然而我没有看出来 然而不管是我乱搞的思路还是正解的凸包思路都需要一个可持久化栈 考场上想到可持久化单调栈,但不会实现-- 其实单调栈不管是否可持久化都能倍增弹栈 但普通单调栈本来 ...

  7. kubebuilder实战之四:operator需求说明和设计

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. Linux添加防火墙、iptables的安装和配置

    由于centos7默认是使用firewall作为防火墙,下面介绍如何将系统的防火墙设置为iptables. #停止firewall systemctl stop firewall.service #禁 ...

  9. MySQL:互联网公司常用分库分表方案汇总!

    转载别人 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用 ...

  10. rabbitMq镜像集群

    rabbitMq延迟投递的方案 1 把消息记录到数据路,通过定时器进行刷新 2 TTL 加上死信队列 :通过路由把过期的消息同步到死信队列,通过死信队列的消费者进行消费 3