## **学生信息管理系统、具有模糊查询功能,使用了MVC设计模式,实现学生信息管理(增删改查)使用工具MYSQL、C3P0、DBUtils**

    xiaoxiao2023-11-03  137

    先看效果

    1、查询所有学生列表

    2、添加

    3、更新(修改)

    4、删除不演示了哦

    5、按条件查询(女)

    6、安姓名性别查询

    原码下载:https://download.csdn.net/download/qq_40529129/11203735

    项目目录

    页面目录

    bean

    import java.util.Date;

    public class Student {

    private int sid; private String sname; private String gender; private String phone; private String hobby; private String info; private Date birthday; public Student(String sname, String gender, String phone, String hobby, String info, Date birthday) { super(); this.sname = sname; this.gender = gender; this.phone = phone; this.hobby = hobby; this.info = info; this.birthday = birthday; } public Student(int sid,String sname, String gender, String phone, String hobby, String info, Date birthday) { super(); this.sid= sid; this.sname = sname; this.gender = gender; this.phone = phone; this.hobby = hobby; this.info = info; this.birthday = birthday; } public Student() { super(); // TODO Auto-generated constructor stub } public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "Student [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", phone=" + phone + ", hobby=" + hobby + ", info=" + info + ", birthday=" + birthday + "]"; }

    }

    ``

    package com.stu.dao; 定义添加、修改、查询&模糊查询、删除的接口

    import java.sql.SQLException; import java.util.List;

    import com.stu.bean.Student;

    public interface Dao { public List findAll() throws Exception; public void add(Student student) throws Exception; public void delete(int sid)throws Exception; public Student edit(int sid)throws Exception; public void updeat(Student student)throws Exception; public List search(String sname,String sgender)throws Exception; }

    package com.stu.impldao; 实现dao接口

    import java.sql.SQLException; import java.util.ArrayList; import java.util.List;

    import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler;

    import com.stu.bean.Student; import com.stu.dao.Dao; import com.stu.util.StringUtil; import com.stu.util.Util;

    public class ImplDao implements Dao {

    @Override public List<Student> findAll() throws SQLException { //ComboPooledDataSource dataSource = new ComboPooledDataSource(); //QueryRunner runner = new QueryRunner(dataSource); QueryRunner runner = new QueryRunner(Util.getDataSource()); String sql = "select * from student2"; List<Student> list = runner.query(sql, new BeanListHandler<Student>(Student.class)); return list; } @Override public void add(Student student) throws SQLException { // TODO Auto-generated method stub QueryRunner runner = new QueryRunner(Util.getDataSource()); String sql = "insert into student2 values(null,?,?,?,?,?,?)"; runner.update(sql, student.getSname(), student.getGender(), student.getPhone(), student.getBirthday(), student.getHobby(), student.getInfo() ); } @Override public void delete(int sid) throws Exception { // TODO Auto-generated method stub QueryRunner runner = new QueryRunner(Util.getDataSource()); runner.update("delete from student2 where sid=?",sid); } @Override public Student edit(int sid) throws Exception { QueryRunner runner = new QueryRunner(Util.getDataSource()); String sql = "select * from student2 where sid=?"; Student student = runner.query(sql, new BeanHandler<Student>(Student.class),sid); return student; } @Override public void updeat(Student student) throws Exception { QueryRunner runner = new QueryRunner(Util.getDataSource()); runner.update("update student2 set sname=? , gender=? , phone=? , birthday=? , hobby=? , info=? where sid = ?", student.getSname(), student.getGender(), student.getPhone(), student.getBirthday(), student.getHobby(), student.getInfo(), student.getSid()); } /** * 模糊查询 */ @Override public List<Student> search(String sname, String sgender) throws Exception { QueryRunner runner = new QueryRunner(Util.getDataSource()); String sql = "select * from student2 where 1=1 "; List<String> list = new ArrayList<String> (); if(!StringUtil.isEmpty(sname)){ sql = sql + " and sname like ?"; list.add("%"+sname+"%"); } if(!StringUtil.isEmpty(sgender)){ sql = sql + " and gender = ?"; list.add(sgender); } return runner.query(sql , new BeanListHandler<Student>(Student.class) ,list.toArray() ); }

    }

    package com.stu.service; 创建service接口,定义添加、修改、查询&模糊查询、删除的接口

    import java.util.List;

    import com.stu.bean.Student;

    public interface StuDaoService { public List findAll()throws Exception; public void add(Student student) throws Exception; public void delete(int sid)throws Exception; public Student edit(int sid)throws Exception; public void updeat(Student student)throws Exception; public List search(String sname,String sgender)throws Exception; }

    package com.stu.ImplService;实现studaosryvice接口

    import java.util.List;

    import com.stu.bean.Student; import com.stu.dao.Dao; import com.stu.impldao.ImplDao; import com.stu.service.StuDaoService;

    public class ImplService implements StuDaoService {

    @Override public List<Student> findAll() throws Exception { // TODO Auto-generated method stub Dao dao = new ImplDao(); return dao.findAll(); } @Override public void add(Student student) throws Exception { // TODO Auto-generated method stub Dao dao = new ImplDao(); dao.add(student); } @Override public void delete(int sid) throws Exception { // TODO Auto-generated method stub Dao dao = new ImplDao(); dao.delete(sid); } @Override public Student edit(int sid) throws Exception { // TODO Auto-generated method stub Dao dao = new ImplDao(); Student student = dao.edit(sid); return student; } @Override public void updeat(Student student) throws Exception { Dao dao = new ImplDao(); dao.updeat(student); } @Override public List<Student> search(String sname, String sgender) throws Exception { Dao dao = new ImplDao(); return dao.search(sname, sgender); }

    }

    servlet 实现页面数据互通

    package com.stu.servlet;添加的servlet

    import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date;

    import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

    import com.stu.ImplService.ImplService; import com.stu.bean.Student; import com.stu.service.StuDaoService;

    /**

    Servlet implementation class AddServlet */ public class AddServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); try { String sname = request.getParameter("sname"); String gender = request.getParameter("gender"); String phone = request.getParameter("phone"); String birthday = request.getParameter("birthday"); String info = request.getParameter("info"); String [] h = request.getParameterValues("hobby"); String hobby = Arrays.toString(h); hobby = hobby.substring(1, hobby.length()-1); Date date = new SimpleDateFormat("yyyy-MM-dd").parse(birthday); Student student = new Student(sname, gender, phone, hobby, info, date); StuDaoService service = new ImplService(); service.add(student); request.getRequestDispatcher("FindAllServlvlet").forward(request,response ); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }

    }

    package com.stu.servlet; 删除

    import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

    import com.stu.ImplService.ImplService; import com.stu.service.StuDaoService;

    /**

    Servlet implementation class DeleteServlet */ public class DeleteServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { int sid = Integer.parseInt(request.getParameter(“sid”)); StuDaoService service = new ImplService(); service.delete(sid); request.getRequestDispatcher(“FindAllServlvlet”).forward(request,response );

    } catch (Exception e) { // TODO: handle exception }

    } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }

    }

    package com.stu.servlet; 修改

    import java.io.IOException; import java.sql.SQLException;

    import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

    import com.stu.ImplService.ImplService; import com.stu.bean.Student; import com.stu.service.StuDaoService;

    /**

    处理单个学生的更新, 查询一个学生的信息,然后跳转到更新页面@author xiaomi

    */ public class EditServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    try { int sid = Integer.parseInt(request.getParameter("sid")); System.out.println(sid); StuDaoService service = new ImplService(); Student stu = service.edit(sid); request.setAttribute("stu", stu); request.getRequestDispatcher("edit.jsp").forward(request, response); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }

    }

    package com.stu.servlet; 全表查询

    import java.io.IOException; import java.util.List;

    import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

    import com.stu.ImplService.ImplService; import com.stu.bean.Student; import com.stu.service.StuDaoService; public class FindAllServlvlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); try { //查询出所有学生 StuDaoService service = new ImplService(); List<Student> list = service.findAll(); //把数据存到作用玉 request.setAttribute("list", list); //跳转到页面 request.getRequestDispatcher("list.jsp").forward(request,response ); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }

    }

    package com.stu.servlet; 模糊查询

    import java.io.IOException; import java.sql.SQLException; import java.util.List;

    import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

    import com.stu.ImplService.ImplService; import com.stu.bean.Student; import com.stu.service.StuDaoService;

    /**

    Servlet implementation class SearchServlet */ public class SearchServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    request.setCharacterEncoding("UTF-8"); try { //1. 取到了要查询的关键数据 姓名 , 性别。 String sname= request.getParameter("sname"); String sgender= request.getParameter("sgender"); StuDaoService service = new ImplService(); List<Student> list = service.search(sname, sgender); request.setAttribute("list", list); //3. 跳转界面。列表界面 request.getRequestDispatcher("list.jsp").forward(request, response); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }

    }

    /**

    @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }

    }

    package com.stu.servlet;

    import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date;

    import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

    import com.stu.ImplService.ImplService; import com.stu.bean.Student; import com.stu.service.StuDaoService;

    /**

    Servlet implementation class UpdateServlet */ public class UpdateServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    request.setCharacterEncoding("UTF-8"); try { int sid = Integer.parseInt(request.getParameter("sid")); String sname = request.getParameter("sname"); //sname:zhangsan String gender = request.getParameter("gender"); String phone = request.getParameter("phone"); String birthday = request.getParameter("birthday"); // 1989-10-18 String info = request.getParameter("info"); String[] h = request.getParameterValues("hobby"); String hobby = Arrays.toString(h); hobby = hobby.substring(1, hobby.length() - 1); Date date = new SimpleDateFormat("yyyy-MM-dd").parse(birthday); Student student = new Student(sid, sname, gender, phone, hobby, info, date); StuDaoService service = new ImplService(); service.updeat(student); request.getRequestDispatcher("FindAllServlvlet").forward(request, response); } catch (Exception e) { // TODO: handle exception }

    } /**

    @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }

    }

    Util 数据库工具类用于关闭数据库非常简单读者自行编写

    c3p0.html 用于配置与MYsQL数据库的连接

    <?xml version="1.0" encoding="UTF-8"?> <!-- default-config 默认的配置, --> com.mysql.jdbc.Driver jdbc:mysql://localhost/数据库名?useUnicode=true&characterEncoding=UTF-8 <property name="user">用户名t</property> <property name="password">数据库密码</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> <property name="maxStatements">200</property> 50 100 50 1000 <!-- intergalactoApp adopts a different approach to configuring statement caching --> <property name="maxStatements">0</property> <property name="maxStatementsPerConnection">5</property> <!-- he's important, but there's only one of him --> <user-overrides user="master-of-the-universe"> <property name="acquireIncrement">1</property> <property name="initialPoolSize">1</property> <property name="minPoolSize">1</property> <property name="maxPoolSize">5</property> <property name="maxStatementsPerConnection">50</property> </user-overrides>

    WEB模块

    add.jsp 添加学生页面

    <%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>

    Insert title here

    添加学生页面

    姓名性别 男 女 电话生日爱好 游泳 篮球 足球 看书 写字 </td> 简介

    list.jsp 学生列表页面

    <%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>

    <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>

    学生列表页面 <tr > <td colspan="8"> 按姓名查询:<input type="text" name="sname"/>   按性别查询:<select name="sgender"> <option value="">--请选择-- <option value="男">男 <option value="女">女 </select>     <input type="submit" value="查询">     <a href="add.jsp">添加</a> </td> </tr> <tr align="center"> <td>编号</td> <td>姓名</td> <td>性别</td> <td>电话</td> <td>生日</td> <td>爱好</td> <td>简介</td> <td>操作</td> </tr> <c:forEach items="${list }" var="stu"> <tr align="center"> <td>${stu.sid }</td> <td>${stu.sname }</td> <td>${stu.gender }</td> <td>${stu.phone }</td> <td>${stu.birthday }</td> <td>${stu.hobby }</td> <td>${stu.info }</td> <td><a href="EditServlet?sid=${stu.sid }">更新</a> <a href="#" onclick="doDelete(${stu.sid})">删除</a></td> </tr> </c:forEach> </table> </form>

    <%-- <%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%> <%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>

    学生信息 <tr > <td colspan="8"> 按姓名查询:<input type="text" name="sname"/>   按性别查询:<select name="sgender"> <option value="">--请选择-- <option value="男">男 <option value="女">女 </select>     <input type="submit" value="查询">     <a href="add.jsp">添加</a> </td> </tr> <tr align="center"> <td>编号</td> <td>姓名</td> <td>性别</td> <td>电话</td> <td>生日</td> <td>爱好</td> <td>简介</td> <td>操作</td> </tr> <c:forEach items="${list }" var="stu"> <tr align="center"> <td>${stu.sid }</td> <td>${stu.sname }</td> <td>${stu.gender }</td> <td>${stu.phone }</td> <td>${stu.birthday }</td> <td>${stu.hobby }</td> <td>${stu.info }</td> <td><a href="EditServlet?sid=${stu.sid }">更新</a> <a href="#" onclick="doDelete(${stu.sid})">删除</a></td> </tr> </c:forEach> </table> </form> --%>

    edit.jsp 修改信息页面

    <%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>

    <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %> <%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/functions” %>

    更新学生页面

    更新学生页面

    姓名性别 ## 标题 简介 ${stu.info }

    原码下载:https://download.csdn.net/download/qq_40529129/11203735

    最新回复(0)