JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(3)
本文接著第二篇,繼續(xù)為大家分享了JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),供大家參考,具體內(nèi)容如下
今日任務(wù):實(shí)現(xiàn)學(xué)生管理系統(tǒng)的刪除、更新、修改和模糊查詢功能!
一、刪除學(xué)生信息
點(diǎn)擊超鏈接,彈出一個(gè)詢問(wèn)是否刪除的對(duì)話框,如果點(diǎn)擊了確定,刪除此學(xué)生的信息。
1. 超鏈接執(zhí)行一個(gè)js方法
<a href="#" onclick="doDelete(${stu.sid})">刪除</a>
在doDelete()方法里判斷點(diǎn)擊的選項(xiàng),然后跳轉(zhuǎn)到DeleteServlet。
<script type="text/javascript"> function doDelete(sid){ //如果這里彈出的對(duì)話框,用戶點(diǎn)擊的是確定,就去請(qǐng)求servlet var flag = confirm("確定刪除?"); if(flag){ //表明確定刪除。則訪問(wèn)servlet,在當(dāng)前標(biāo)簽頁(yè)上打開(kāi)超鏈接 window.location.href = "DeleteServlet?sid="+sid; } } </script>
2. DeleteServlet收到了請(qǐng)求,然后去調(diào)用service,service去調(diào)用dao。
DeleteServlet.java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //1.接受id int sid = Integer.parseInt(request.getParameter("sid")); //2.執(zhí)行刪除 StudentService service = new StudentServiceImpl(); service.delete(sid); //3.跳轉(zhuǎn)到列表頁(yè) request.getRequestDispatcher("StudentListServlet").forward(request,response); } catch (SQLException e) { e.printStackTrace(); } }
StudentDao.java & StudentService.java
/** * 根據(jù)id刪除學(xué)生 * @param sid * @throws SQLException */ void delete(int sid) throws SQLException;
StudentDaoImpl.java & StudentServiceImpl.java
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); } }
public class StudentServiceImpl implements StudentService{ @Override public void delete(int sid) throws SQLException { StudentDao dao = new StudentDaoImpl(); dao.delete(sid); } }
3. 刪除結(jié)果如下:
刪除id = 3的學(xué)生的信息
二、更新(修改)學(xué)生信息
1. 點(diǎn)擊列表上的更新,跳轉(zhuǎn)到EditServlet上
<a href="EditServlet?sid=${stu.sid }" rel="external nofollow" >更新</a>
2. 在EditServlet里面,根據(jù)id查詢這個(gè)學(xué)生的所有信息
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //1.接受id int sid = Integer.parseInt(request.getParameter("sid")); //2.查詢學(xué)生數(shù)據(jù) StudentService service = new StudentServiceImpl(); Student stu = service.findStudentById(sid); //3.顯示數(shù)據(jù) //存數(shù)據(jù) request.setAttribute("stu", stu); //跳轉(zhuǎn) request.getRequestDispatcher("edit.jsp").forward(request, response); } catch (SQLException e) { e.printStackTrace(); } }
3. 跳轉(zhuǎn)到更新頁(yè)面edit.jsp,在edit.jsp上顯示數(shù)據(jù)
原來(lái)的學(xué)生信息如圖所示,我們修改編號(hào)為2的學(xué)生的電話為11111。
點(diǎn)擊更新,跳轉(zhuǎn)到該學(xué)生的修改頁(yè)面,如下:
修改頁(yè)面代碼如下:
<body> <h3>更新學(xué)生頁(yè)面</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標(biāo)簽里面出現(xiàn)checked; 如果性別是女的,可以在女的性別input標(biāo)簽里面出現(xiàn)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>愛(ài)好</td> <td> <!-- 例如:愛(ài)好有籃球,足球,看書(shū) 由于愛(ài)好有很多歌,里面存在包含關(guān)系 --> <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="看書(shū)" <c:if test="${fn:contains(stu.hobby,'看書(shū)') }">checked</c:if> >看書(shū) <input type="checkbox" name="hobby" value="寫(xiě)字" <c:if test="${fn:contains(stu.hobby,'寫(xiě)字') }">checked</c:if> >寫(xiě)字 </td> </tr> <tr> <td>簡(jiǎn)介</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>
修改該學(xué)生的電話為11111,如下:
4. 修改完數(shù)據(jù),提交數(shù)據(jù)到UpdateServlet
【備:代碼與AddServlet代碼相似,唯一的不同點(diǎn)就是:提交上來(lái)的數(shù)據(jù)是沒(méi)有帶id的,我們需要手動(dòng)創(chuàng)建一個(gè)隱藏的輸入框,在這里面給定id的值,以便提交表單時(shí),帶上id。
<input type="hidden" name="sid" value="${stu.sid }">
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); try { //1.獲取客戶端提交上來(lái)的數(shù)據(jù) 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"); //傳過(guò)來(lái)是1989-10-18 String info = request.getParameter("info"); //String hobby = request.getParameter("hobby"); String [] h = request.getParameterValues("hobby"); //[籃球,足球,寫(xiě)字]-----籃球,足球,寫(xiě)字 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.更新數(shù)據(jù)庫(kù)數(shù)據(jù) StudentService service = new StudentServiceImpl(); service.update(student); //3.跳轉(zhuǎn)界面 request.getRequestDispatcher("StudentListServlet").forward(request, response); } catch (Exception e) { e.printStackTrace(); } }
5. 獲取數(shù)據(jù),調(diào)用service,調(diào)用dao
StudentDao.java & StudentService.java
/** * 更新學(xué)生信息 * @param student 需要更新的學(xué)生數(shù)據(jù) * @throws SQLException */ void update(Student student) throws SQLException;
StudentDaoImpl.java
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
public class StudentServiceImpl implements StudentService{ @Override public void update(Student student) throws SQLException { StudentDao dao = new StudentDaoImpl(); dao.update(student); } }
6. 更新(修改)學(xué)生信息結(jié)果如下:
三、模糊查詢
1. 在list.jsp加入進(jìn)行查詢的文本框
<form action="SearchStudentServlet" method="post"> <table border="1" width="700"> <tr> <td colspan="8"> 按姓名查詢:<input type="text" name="sname"/> 按性別查詢:<select name="sgender"> <option value="">--請(qǐng)選擇-- <option value="男">男 <option vale="女">女 </select> <input type="submit" value="查詢"> <a href="add.jsp" rel="external nofollow" >添加</a> </td> </tr> </table> </form>
實(shí)現(xiàn)效果如下圖所示:
2. 在SearchServlet里面,查詢符合查詢條件的學(xué)生信息
代碼實(shí)現(xiàn)如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); try { //1.取到了要查詢的關(guān)鍵數(shù)據(jù):姓名,性別 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.跳轉(zhuǎn)界面--列表界面 request.getRequestDispatcher("list.jsp").forward(request, response); } catch (SQLException e) { e.printStackTrace(); } }
例如:查詢所有性別為男的學(xué)生信息;
查詢結(jié)果如下:
3. 獲取數(shù)據(jù),調(diào)用service,調(diào)用dao
StudentDao.java & StudentService.java
/** * 模糊查詢,根據(jù)姓名或者根據(jù)性別,或者兩者兼有 * @param sname * @param sgender * @return List<Student> * @throws SQLException */ List<Student> searchStudent(String sname,String sgender) throws SQLException;
StudentDaoImpl.java【這是一個(gè)需要注意的部分!!!】
@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=? * 如果兩個(gè)都有 select * from stu where sname like? and gender=? * 如果兩個(gè)都沒(méi)有就查詢所有 */ String sql = "select * from stu where 1=1 "; List<String> list = new ArrayList<String>(); //判斷是否有姓名,如果有,就組拼到sql語(yǔ)句里 if(!TestUtils.isEmpty(sname)) { sql = sql + "and sname like ?"; list.add("%"+sname+"%"); } //判斷是否有性別,如果有,就組拼到sql語(yǔ)句里 if(!TestUtils.isEmpty(sgender)) { sql = sql + "and gender = ?"; list.add(sgender); } return runner.query(sql, new BeanListHandler<Student>(Student.class),list.toArray()); }
StudentServiceImol…java
@Override public List<Student> searchStudent(String sname, String sgender) throws SQLException { StudentDao dao = new StudentDaoImpl(); return dao.searchStudent(sname, sgender); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- javaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
- JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(1)
- JavaWeb倉(cāng)庫(kù)管理系統(tǒng)詳解
- 基于javaweb+jsp實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng)
- JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(2)
- 基于javaweb+jsp實(shí)現(xiàn)企業(yè)車(chē)輛管理系統(tǒng)
- 基于javaweb+jsp實(shí)現(xiàn)個(gè)人日記管理系統(tǒng)
- 基于javaweb+jsp實(shí)現(xiàn)企業(yè)財(cái)務(wù)記賬管理系統(tǒng)
- 基于javaweb+jsp的游泳館會(huì)員管理系統(tǒng)(附源碼)
- JavaWeb實(shí)現(xiàn)學(xué)生管理系統(tǒng)的超詳細(xì)過(guò)程
相關(guān)文章
最新IntelliJ IDEA 2021版配置 Tomcat 8.5 的詳細(xì)步驟
idea開(kāi)發(fā)工具一直是java環(huán)境最好用,很受廣大開(kāi)發(fā)者喜愛(ài),今天通過(guò)本文給大家分享最新IntelliJ IDEA 2021版配置 Tomcat 8.5 的詳細(xì)步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-06-06Hadoop+HBase+ZooKeeper分布式集群環(huán)境搭建步驟
這篇文章主要介紹了Hadoop+HBase+ZooKeeper分布式集群環(huán)境搭建,集群環(huán)境至少需要3個(gè)節(jié)點(diǎn),1個(gè)Master,2個(gè)Slave,節(jié)點(diǎn)之間局域網(wǎng)連接,可以相互ping通,本文通過(guò)實(shí)例給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Spring Security和Shiro的相同點(diǎn)與不同點(diǎn)整理
在本篇文章里小編給大家整理的是關(guān)于Spring Security和Shiro的相同不同點(diǎn)整理,需要的朋友們可以參考下。2020-02-02基于Struts2實(shí)現(xiàn)防止表單重復(fù)提交
這篇文章主要介紹了基于Struts2實(shí)現(xiàn)防止表單重復(fù)提交,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Java四種權(quán)限修飾符知識(shí)點(diǎn)詳解
在本篇文章里小編給大家分享的是關(guān)于Java四種權(quán)限修飾符知識(shí)點(diǎn)詳解內(nèi)容,需要的朋友們可以參考下。2020-05-05通過(guò)實(shí)例解析spring環(huán)繞通知原理及用法
這篇文章主要介紹了通過(guò)實(shí)例解析spring環(huán)繞通知原理及用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10