第82节:Java中的学生管理系统

学生管理系统的删除功能

删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet中调用dao方法。

<a href="#" onclick="doDelete(${stu.sid})">删除</a>
<script type="text/javascript">

    function doDelete(sid) {
        // 弹出对话框,点击确定,请求Servlet
        var flag = confirm("是否确定删除?");
        if(flag){
            //访问servlet
            //window.location.href="DeleteServlet?sid="+sid;
            location.href="DeleteServlet?sid="+sid;
        }
    }
</script>
package com.dashucoding.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.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
 * 用于处理删除学生
 */
public class DeleteServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            int sid = Integer.parseInt(request.getParameter("sid"));
            // System.out.println("sid="+sid);
            // 执行删除
            StudentService service = new StudentServiceImpl();
            service.delete(sid);
            // 跳转到列表页
            request.getRequestDispatcher("StudentListServlet").forward(request, response);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

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

}
package com.dashucoding.service.impl;

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

import com.dashucoding.dao.StudentDao;
import com.dashucoding.dao.impl.StudentDaoImpl;
import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
/*
 * 这是学生业务实现
 * */
public class StudentServiceImpl implements StudentService{

    @Override
    public List<Student> findAll() throws SQLException {
        StudentDao dao = new StudentDaoImpl();
        return dao.findAll();
    }

    @Override
    public void insert(Student student) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        dao.insert(student);
    }

    @Override
    public void delete(int sid) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        dao.delete(sid);
    }

}
package com.dashucoding.dao;

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

import com.dashucoding.domain.Student;

/*
 * 这是针对学生表的数据访问
 *
 * */
public interface StudentDao {

    /*
     * 查询所有学生 list<Student>
     */
    List<Student> findAll() throws SQLException;

    void insert(Student student) throws SQLException;

    // sid根据id删除学生
    void delete(int sid) throws SQLException;
}
package com.dashucoding.dao.impl;

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

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

import com.dashucoding.dao.StudentDao;
import com.dashucoding.domain.Student;
import com.dashucoding.util.JDBCUtil02;

/*
 *这是StudentDao的实现,针对前面定义的规范,做出具体的实现
 * */
public class StudentDaoImpl implements StudentDao {
    /*
     * 查询所有学生
     */
    @Override
    public List<Student> findAll() throws SQLException {
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        return runner.query("select * from stu", new BeanListHandler<Student>(Student.class));
    }

    @Override
    public void insert(Student student) throws SQLException {
        // TODO Auto-generated method stub
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        runner.update("insert into stu values(null, ?,?,?,?,?,?)",
                student.getSname(),
                student.getGender(),
                student.getPhone(),
                student.getBirthday(),
                student.getHobby(),
                student.getInfo()
                );
    }

    @Override
    public void delete(int sid) throws SQLException {
        // TODO Auto-generated method stub

        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        runner.update("delete from stu where sid=?", sid);

    }

}

学生管理系统更新

fn:contains()函数

fn:contain()函数用于确定一个字符串是否包含指定的子串,函数的语法格式如下:

<c:if test="${fn:contains()"></c:if>
fn:contains
Tests if an input string contains the specified substring.

更新,点击列表上的按钮进行更新,跳转EditServlet,根据id查询这个学生的所有信息,跳转到更新的页面,显示在浏览器,修改后提交到UpdateServlet,提交数据要带id,获取数据,调用service和调用dao。

代码案例:

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

 <%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>
<!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>学生列表页面</title>

<script type="text/javascript">

    function doDelete(sid) {
        // 弹出对话框,点击确定,请求Servlet
        var flag = confirm("是否确定删除?");
        if(flag){
            //访问servlet
            //window.location.href="DeleteServlet?sid="+sid;
            location.href="DeleteServlet?sid="+sid;
        }
    }
</script>

</head>
<body>
    <form action="SearchStudentServlet" method="post">
        <table border="1" width="700">

            <tr >
                <td colspan="8">

                    按姓名查询:<input type="text" name="sname"/>
                    &nbsp;
                    按性别查询:<select name="sgender">
                                <option value="">--请选择--
                                <option value="男">男
                                <option value="女">女
                              </select>
                    &nbsp;&nbsp;&nbsp;
                    <input type="submit" value="查询">
                    &nbsp;&nbsp;&nbsp;
                    <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>
</body>
</html>
package com.dashucoding.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.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
 * 处理单个学生的更新,查询学生的信息,跳转到更新的页面
 */
public class EditServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            // 接收id
            int sid = Integer.parseInt(request.getParameter("sid"));
            // 查询学生数据
            StudentService service = new StudentServiceImpl();
            Student stu = service.findStudentById(sid);

            // 显示数据
            // 存储数据
            request.setAttribute("stu", stu);
            // 跳转
            request.getRequestDispatcher("edit.jsp").forward(request, response);

        } catch (SQLException 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.dashucoding.dao;

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

import com.dashucoding.domain.Student;

/*
 * 这是针对学生表的数据访问
 *
 * */
public interface StudentDao {

    /*
     * 查询所有学生 list<Student>
     */
    List<Student> findAll() throws SQLException;

    void insert(Student student) throws SQLException;

    // sid根据id删除学生
    void delete(int sid) throws SQLException;

    // 根据id查询单个学生对象
    Student findStudentById(int sid) throws SQLException;

    // 更新学生信息
    void update(Student student) throws SQLException;
}
package com.dashucoding.dao.impl;

import java.sql.Connection;
import java.sql.SQLException;
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.dashucoding.dao.StudentDao;
import com.dashucoding.domain.Student;
import com.dashucoding.util.JDBCUtil02;

/*
 *这是StudentDao的实现,针对前面定义的规范,做出具体的实现
 * */
public class StudentDaoImpl implements StudentDao {
    /*
     * 查询所有学生
     */
    @Override
    public List<Student> findAll() throws SQLException {
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        return runner.query("select * from stu", new BeanListHandler<Student>(Student.class));
    }

    @Override
    public void insert(Student student) throws SQLException {
        // TODO Auto-generated method stub
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        runner.update("insert into stu values(null, ?,?,?,?,?,?)",
                student.getSname(),
                student.getGender(),
                student.getPhone(),
                student.getBirthday(),
                student.getHobby(),
                student.getInfo()
                );
    }

    @Override
    public void delete(int sid) throws SQLException {
        // TODO Auto-generated method stub

        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        runner.update("delete from stu where sid=?", sid);

    }

    @Override
    public Student findStudentById(int sid) throws SQLException {
        // TODO Auto-generated method stub
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());

        return runner.query("select * from stu where sid = ?", new BeanHandler<Student>(Student.class), sid);
    }

    @Override
    public void update(Student student) throws SQLException {
        // TODO Auto-generated method stub
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        runner.update("update stu set sname=?, gender=?, phone=?, birthday=?, hobby=?, info=? where sid=?",
                student.getSname(),
                student.getGender(),
                student.getPhone(),
                student.getBirthday(),
                student.getHobby(),
                student.getInfo(),
                student.getSid());
    }

}
package com.dashucoding.service;

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

import com.dashucoding.domain.Student;

/*
 * 这是学生的业务处理规范
 * */
public interface StudentService {

    /*
     * 查询所有学生 list<Student>
     */
    List<Student> findAll() throws SQLException;

    void insert(Student student) throws SQLException;

    // sid根据id删除学生
    void delete(int sid) throws SQLException;

    // 根据id查询单个学生对象
    Student findStudentById(int sid) throws SQLException;

    // 更新学生信息
    void update(Student student) throws SQLException;
}
package com.dashucoding.service.impl;

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

import com.dashucoding.dao.StudentDao;
import com.dashucoding.dao.impl.StudentDaoImpl;
import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;

/*
 * 这是学生业务实现
 * */
public class StudentServiceImpl implements StudentService {

    @Override
    public List<Student> findAll() throws SQLException {
        StudentDao dao = new StudentDaoImpl();
        return dao.findAll();
    }

    @Override
    public void insert(Student student) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        dao.insert(student);
    }

    @Override
    public void delete(int sid) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        dao.delete(sid);
    }

    @Override
    public Student findStudentById(int sid) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        return dao.findStudentById(sid);
    }

    @Override
    public void update(Student student) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        dao.update(student);
    }

}
package com.dashucoding.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.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
 * Servlet implementation class UpdateServlet
 */
public class UpdateServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        try {
            // 1. 获取客户端提交上来的数据
            int sid = Integer.parseInt(request.getParameter("sid"));
            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 hobby = request.getParameter("hobby");
            String[] h = request.getParameterValues("hobby");

            String hobby = Arrays.toString(h);
            hobby = hobby.substring(1, hobby.length() - 1);
            // 2. 添加到数据库

            Date date = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
            Student student = new Student(sid, sname, gender, phone, hobby, info, date);

            // 2. 更新数据库数据
            StudentService service = new StudentServiceImpl();
            service.update(student);

            // 3. 跳转界面
            request.getRequestDispatcher("StudentListServlet").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

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

}
package com.dashucoding.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.dashucoding.dao.StudentDao;
import com.dashucoding.dao.impl.StudentDaoImpl;
import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

public class StudentListServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            // 查询所有的学生
            StudentService service = new StudentServiceImpl();
            List<Student> list = service.findAll();
            // 把数据存储到作用域中
            request.setAttribute("list", list);

            // 跳转页面
            request.getRequestDispatcher("list.jsp").forward(request,response);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

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

}
<%@ 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" %>

<!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>更新学生页面</title>

</head>

<body>

<h3>更新学生页面</h3>

<form method="post" action="UpdateServlet">
    <input type="hidden" name="sid" value="${stu.sid }">
  <table border="1" width="600">
  <tr>
    <td>姓名</td>
    <td><input type="text" name="sname" value="${stu.sname }"></td>
  </tr>
  <tr>
    <td>性别</td>
    <td>
        <input type="radio" name="gender" value="男" <c:if test="${stu.gender == '男'}">checked</c:if>>男
        <input type="radio" name="gender" value="女" <c:if test="${stu.gender == '女'}">checked</c:if>>女
    </td>
  </tr>
  <tr>
    <td>电话</td>
    <td><input type="text" name="phone" value="${stu.phone }"></td>
  </tr>
  <tr>
    <td>生日</td>
    <td><input type="text" name="birthday" value="${stu.birthday }"></td>
  </tr>
  <tr>
    <td>爱好</td>

    <td>
        <input type="checkbox" name="hobby" value="游泳" <c:if test="${fn:contains(stu.hobby,'游泳') }">checked</c:if>>游泳
        <input type="checkbox" name="hobby" value="篮球" <c:if test="${fn:contains(stu.hobby,'篮球') }">checked</c:if>>篮球
        <input type="checkbox" name="hobby" value="足球" <c:if test="${fn:contains(stu.hobby,'足球') }">checked</c:if>>足球
        <input type="checkbox" name="hobby" value="看书" <c:if test="${fn:contains(stu.hobby,'看书') }">checked</c:if>>看书
        <input type="checkbox" name="hobby" value="写字" <c:if test="${fn:contains(stu.hobby,'写字') }">checked</c:if>>写字

    </td>
  </tr>
  <tr>
    <td>简介</td>
    <td><textarea name="info" rows="3" cols="20">${stu.info }</textarea></td>
  </tr>
  <tr>
    <td colspan="2"> <input type="submit" value="更新"> </td>
  </tr>
  </table>
   </form>
</body>
</html>

进行模糊查询

查询结果

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

 <%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>
<!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>学生列表页面</title>

<script type="text/javascript">

    function doDelete(sid) {
        // 弹出对话框,点击确定,请求Servlet
        var flag = confirm("是否确定删除?");
        if(flag){
            //访问servlet
            //window.location.href="DeleteServlet?sid="+sid;
            location.href="DeleteServlet?sid="+sid;
        }
    }
</script>

</head>
<body>
    <form action="SearchStudentServlet" method="post">
        <table border="1" width="700">

            <tr >
                <td colspan="8">

                    按姓名查询:<input type="text" name="sname"/>
                    &nbsp;
                    按性别查询:<select name="sgender">
                                <option value="">--请选择--
                                <option value="男">男
                                <option value="女">女
                              </select>
                    &nbsp;&nbsp;&nbsp;
                    <input type="submit" value="查询">
                    &nbsp;&nbsp;&nbsp;
                    <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>
</body>
</html>
package com.dashucoding.util;

public class TextUtils {

    /**
     * 判断某一个字符串是否为空。
     *
     * @param s
     * @return
     */
    public static boolean isEmpty(CharSequence s) {
        return s == null || s.length() == 0;
    }
}
package com.dashucoding.dao;

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

import com.dashucoding.domain.Student;

/*
 * 这是针对学生表的数据访问
 *
 * */
public interface StudentDao {

    // 根据姓名或性别,查询
    List<Student> searchStudent(String sname, String sgender) throws SQLException;

    /*
     * 查询所有学生 list<Student>
     */
    List<Student> findAll() throws SQLException;

    void insert(Student student) throws SQLException;

    // sid根据id删除学生
    void delete(int sid) throws SQLException;

    // 根据id查询单个学生对象
    Student findStudentById(int sid) throws SQLException;

    // 更新学生信息
    void update(Student student) throws SQLException;
}
package com.dashucoding.dao.impl;

import java.sql.Connection;
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.dashucoding.dao.StudentDao;
import com.dashucoding.domain.Student;
import com.dashucoding.util.JDBCUtil02;
import com.dashucoding.util.TextUtils;

/*
 *这是StudentDao的实现,针对前面定义的规范,做出具体的实现
 * */
public class StudentDaoImpl implements StudentDao {
    /*
     * 查询所有学生
     */
    @Override
    public List<Student> findAll() throws SQLException {
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        return runner.query("select * from stu", new BeanListHandler<Student>(Student.class));
    }

    @Override
    public void insert(Student student) throws SQLException {
        // TODO Auto-generated method stub
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        runner.update("insert into stu values(null, ?,?,?,?,?,?)",
                student.getSname(),
                student.getGender(),
                student.getPhone(),
                student.getBirthday(),
                student.getHobby(),
                student.getInfo()
                );
    }

    @Override
    public void delete(int sid) throws SQLException {
        // TODO Auto-generated method stub

        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        runner.update("delete from stu where sid=?", sid);

    }

    @Override
    public Student findStudentById(int sid) throws SQLException {
        // TODO Auto-generated method stub
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());

        return runner.query("select * from stu where sid = ?", new BeanHandler<Student>(Student.class), sid);
    }

    @Override
    public void update(Student student) throws SQLException {
        // TODO Auto-generated method stub
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        runner.update("update stu 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> searchStudent(String sname, String sgender) throws SQLException {
        // TODO Auto-generated method stub

        /*System.out.println(sname + sgender);*/

        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());

        /*
         * String sql = "select * from stu where sname=? or sgender=?";
         * select * from stu where sname like ?;
         * select * from stu where gender = ?;
         * select * from stu where sname like ? and gender = ?;
         * 如果两个都没有就查询所有
         * sql = "select * from stu"
         * if(姓名){
         *  sql = sql + "where sname like ?";
         * }
         * if(性别){
         *  sql = sql + "where gender = ?";
         * }
         *
         * String sql = "select * from stu where 1=1";
         * if(姓名){
         *  sql = sql + " and sname like ? ";
         * }
         * if(性别){
         *  sql = sql + " and gender = ? ";
         * }
         * */

        String sql = "select * from stu where 1=1";

        List<String> list = new ArrayList<String>();

        if(!TextUtils.isEmpty(sname)) {
            sql = sql + " and sname like ? ";
            list.add("%"+sname+"%");
        }

        if(!TextUtils.isEmpty(sgender)) {
            sql = sql + " and gender = ? ";
            list.add(sgender);
        }
        /*list.toArray()*/

        return runner.query(sql, new BeanListHandler<Student>(Student.class),list.toArray());

    }

}
package com.dashucoding.service;

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

import com.dashucoding.domain.Student;

/*
 * 这是学生的业务处理规范
 * */
public interface StudentService {
    // 根据姓名或性别,查询
    List<Student> searchStudent(String sname, String sgender) throws SQLException;

    /*
     * 查询所有学生 list<Student>
     */
    List<Student> findAll() throws SQLException;

    void insert(Student student) throws SQLException;

    // sid根据id删除学生
    void delete(int sid) throws SQLException;

    // 根据id查询单个学生对象
    Student findStudentById(int sid) throws SQLException;

    // 更新学生信息
    void update(Student student) throws SQLException;
}
package com.dashucoding.service.impl;

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

import com.dashucoding.dao.StudentDao;
import com.dashucoding.dao.impl.StudentDaoImpl;
import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;

/*
 * 这是学生业务实现
 * */
public class StudentServiceImpl implements StudentService {

    @Override
    public List<Student> findAll() throws SQLException {
        StudentDao dao = new StudentDaoImpl();
        return dao.findAll();
    }

    @Override
    public void insert(Student student) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        dao.insert(student);
    }

    @Override
    public void delete(int sid) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        dao.delete(sid);
    }

    @Override
    public Student findStudentById(int sid) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        return dao.findStudentById(sid);
    }

    @Override
    public void update(Student student) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        dao.update(student);
    }

    @Override
    public List<Student> searchStudent(String sname, String sgender) throws SQLException {
        // TODO Auto-generated method stub
        StudentDao dao = new StudentDaoImpl();
        return dao.searchStudent(sname, sgender);
    }

}
package com.dashucoding.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.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
 * Servlet implementation class SearchStudentServlet
 */
public class SearchStudentServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        try {
            // 取到了要查询的关键数据
            String sname = request.getParameter("sname");
            String sgender = request.getParameter("sgender");

            // 找service查询
            StudentService service = new StudentServiceImpl();
            List<Student> list = service.searchStudent(sname, sgender);

            /*for(Student student : list) {
                System.out.println("stu=" + student);
            }*/

            request.setAttribute("list", list);
            // 跳转界面
            request.getRequestDispatcher("list.jsp").forward(request, response);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

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

}
package com.dashucoding.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.dashucoding.dao.StudentDao;
import com.dashucoding.dao.impl.StudentDaoImpl;
import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

public class StudentListServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            // 查询所有的学生
            StudentService service = new StudentServiceImpl();
            List<Student> list = service.findAll();
            // 把数据存储到作用域中
            request.setAttribute("list", list);

            // 跳转页面
            request.getRequestDispatcher("list.jsp").forward(request,response);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

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

}

结言

好了,欢迎在留言区留言,与大家分享你的经验和心得。

感谢你学习今天的内容,如果你觉得这篇文章对你有帮助的话,也欢迎把它分享给更多的朋友,感谢。

达叔小生:往后余生,唯独有你
You and me, we are family !
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
https://www.jianshu.com/u/c785ece603d1

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

原文地址:https://www.cnblogs.com/dashucoding/p/10350726.html

时间: 2024-07-29 16:37:42

第82节:Java中的学生管理系统的相关文章

第83节:Java中的学生管理系统分页功能

分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其特点是对内存中数据量存储不大,只是缺点就是要对数据库不断的进行访问:而对逻辑分页来说,就有所不同,它是一下子就把所有的数据全部查询出来,然后放入到内存中,访问速度快,缺点就是对内存空间不足,数据量过大. select * from stu limit 5; // offset 偏移前面的多少条,offset 1 跳过前面的一条 select

java版本的学生管理系统

1 import java.awt.BorderLayout; 2 import java.awt.Color; 3 import java.awt.Frame; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 import java.io.UnsupportedEncodingException; 7 import java.sql.Connection; 8 import java.

第80节:Java中的MVC设计模式

前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn.rollBack 隔离级别分别有: 读未提交有脏读 读已提交有不可重复读 可重复读有幻读 可串行化可以解决脏读,幻读,不可重复读 数据库连接池用于创建和管理连接对象. DBCP和C3P0,分别了解代码设置和配置文件设置 DBUtils可以简化数据的增删改查. QueryRunner runner = new QueryRunner()

Java——简单实现学生管理系统

import java.io.*;import java.util.ArrayList;import java.util.Scanner;class MyObjectOutputStream extends ObjectOutputStream{ public MyObjectOutputStream() throws IOException{  super(); } public MyObjectOutputStream(OutputStream out) throws IOException

java基础:学生管理系统

package com.lovo.manager; import java.util.Scanner; /** * 学生管理 * * @author 向往的生活 * */public class StudentManager { public static void main(String[] args) {        String[] user = new String[10];        int[] password = new int[10];        while (true

第61节:Java中的DOM和Javascript技术

Java中的DOM和Javascript技术 DOM是一门技术,是文档对象模型.所需的文档只有标记型文档,如我们所学的html文档(文档中的所有标签都封装成为对象了) DOM: 为Document Object Model, 文档对象模型, 是用来将标记文档以及文档中的标签等所有内容都封装成对象. 把标签文档中所有的标签封装成对象, 文档也封装成对象,DOM技术(标记型文档封装成对象) DOM技术存在浏览器中,内置了DOM技术解析器,变对象是需要进行解析的,描述进行封装.在内存当中进行解析,为D

java 第50节 Java中的异常链

2016-06-30 1 异常链 两个或多个不同的异常出现在同一个程序中,并且会发生嵌套抛出,我们称之为异常链. package com.java1995; /** * 异常链 * @author Administrator * */ public class ExceptionChainTest { public static void main(String[] args) { Calculator c=new Calculator(); try{ c.chufa(1, 0); }catch

第70节:Java中xml和tomcat

前言: 哭着也要看完,字数: jdbc crud - statement dao java.sql.Driver The interface that every driver class must implement. The Java SQL framework allows for multiple database drivers. Each driver should supply a class that implements the Driver interface. The Dr

第77节:Java中的事务和数据库连接池和DBUtiles

前言 看哭你,字数:8803,承蒙关照,谢谢朋友点赞! 事务 Transaction事务,什么是事务,事务是包含一组操作,这组操作里面包含许多个单一的逻辑,只要有一个逻辑没有执行成功就算失败,导致回滚就是指所有的数据都会回到最初的状态. 有事务,是为了保证逻辑一定要成功,如银行转账. 回顾一下 什么是jsp,jsp的三大指令. page: 定义当前页面的信息 include: 包含其他页面 taglib: 引入标签库 三大动作标签: <jsp:forward page="">