最近在做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. js中判断数据类型的四种方法总结

    js中判断数据类型的四种方法 前言 在js中,我们经常需要判断数据的类型,那么哪些方法可以用来判断数据的类型呢?哪种方法判断数据类型最准确呢? 我们来一个个分析: 1.typeof typeof是一个 ...

  2. 代码重构与单元测试——使用“以查询取代临时变量”再次对Statement()方法进行重构(七)

    代码重构与单元测试(一) 代码重构与单元测试--测试项目(二) 代码重构与单元测试--"提取方法"重构(三) 代码重构与单元测试--重构1的单元测试(四) 代码重构与单元测试--对 ...

  3. Dll文件的创建与测试C#

    创建Dll文件 首先使用VS 2019创建Dll项目,创建项目时选择"类库",如下图 在项目中创建类文件,添加测试代码: namespace PlantSim_C_Interfac ...

  4. CVE-2020-2555漏洞复现&&流量分析

    CVE-2020-2555漏洞复现&&流量分析 一.准备环境 windows7: weblogic 12.2.1.4.0 JDK版本为jdk-8u261 关于weblogic搭建可以看 ...

  5. 在ASP.NET Core调用WebService

    一.前言 现实生产中,有一些比较老的系统对外提供的接口都是WebService形式的,如果是使用.NET Framework创建的项目调用WebService非常方便,网上有很多代码示例,这里不在讲解 ...

  6. C#---OleDbHelper

    /// <summary> /// OleDbServer数据访问帮助类 /// </summary> public sealed class OleDbHelper { pu ...

  7. WPF QQ群发助手

    一.界面如下

  8. C#中的垃圾回收

  9. springMVC学习日志一

    一.springMVC流程图省略 二.写一个简单的springmvc的demo来说明 2.1引入springMVC相关的jar包 2.2配置DispatcherServlet 在web.xml < ...

  10. 移动端动画——requestAnimationFrame

    window.requestAnimationFrame() 告诉浏览器--你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画.该方法需要传入一个回调函数作为参数,该回调函数会 ...