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

标题图

第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/11140334.html