JavaWeb实现学生信息管理系统(2)

作者:笑-_-笑 时间:2022-03-04 02:31:12 

本文接着上一篇,继续为大家分享了JavaWeb实现学生信息管理系统的第二篇,供大家参考,具体内容如下

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

一、查询学生信息

1. index.jsp

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


<a href="StudentListServlet" rel="external nofollow" >显示所有学生列表</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" rel="external nofollow" >添加</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="#" rel="external nofollow"  rel="external nofollow" >更新</a>  <a href="#" rel="external nofollow"  rel="external nofollow" >删除</a></td>
 </tr>
 </c:forEach>

</table>
</body>
</html>

7. 查找结果如下:

JavaWeb实现学生信息管理系统(2)

二、添加学生信息

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>

实现结果如下:

JavaWeb实现学生信息管理系统(2)

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. 注意

完成了上述存储工作之后,需要跳转到列表页面,这里不能直接跳转到列表页面,否则没有什么内容显示。应该先跳转到查询所有学生信息的那个servlet,即StudentListServlet,再由这个servlet跳转到列表页面。


request.getRequestDispatcher("StudentListServlet").forward(request, response);

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. 添加结果如下:

JavaWeb实现学生信息管理系统(2)

JavaWeb实现学生信息管理系统(2)

来源:https://blog.csdn.net/weixin_44270855/article/details/104223040

标签:JavaWeb,学生,管理系统
0
投稿

猜你喜欢

  • JavaWeb Servlet实现文件上传与下载功能实例

    2023-06-16 16:41:27
  • 详解java nio中的select和channel

    2021-08-09 19:17:39
  • idea设置JVM运行参数的几种方式

    2023-05-26 14:57:33
  • 详解Java的按位操作符

    2022-02-02 10:55:25
  • java基础实现猜数字小游戏

    2021-05-24 07:53:25
  • Java中控制流程语句的深入讲解

    2022-07-21 15:29:25
  • WinForm实现为TextBox设置水印文字功能

    2023-06-09 21:15:38
  • C#开发Winform控件之打开文件对话框OpenFileDialog类

    2023-04-19 10:53:16
  • Java 17的一些新特性介绍

    2022-04-11 15:33:15
  • C#将制定目录文件名转换成大写的方法

    2022-10-03 19:46:36
  • 使用SpringBoot 配置Oracle和H2双数据源及问题

    2023-10-04 14:06:11
  • IntelliJ IDEA 2022.2 正式发布新功能体验

    2021-08-14 02:47:33
  • SpringBoot在生产快速禁用Swagger2的方法步骤

    2022-12-30 00:05:53
  • Java集合之Comparable和Comparator接口详解

    2022-10-04 06:03:44
  • Mybatis-Plus使用updateById()、update()将字段更新为null

    2023-11-26 01:53:42
  • Andriod 资源文件之存取操作

    2021-11-22 09:26:52
  • C#将指定目录所有文件名转换成小写的方法

    2023-01-25 23:21:03
  • Mybatis实现Mapper动态代理方式详解

    2023-08-13 08:37:41
  • 关于Android中drawable必知的一些规则

    2021-08-26 16:24:41
  • Android12四大组件之Activity生命周期变化详解

    2022-05-04 15:47:57
  • asp之家 软件编程 m.aspxhome.com