JavaWeb之简单的学生信息管理系统(二)

今日任务:实现学生管理系统的查找添加功能!

一、 查询学生信息

1. index.jsp

先写一个JSP页面【WebContent/index.jsp】,里面放一个超链接

<a href="StudentListServlet">显示所有学生列表</a>
2. StudentListServlet.java

写StudentListServlet【com.servlet包下的StudentListServlet.java】,接受请求,去调用service,再由service调用dao

package com.servlet;

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

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

/**
 * 
 * 负责查询所有的学生信息,然后呈现到list.jsp页面上
 *
 */
@WebServlet("/StudentListServlet")
public class StudentListServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		try {
			//1.查询出来所有的学生
			StudentService service = new StudentServiceImpl();
			List<Student> list = service.findAll();
			
			//2.先把数据存储到作用域中	
			//3..跳转页面
			
		} catch (SQLException e) {
		
			e.printStackTrace();
		}
		
	}

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

}

3. StudentDao.java & StudentDaoImpl.java
3.1 StudentDao.java【com.dao包下】
package com.dao;

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

import com.domain.Student;

/**
 * 这是针对学生表的数据访问
 * @author Administrator
 *
 */
public interface StudentDao {
	/**
	 * 查询所有学生
	 * @return  List<Student>
	 */
	List<Student> findAll() throws SQLException;
}

3.2 StudentDaoImpl.java【com.dao.impl包下】

实现StudentDao里的findAll()方法。

public class StudentDaoImpl implements StudentDao {
	/**
	 * 查询所有学生
	 * @throws SQLException 
	 */
	@Override
	public List<Student> findAll() throws SQLException {
		
		QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
		String sql = "select * from stu";
		List<Student> list = runner.query(sql, new BeanListHandler<Student>(Student.class));
		return list;
	}
}
4. StudentService.java 和 StudentService.java
4.1 StudentService.java

代码同StudentDao.java,


public interface StudentService {
	
	/**
	 * 查询所有学生
	 * @return   List<Student>
	 * 
	 */
	List<Student> findAll() throws SQLException;

}
4.2 StudentService.java
public class StudentServiceImpl implements StudentService{

	@Override
	public List<Student> findAll() throws SQLException {
		StudentDao dao = new StudentDaoImpl();
		return dao.findAll();
	}	
}
5. 在StudentListServlet存储数据,并作出页面响应
			//2.先把数据存储到作用域中
			request.setAttribute("list", list);
			
			//3..跳转页面
			request.getRequestDispatcher("list.jsp").forward(request, response);
6. list.jsp

在list.jsp【WebContent/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" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生列表页面 </title>
</head>
<body>
	<table border="1" width="700">
		
		<tr>
			<td colspan="8">
				<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="#">更新</a>  <a href="#">删除</a></td>
		</tr>
		</c:forEach>
		
	</table>
</body>
</html>
7. 查找结果如下:

在这里插入图片描述

二、添加学生信息

1. add.jsp

我们需要先跳转到增加页面,编写增加页面add.jsp【WebContent/add.jsp】

<body>

	<h3>添加学生页面</h3>
	
	<form action="AddServlet" method="post">
		<table border="1" width="600">
			<tr>
				<td>姓名</td>
				<td><input type="text" name="sname"></td>
			</tr>
			<tr>
				<td>性别</td>
				<td>
					<input type="radio" name="gender" value=""><input type="radio" name="gender" value=""></td>
			</tr>
			<tr>
				<td>电话</td>
				<td><input type="text" name="phone"></td>
			</tr>
			<tr>
				<td>生日</td>
				<td><input type="text" name="birthday"></td>
			</tr>
			<tr>
				<td>爱好</td>
				<td>
					<input type="checkbox" name="hobby" value="游泳">游泳
					<input type="checkbox" name="hobby" value="篮球">篮球
					<input type="checkbox" name="hobby" value="足球">足球
					<input type="checkbox" name="hobby" value="看书">看书
					<input type="checkbox" name="hobby" value="写字">写字
				</td>
			</tr>
			<tr>
				<td>简介</td>
				<td>
					<textarea rows="3" cols="20" name="info"></textarea>
				</td>
			</tr>
			<tr>
				<td colspan="2"><input type="submit" value="添加"></td>
			</tr>
		</table>
	</form>
	
</body>

实现结果如下:
在这里插入图片描述

2. AddServlet.java

点击添加,提交数据到AddServlet,处理数据。
【备:com.servlet包下的AddServlet.java】

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("utf-8");
		
		try {

			//1.获取客户端提交上来的数据
			String sname = request.getParameter("sname");
			String gender = request.getParameter("gender");
			String phone = request.getParameter("phone");
			String birthday = request.getParameter("birthday");  //传过来是1989-10-18
			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.添加到数据库
			
			//String-------Date
			Date date = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
			
			Student student = new Student(sname,gender,phone,hobby,info,date);
			StudentService service = new StudentServiceImpl();
			service.insert(student);
			
			//3.跳转到列表页
			//这里是直接跳转到页面上,那么这个页面会重新翻译一次,上面那个request里面的数据就没有了
			//request.getRequestDispatcher("list.jsp").forward(request, response);
			
			//servlet除了能跳jsp之外,还能跳servlet
			request.getRequestDispatcher("StudentListServlet").forward(request, response);
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
			
	}
3. StudentDao & StudentService
	/**
	 * 添加学生
	 * @param student  需要添加到数据库的学生对象
	 * @throws SQLException
	 */
	void insert(Student student) throws SQLException;
4. Dao & Service的实现
4.1 StudentDaoImpl.java
	@Override
	public void insert(Student student) throws SQLException {
		
		QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
		String sql = "insert into stu values(null,?,?,?,?,?,?)";
		runner.update(sql,
				student.getSname(),
				student.getGender(),
				student.getPhone(),
				student.getBirthday(),
				student.getHobby(),
				student.getInfo()
				
				);
	}
4.2 StudentServiceImpl.java
	@Override
	public void insert(Student student) throws SQLException {
		StudentDao dao = new StudentDaoImpl();
		dao.insert(student);
		
	}
5. 注意
  1. 完成了上述存储工作之后,需要跳转到列表页面,这里不能直接跳转到列表页面,否则没有什么内容显示。应该先跳转到查询所有学生信息的那个servlet,即StudentListServlet,再由这个servlet跳转到列表页面。
request.getRequestDispatcher("StudentListServlet").forward(request, response);
  1. hobby的value有多个值。处理时需多次转化:
			//String hobby = request.getParameter("hobby");
			String [] h = request.getParameterValues("hobby");
			//[篮球,足球,写字]-----篮球,足球,写字
			String hobby = Arrays.toString(h);
			hobby = hobby.substring(1,hobby.length()-1);
6. 添加结果如下:

在这里插入图片描述在这里插入图片描述

发布了32 篇原创文章 · 获赞 3 · 访问量 1353

猜你喜欢

转载自blog.csdn.net/weixin_44270855/article/details/104223040