好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

今日任务:实现学生管理系统的删除、更新、修改和模糊查询功能!

一、删除学生信息

点击超链接,弹出一个询问是否删除的对话框,如果点击了确定,删除此学生的信息。

1. 超链接执行一个js方法

?

1

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

在doDelete()方法里判断点击的选项,然后跳转到DeleteServlet。

?

1

2

3

4

5

6

7

8

9

10

<script type= "text/javascript" >

  function doDelete(sid){

   //如果这里弹出的对话框,用户点击的是确定,就去请求servlet

   var flag = confirm( "确定删除?" );

   if (flag){

    //表明确定删除。则访问servlet,在当前标签页上打开超链接

    window.location.href = "DeleteServlet?sid=" +sid;

   }

  }

</script>

2. DeleteServlet收到了请求,然后去调用service,service去调用dao。

DeleteServlet.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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

  

   try {

    //1.接受id

    int sid = Integer.parseInt(request.getParameter( "sid" ));

   

    //2.执行删除

    StudentService service = new StudentServiceImpl();

    service.delete(sid);

   

    //3.跳转到列表页

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

   } catch (SQLException e) {

    e.printStackTrace();

   }

  }

StudentDao.java & StudentService.java

?

1

2

3

4

5

6

/**

  * 根据id删除学生

  * @param sid

  * @throws SQLException

  */

void delete( int sid) throws SQLException;

StudentDaoImpl.java & StudentServiceImpl.java

?

1

2

3

4

5

6

7

8

9

10

11

public class StudentDaoImpl implements StudentDao {

 

  @Override

  public void delete( int sid) throws SQLException {

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

   String sql = "delete from stu where sid=?" ;

   runner.update(sql,sid);

  

  }

 

}

?

1

2

3

4

5

6

7

8

public class StudentServiceImpl implements StudentService{

  @Override

  public void delete( int sid) throws SQLException {

   StudentDao dao = new StudentDaoImpl();

   dao.delete(sid);

  

  }

}

3. 删除结果如下:

删除id = 3的学生的信息


二、更新(修改)学生信息

1. 点击列表上的更新,跳转到EditServlet上

?

1

< a href = "EditServlet?sid=${stu.sid }" rel = "external nofollow" >更新</ a >

2. 在EditServlet里面,根据id查询这个学生的所有信息

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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

  

   try {

    //1.接受id

    int sid = Integer.parseInt(request.getParameter( "sid" ));

   

    //2.查询学生数据

    StudentService service = new StudentServiceImpl();

    Student stu = service.findStudentById(sid);

   

    //3.显示数据

    //存数据

    request.setAttribute( "stu" , stu);

    //跳转

    request.getRequestDispatcher( "edit.jsp" ).forward(request, response);

   } catch (SQLException e) {

    e.printStackTrace();

   }

  

  

  }

3. 跳转到更新页面edit.jsp,在edit.jsp上显示数据

原来的学生信息如图所示,我们修改编号为2的学生的电话为11111。
点击更新,跳转到该学生的修改页面,如下:

修改页面代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

< body >

 

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

 

  < form action = "UpdateServlet" method = "post" >

   < 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标签里面出现checked;

      如果性别是女的,可以在女的性别input标签里面出现checked;

       -->

      < 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 rows = "3" cols = "20" name = "info" >${stu.info }</ textarea >

     </ td >

    </ tr >

    < tr >

     < td colspan = "2" >< input type = "submit" value = "更新" ></ td >

    </ tr >

   </ table >

  </ form >

 

 

</ body >

修改该学生的电话为11111,如下:

4. 修改完数据,提交数据到UpdateServlet

【备:代码与AddServlet代码相似,唯一的不同点就是:提交上来的数据是没有带id的,我们需要手动创建一个隐藏的输入框,在这里面给定id的值,以便提交表单时,带上id。

?

1

< input type = "hidden" name = "sid" value = "${stu.sid }" >

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

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

  

   request.setCharacterEncoding( "utf-8" );

   try {

    //1.获取客户端提交上来的数据

    int sid = Integer.parseInt(request.getParameter( "sid" ));

    System.out.println(sid);

    String sname = request.getParameter( "sname" );

    System.out.println(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 );

   

    //String-------Date

    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();

   }

  

 

  }

5. 获取数据,调用service,调用dao

StudentDao.java & StudentService.java

?

1

2

3

4

5

6

/**

  * 更新学生信息

  * @param student  需要更新的学生数据

  * @throws SQLException

  */

void update(Student student) throws SQLException;

StudentDaoImpl.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

public class StudentDaoImpl implements StudentDao {

  @Override

  public void update(Student student) throws SQLException {

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

   String sql = "update stu set sname=? , gender=? , phone=? , birthday=? , hobby=? , info=? where sid=?" ;

   runner.update(sql,

     student.getSname(),

     student.getGender(),

     student.getPhone(),

     student.getBirthday(),

     student.getHobby(),

     student.getInfo(),

     student.getSid()

    

     );

  

  }

 

}

StudentServiceImpl.java

?

1

2

3

4

5

6

7

8

public class StudentServiceImpl implements StudentService{

  @Override

  public void update(Student student) throws SQLException {

  

   StudentDao dao = new StudentDaoImpl();

   dao.update(student);

  }

}

6. 更新(修改)学生信息结果如下:

三、模糊查询

1. 在list.jsp加入进行查询的文本框

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

< form action = "SearchStudentServlet" method = "post" >

 

   < table border = "1" width = "700" >

   

    < tr >

     < td colspan = "8" >

      按姓名查询:< input type = "text" name = "sname" />

      &nbsp;&nbsp;&nbsp;

      按性别查询:< select name = "sgender" >

          < option value = "" >--请选择--

          < option value = "男" >男

          < option vale = "女" >女

         </ select >

      &nbsp;&nbsp;&nbsp;

      < input type = "submit" value = "查询" >

      &nbsp;&nbsp;&nbsp;

      < a href = "add.jsp" rel = "external nofollow" >添加</ a >

     </ td >

    </ tr >

   </ table >

  </ form >

实现效果如下图所示:

2. 在SearchServlet里面,查询符合查询条件的学生信息

代码实现如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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" );

   

    //2.查询

    StudentService service = new StudentServiceImpl();

    List<Student> list = service.searchStudent(sname, sgender);

   

    request.setAttribute( "list" , list);

   

    //3.跳转界面--列表界面

    request.getRequestDispatcher( "list.jsp" ).forward(request, response);

   } catch (SQLException e) {

    e.printStackTrace();

   }

  

  }

例如:查询所有性别为男的学生信息;

查询结果如下:

3. 获取数据,调用service,调用dao

StudentDao.java & StudentService.java

?

1

2

3

4

5

6

7

8

/**

   * 模糊查询,根据姓名或者根据性别,或者两者兼有

   * @param sname

   * @param sgender

   * @return  List<Student>

   * @throws SQLException

   */

  List<Student> searchStudent(String sname,String sgender) throws SQLException;

StudentDaoImpl.java【这是一个需要注意的部分!!!】

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

@Override

public List<Student> searchStudent(String sname, String sgender) throws SQLException {

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

  /**

   * 如果只有姓名 select * from stu where sname like?;

   * 如果只有性别 select * from stu where gender=?

   * 如果两个都有 select * from stu where sname like? and gender=?

   * 如果两个都没有就查询所有

   */

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

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

 

  //判断是否有姓名,如果有,就组拼到sql语句里

  if (!TestUtils.isEmpty(sname)) {

   sql = sql + "and sname like ?" ;

   list.add( "%" +sname+ "%" );

  }

  //判断是否有性别,如果有,就组拼到sql语句里

  if (!TestUtils.isEmpty(sgender)) {

   sql = sql + "and gender = ?" ;

   list.add(sgender);

  }

 

 

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

 

}

StudentServiceImol…java

?

1

2

3

4

5

@Override

  public List<Student> searchStudent(String sname, String sgender) throws SQLException {

   StudentDao dao = new StudentDaoImpl();

   return dao.searchStudent(sname, sgender);

  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://blog.csdn.net/weixin_44270855/article/details/104231634

查看更多关于JavaWeb实现学生信息管理系统(3)的详细内容...

  阅读:29次