欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(3)

 更新時(shí)間:2021年09月10日 11:55:26   作者:笑-_-笑  
這篇文章主要為大家詳細(xì)介紹了JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)第三篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文接著第二篇,繼續(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"/>
     &nbsp;&nbsp;&nbsp;
     按性別查詢:<select name="sgender">
         <option value="">--請(qǐng)選擇--
         <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>

實(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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java工作隊(duì)列代碼詳解

    Java工作隊(duì)列代碼詳解

    這篇文章主要介紹了Java工作隊(duì)列代碼詳解,涉及Round-robin 轉(zhuǎn)發(fā),消息應(yīng)答(messageacknowledgments),消息持久化(Messagedurability)等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 最新IntelliJ IDEA 2021版配置 Tomcat 8.5 的詳細(xì)步驟

    最新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-06
  • Hadoop+HBase+ZooKeeper分布式集群環(huán)境搭建步驟

    Hadoop+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-04
  • Spring Security和Shiro的相同點(diǎn)與不同點(diǎn)整理

    Spring 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ù)提交

    這篇文章主要介紹了基于Struts2實(shí)現(xiàn)防止表單重復(fù)提交,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java代理模式的示例詳解

    Java代理模式的示例詳解

    代理模式(Proxy?Parttern)為一個(gè)對(duì)象提供一個(gè)替身,來(lái)控制這個(gè)對(duì)象的訪問(wèn),即通過(guò)代理對(duì)象來(lái)訪問(wèn)目標(biāo)對(duì)象。本文將通過(guò)示例詳細(xì)講解一下這個(gè)模式,需要的可以參考一下
    2022-08-08
  • Java四種權(quán)限修飾符知識(shí)點(diǎn)詳解

    Java四種權(quán)限修飾符知識(shí)點(diǎn)詳解

    在本篇文章里小編給大家分享的是關(guān)于Java四種權(quán)限修飾符知識(shí)點(diǎn)詳解內(nèi)容,需要的朋友們可以參考下。
    2020-05-05
  • RocketMQ延遲消息超詳細(xì)講解

    RocketMQ延遲消息超詳細(xì)講解

    延時(shí)消息是指發(fā)送到 RocketMQ 后不會(huì)馬上被消費(fèi)者拉取到,而是等待固定的時(shí)間,才能被消費(fèi)者拉取到。延時(shí)消息的使用場(chǎng)景很多,比如電商場(chǎng)景下關(guān)閉超時(shí)未支付的訂單,某些場(chǎng)景下需要在固定時(shí)間后發(fā)送提示消息
    2023-02-02
  • 通過(guò)實(shí)例解析spring環(huán)繞通知原理及用法

    通過(guò)實(shí)例解析spring環(huán)繞通知原理及用法

    這篇文章主要介紹了通過(guò)實(shí)例解析spring環(huán)繞通知原理及用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java設(shè)計(jì)模式之策略模式定義與用法詳解

    Java設(shè)計(jì)模式之策略模式定義與用法詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之策略模式定義與用法,結(jié)合具體實(shí)例形式詳細(xì)分析了Java策略模式的概念、原理、定義及相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02

最新評(píng)論