編碼實戰Web端聯系人的增刪改查

首先畫出分析圖

實現效果如圖

項目下的包如圖:

?

?


實體包

package com.contactSystem.entiey;public class Contact {private String Id;private String name;private String sex;private String age;private String phone;private String qq;private String email;public String getId() {return Id;}public void setId(String id) {Id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getQq() {return qq;}public void setQq(String qq) {this.qq = qq;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "Contact [Id=" + Id + ", name=" + name + ", sex=" + sex+ ", age=" + age + ", phone=" + phone + ", qq=" + qq+ ", email=" + email + "]";}}

  XML的工具包(只是避免了代碼的重復使用,將其放進工具包中)

package com.contactSystem.util;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;import javax.management.RuntimeErrorException;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;/** xml操作的工具類*/
public class XMLUtil {//寫出一個xml文件public static void write2xml(Document doc) throws Exception{OutputStream out=new FileOutputStream("e:/contact.xml");OutputFormat format=OutputFormat.createPrettyPrint();format.setEncoding("utf-8");XMLWriter writer=new XMLWriter(out,format);writer.write(doc);writer.close();}//讀取本地xml文件的方法public static Document getDocument(){Document doc;try {doc = new SAXReader().read("e:/contact.xml");return doc;} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();throw new RuntimeException(e);}}}

  


抽象的接口

package com.contactSystem.dao;import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.util.List;import org.dom4j.DocumentException;
import com.contactSystem.entiey.Contact;public interface ContactOperate {public void addContact(Contact contact) throws Exception;public void updateContact(Contact contact) throws Exception;public void removeContact(String id) throws Exception;public Contact findContact(String id) throws Exception;public List<Contact>  allContacts();
}

  具體的實現方法和操作

package com.contactSystem.dao.daoImpl;import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;import javax.persistence.Id;import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import com.contactSystem.dao.ContactOperate;
import com.contactSystem.entiey.Contact;
import com.contactSystem.util.XMLUtil;public class Operater implements ContactOperate {@Override//添加聯系人public void addContact(Contact contact) throws Exception {// TODO Auto-generated method stubFile file=new File("e:/contact.xml");Document doc=null;Element rootElem=null;if (file.exists()) {doc=new SAXReader().read(file);rootElem=doc.getRootElement();}else {doc=DocumentHelper.createDocument();rootElem=doc.addElement("ContactList");}//開始添加個體Element element=rootElem.addElement("contact");//有系統自動生成一隨機且唯一的ID,賦給聯系人Id,系統提供了一個包UUID包String uuid=UUID.randomUUID().toString().replace("-", "");element.addAttribute("Id", uuid);element.addElement("姓名").setText(contact.getName());element.addElement("name").setText(contact.getName());element.addElement("sex").setText(contact.getSex());element.addElement("age").setText(contact.getAge());element.addElement("phone").setText(contact.getPhone());element.addElement("email").setText(contact.getEmail());element.addElement("qq").setText(contact.getQq());//寫入到本地的xml文檔中XMLUtil.write2xml(doc);}@Overridepublic void updateContact(Contact contact) throws Exception {// TODO Auto-generated method stub//通過xpath查找對應id的聯系人Document document=XMLUtil.getDocument();Element element=(Element) document.selectSingleNode("//contact[@Id='"+contact.getId()+"']");//根據標簽改文本System.out.println(element);element.element("name").setText(contact.getName());element.element("age").setText(contact.getAge());element.element("email").setText(contact.getEmail());element.element("phone").setText(contact.getPhone());element.element("sex").setText(contact.getSex());element.element("qq").setText(contact.getQq());XMLUtil.write2xml(document);}@Overridepublic void removeContact(String id) throws Exception {// TODO Auto-generated method stub//通過xpath去查找對應的contactDocument document=XMLUtil.getDocument();Element element=(Element) document.selectSingleNode("//contact[@Id='"+id+"']");/*** 如果是火狐瀏覽器,其本身有一個bug,對于一個get請求,它會重復做兩次,* 第一次會把一個唯一的id給刪除掉,但是在第二次的時候,它會繼續去刪,而這個時候查找不到,會報錯,會發生錯誤,* 為了解決這個bug,我們在這里驗證其是否為空*/if (element!=null) {element.detach();XMLUtil.write2xml(document);}}@Overridepublic Contact findContact(String id) throws Exception {// TODO Auto-generated method stubDocument document=XMLUtil.getDocument();Element e=(Element) document.selectSingleNode("//contact[@Id='"+id+"']");Contact contact=null;if (e!=null) {contact=new Contact();contact.setAge(e.elementText("age"));contact.setEmail(e.elementText("email"));contact.setId(e.attributeValue("id"));contact.setName(e.elementText("name"));contact.setPhone(e.elementText("phone"));contact.setSex(e.elementText("sex"));contact.setQq(e.elementText("qq"));}return contact;}@Overridepublic List<Contact> allContacts() {// TODO Auto-generated method stubDocument document=XMLUtil.getDocument();List<Contact> list=new ArrayList<Contact>();List<Element> conElements=(List<Element>)document.selectNodes("//contact");for (Element element : conElements) {Contact contact=new Contact();contact.setId(element.attributeValue("Id"));contact.setAge(element.elementText("age"));contact.setEmail(element.elementText("email"));contact.setName(element.elementText("name"));contact.setPhone(element.elementText("phone"));contact.setQq(element.elementText("qq"));contact.setSex(element.elementText("sex"));list.add(contact);}return list;}}

  


?

添加聯系人的html頁面

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>添加聯系人</title><style media="screen">#btn{width:40px;width: 50px;background: green;color: white;font-size:14px;}</style>
</head><body><center><h2>添加聯系人</h2></center><form action="/ContactWeb/addServlet" method="post"><table border="1" align="center"><tbody><tr><th>姓名</th><td><input type="text" name="userName" /></td></tr><tr><th>年齡</th><td><input type="text" name="age" /></td></tr><tr><th>性別</th><td><input type="radio" name="sex"  value="男"/>男 ?<input type="radio" name="sex" value="女" />女</td></tr><tr><th>電話</th><td><input type="text" name="phone" /></td></tr><tr><th>QQ</th><td><input type="text" name="qq" /></td></tr><tr><th>郵箱</th><td><input type="text" name="email" /></td></tr><tr><td colspan="3" align="center"><input type="submit"  value="提交" id="btn"/></td></tr></tbody></table></form>
</body></html>

  


接下來則是最重要的servlet(顯示首頁,所有聯系人)

package com.contactSystem.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.contactSystem.dao.daoImpl.Operater;
import com.contactSystem.entiey.Contact;public class Index extends HttpServlet {/*** 顯示所有聯系人的邏輯方式*/private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");Operater operater=new Operater();List<Contact> contacts=operater.allContacts();PrintWriter writer=response.getWriter();/*** shift+alt+A ——>區域選擇 * 正則表達式:“."表示任意字符,"*"表示多個字符*             “/1”表示一行代表匹配一行內容*/String html="";html+= "<!DOCTYPE html>";html+= "<html>";html+= "";html+= "<head>";html+= "    <meta charset='utf-8'>";html+= "    <title>查詢所有聯系人</title>";html+= "    <style media='screen'>";html+= "        table td {";html+= "            text-align: center;";html+= "        }";html+= "";html+= "        table {";html+= "            border-collapse: collapse;";html+= "        }";html+= "    </style>";html+= "</head>";html+= "";html+= "<body>";html+= "    <center>";html+= "        <h2>查詢所有聯系人</h2>";html+= "    </center>";html+= "    <table border='1' align='center'>";html+= "        <tbody>";html+= "            <thead>";html+= "                <th>編號</th>";html+= "                <th>姓名</th>";html+= "                <th>性別</th>";html+= "                <th>年齡</th>";html+= "                <th>電話</th>";html+= "                <th>QQ</th>";html+= "                <th>郵箱</th>";html+= "                <th>操作</th>";html+= "            </thead>";html+= "            ";html+= "            <tr>";if (contacts!=null) {for (Contact contact : contacts) {html+= "                <td>"+contact.getId()+"</td>";html+= "                <td>"+contact.getName()+"</td>";html+= "                <td>"+contact.getSex()+"</td>";html+= "                <td>"+contact.getAge()+"</td>";html+= "                <td>"+contact.getPhone()+"</td>";html+= "                <td>"+contact.getQq()+"</td>";html+= "                <td>"+contact.getEmail()+"</td>";html+= "                <td><a href='"+request.getContextPath()+"/FindIdServlet?id="+contact.getId()+"'>修改</a>??<a href='"+request.getContextPath()+"/DeleteServlet?id="+contact.getId()+"'>刪除</a></td>";html+= "            </tr>";}}html+= "            <tr>";html+= "                <td colspan='8'>";html+= "                    <a href='"+request.getContextPath()+"/add.html'''>添加聯系人</a>";html+= "                </td>";html+= "            </tr>";html+= "        </tbody>";html+= "    </table>";html+= "</body>";html+= "";html+= "</html>";writer.write(html);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}}

  添加聯系人的servlet

package com.contactSystem.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.contactSystem.dao.daoImpl.Operater;
import com.contactSystem.entiey.Contact;public class addServlet extends HttpServlet {/*** 處理添加聯系人的邏輯*/private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");String userName=request.getParameter("userName");String age=request.getParameter("age");String sex=request.getParameter("sex");String phone=request.getParameter("phone");String qq=request.getParameter("qq");String email=request.getParameter("email");Operater operater=new Operater();Contact contact=new Contact();contact.setName(userName);contact.setAge(age);contact.setSex(sex);contact.setPhone(phone);contact.setQq(qq);contact.setEmail(email);try {operater.addContact(contact);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}response.sendRedirect(request.getContextPath()+"/Index");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}}

 修改聯系人,根據查找到的聯系人,顯示在其上面如圖(根據顯示的首頁顯示得內容為本頁面的默認值)

首先是要去查找這個聯系人的信息,即FindIdServlet

package com.contactSystem.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.contactSystem.dao.daoImpl.Operater;
import com.contactSystem.entiey.Contact;public class FindIdServlet extends HttpServlet {/*** 修改聯系人邏輯*/private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter writer=response.getWriter();Operater operater=new Operater();String id=request.getParameter("id");Contact contact=null;try {contact=operater.findContact(id);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}String html="";html += "<!DOCTYPE html>";html += "<html>";html += "<head>";html += "    <meta charset='utf-8'>";html += "    <title>添加聯系人</title>";html += "    <style media='screen'>";html += "      #btn{";html += "        width:40px;";html += "        width: 50px;";html += "        background: green;";html += "        color: white;";html += "        font-size:14px;";html += "      }";html += "    </style>";html += "</head>";html += "";html += "<body>";html += "    <center>";html += "        <h2>修改聯系人</h2>";html += "    </center>";html += "    <form action='"+request.getContextPath()+"/UpdateServlet' method='post'>";html +="<input type='hidden' name='id' value='"+id+"' />";html += "        <table border='1' align='center'>";html += "            <tbody>";html += "                <tr>";html += "                    <th>姓名</th>";html += "                    <td><input type='text' name='userName' value='"+contact.getName()+"'/></td>";html += "                </tr>";html += "                <tr>";html += "                    <th>年齡</th>";html += "                    <td><input type='text' name='age' value='"+contact.getAge()+"' /></td>";html += "                </tr>";html += "                <tr>";html += "                  <th>性別</th>";html += "                  <td>";if (contact.getSex().equals("男")) {html += "                    <input type='radio' name='sex'  value='男'    checked='checked'/>男 ?";html += "                    <input type='radio' name='sex' value='女' />女";}else {html += "                    <input type='radio' name='sex'  value='男'    />男 ?";html += "                    <input type='radio' name='sex' value='女' checked='checked' />女";}html += "                  </td>";html += "                </tr>";html += "                <tr>";html += "                    <th>電話</th>";html += "                    <td><input type='text' name='phone' value='"+contact.getPhone()+"' /></td>";html += "                </tr>";html += "                <tr>";html += "                    <th>QQ</th>";html += "                    <td><input type='text' name='qq' value='"+contact.getQq()+"'  /></td>";html += "                </tr>";html += "                <tr>";html += "                    <th>郵箱</th>";html += "                    <td><input type='text' name='email' value='"+contact.getEmail()+"' /></td>";html += "                </tr>";html += "                <tr>";html += "                  <td colspan='3' align='center'>";html += "                    <input type='submit'  value='提交' id='btn'/>";html += "                  </td>";html += "                </tr>";html += "            </tbody>";html += "        </table>";html += "    </form>";html += "</body>";html += "";html += "</html>";writer.write(html);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}}

  然后則是根據提交的內容去修改本地的聯系人

package com.contactSystem.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.contactSystem.dao.daoImpl.Operater;
import com.contactSystem.entiey.Contact;public class UpdateServlet extends HttpServlet {/*** 將修改后的數據提交*/private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");request.setCharacterEncoding("utf-8");String userName=request.getParameter("userName");System.out.println(userName);String age=request.getParameter("age");String sex=request.getParameter("sex");String phone=request.getParameter("phone");String qq=request.getParameter("qq");String email=request.getParameter("email");String id=request.getParameter("id");Operater operater=new Operater();Contact contact=new Contact();contact.setId(id);contact.setName(userName);contact.setAge(age);contact.setSex(sex);contact.setPhone(phone);contact.setQq(qq);contact.setEmail(email);try {operater.updateContact(contact);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}response.sendRedirect(request.getContextPath()+"/Index");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}}

  最后則是刪除聯系人,不過要注意的是:火狐瀏覽器如果判斷是get請求的話,會向服務器發送兩次請求,可能會導致一些問題,其他的瀏覽器不會出出現該問題

package com.contactSystem.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.contactSystem.dao.daoImpl.Operater;public class DeleteServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");String id=request.getParameter("id");Operater operater=new Operater();try {operater.removeContact(id);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}response.sendRedirect(request.getContextPath()+"/Index");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}
}

  

?最后:不用jsp去寫,就用servlet去寫html真的好累,還是好好學jsp吧。

?

轉載于:https://www.cnblogs.com/helloworldcode/p/6041130.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270535.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270535.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270535.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

選型java程序_Java程序員自動化指南

一、背景在Java web開發中&#xff0c;雖然Spring boot已經幫助我們簡化了很多工作&#xff0c;但項目中龐雜的業務仍然需要自己去編寫較多的 entity&#xff0c;vo&#xff0c;Mapper&#xff0c;Service&#xff0c; Controller 代碼等&#xff0c;那么我們有沒有什么辦法來簡…

網絡知識:光貓光纖寬帶故障排查筆記

在日常上網過程中出現的故障&#xff0c;很大一部分是由于線路和光貓故障引起&#xff0c;現簡單介紹一下&#xff0c;如何處理這些故障。 現象一&#xff1a;不能上網&#xff08;網絡中斷&#xff09; 故障排查&#xff1a; 1、確認您的光貓信號燈是否正常&#xff1a; ①電源…

treeview自動從表中添加標題和列值做目錄的方法2

treeview自動從表中添加標題和列值做目錄的方法2&#xff0c;該方法是借鑒萬一老師的 http://www.cnblogs.com/del/archive/2008/05/15/1114450.html 首先界面上添加treeview組件&#xff0c;然后在treeview的onchange事件里這樣寫&#xff1a; 因為要用到定義個過程&#xff0…

Linux常用運維命令筆記

今天給大家整理一下Linux常用的命令&#xff0c;希望對大家能有所幫助&#xff01;MYSQL相關1、查看mysql版本status; select version()2、 mysql啟動命令#01 使用 service 啟動&#xff1a;service mysqld start (5.0版本) service mysql start (5.5.7版本) #02 使用 mysqld 腳…

java 異常 過濾器_在過濾器Filter中拋出一個全局異常可以捕獲的異常

1、創建自定義異常public class TokenException extends RuntimeException {private static final long serialVersionUID 1L;private Integer errCode;private String message;public TokenException(Integer errCode){this.errCode errCode;this.message ExceptionEnum.ge…

php對二維數據進行排序

PHP一維數組的排序可以用sort()&#xff0c;asort(),arsort()等函數&#xff0c;但是PHP二維數組的排序需要自定義。方法一&#xff1a;(經驗證&#xff0c;成功) 作用&#xff1a;對二維數組進行指定key排序參數&#xff1a;$arr 二維數組 &#xff0c;$shortKey 需要排序的列…

電腦知識:如何將舊電腦文件遷移到新電腦中,包括操作系統

將舊電腦中的文件和操作系統全部轉移到新電腦中&#xff0c;一般可以借助分區助手、磁盤精靈或者GHOST等磁盤工具。為了提高數據傳輸速度&#xff0c;可以將舊電腦的硬盤拆下安裝到新電腦&#xff0c;然后使用PE工具盤引導電腦進入PE系統中&#xff0c;將舊電腦硬盤中的數據借助…

判斷是否為自然數java_java判斷輸入的是否是自然數

/** * 編寫一個Java應用程序的方法&#xff0c;該方法接收從鍵盤輸入的自然數: * 如果輸入的數不是自然數。拋出異常&#xff0c;提示“請正確輸入數字!”&#xff0c;然后繼續等待用戶輸入。 * 如果輸入的數為正數,則顯示這個數,程序繼續運行。 * 如果輸入為負數&#xff…

瀏覽器插件:一款解決谷歌瀏覽器吃內存神器插件

Chrome瀏覽器是大部分開發者必備的瀏覽器&#xff0c;它的主要有點有便于調試、啟動快、無廣告。但是谷歌瀏覽器也有自己的缺點&#xff0c;Chrome瀏覽器對系統內存的占用太大了&#xff0c;每打開一個頁面都會占用系統內存。如果你的瀏覽器一下子打開幾十個網頁&#xff0c;不…

java stdin 和stdout_對stdin,stdout 和STDOUT_FILENO,STDIN_FILENO的學習

在unix系統調用中,標準輸入描述字用stdin,標準輸出用stdout,標準出錯用stderr表示,但在一些調用函數,引用了STDIN_FILENO表示標準輸入才,同樣,標準出入用STDOUT_FILENO,標準出錯用STDERR_FILENO.他們的區別&#xff1a;stdin等是FILE *類型&#xff0c;屬于標準I/O&#xff0c;…

java多線程之hashmap concurrenthashmap的狀態同步

最近在高并發的系統中發現&#xff0c;concurrenthashmap除了大家熟知的避免循環期間發生ConcurrentModificationException異常外&#xff0c;還有重要的一點是Retrievals reflect the results of the most recently completed update operations holding upon their onset&…

電腦軟件:推薦兩款好用的文件重復檢測軟件

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

APP技巧:微信中這6個設置建議關閉,可以防止個人信息或將全暴露

目錄 01、 開啟添加好友驗證功能 02、 添加“我”的方式 03、不讓他&#xff08;她&#xff09;看 04、允許陌生人查看10條朋友圈 05、 設置查看朋友圈范圍 06、微信授權管理 相信提到微信&#xff0c;大家基本每天都在用&#xff0c;如今微信已經成為了我們社交軟件中的第一大…

lessc_Less 命令行用法

使用命令行&#xff0c;我們可以將 .less 文件編譯為 .css 。安裝lessc以供全局使用以下命令用于使用npm(node package manager)安裝lessc&#xff0c;以使less在全局可用。npm install less -g您還可以在包名稱后面添加特定版本。 例如: npm install less1.6.2 -g安裝Lessc用于…

硬件知識:內存單根16G和兩根8G差別有多大?

關于內存單根16G和兩根8G的差別&#xff0c;小編覺得這些事實&#xff0c;你得知道&#xff01; 論單根16G和兩根8G的區別&#xff01; 內存單通道和雙通道&#xff0c;大家都有聽過吧&#xff01; 理解起來很簡單&#xff0c;一個單通道&#xff0c;只能進行單向傳輸數據&…