首先画出分析图

实现效果如图

项目下的包如图:


实体包

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

编码实战Web端联系人的增删改查相关推荐

  1. java修改联系人_编码实战Web端联系人的增删改查

    首先画出分析图 实现效果如图 项目下的包如图: 实体包 package com.contactSystem.entiey; public class Contact { private String ...

  2. WEB阶段7:综合练习-联系人管理系统-增删改查查询分页

    综合练习-联系人管理系统-增删改查&查询分页 回顾 能够说出过滤器的作用 解决全局乱码问题 用户权限访问控制 用户输入文本内容进行过滤 能够编写过滤器 创建一个类实现javax.servlet ...

  3. 前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查

    首页 > 技术 > 编程 > NET > 前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查 前端使用AngularJS的$res ...

  4. android中对sim卡联系人的增删改查以及监听sim卡联系数据的改变

    sim卡联系人的增删改查主要是通过ContentProvider来进行操作的,在android中对sim卡联系人操作的provider是定义在IccProvider.java这个类中的,这个类位于an ...

  5. 通过flask实现web页面简单的增删改查

    通过flask实现web页面简单的增删改查 1.后台程序falsk_web01.py #coding:utf-8from flask import Flask,render_template,requ ...

  6. Java全栈(四)web网页技术:15.书城项目实战四:管理端图书的增删改查(后台)

    1.需求澄清 管理端图书管理页面[book_manager.jsp]页面原型如下: 需要实现图书的添加.删除.修改.分页显示等操作 2.前期准备 2.1 创建数据表books create TABLE ...

  7. OpenLayers学习笔记高级篇(四、地图开发实战之地图要素的增删改查)

    一切都准备好了,现在终于可以通过ol3加载配置好的数据了.上一节中最后的预览结果,大家已经看到了,此处我们自己通过ol来实现这个预览页面,直接上代码如下: 1.加载Geoserver发布的wfs地图服 ...

  8. 对联系人进行增删改查

    我已经将联系人操作的方法进行了封装,暴露了几个重要的方法,方便以后调用. 1. public void printContactsList() // 获取到的联系人列表(用于测试用) 2. publi ...

  9. Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用

    前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WZY 一.JDBC是什么? Java Data Base Connectivity,java数据库连接, ...

最新文章

  1. html met详解转
  2. sql-labs page1 (1~20)解题过程记录
  3. CSS3属性之resize
  4. jQuery Validate 验证,校验规则写在控件中的具体例子
  5. C语言试题六十三之请编写函数fun:将s所指字符串中ascii值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
  6. 前端:CSS/08/框架
  7. 最新25个高质量PSD素材免费下载
  8. 打开模式时防止BODY滚动
  9. 转:从框架看PHP的五种境界及各自的薪资待遇(仅限于二三线城市,一线除外)...
  10. 汽车电子技术——ECU/MCU嵌入式软件开发
  11. 小米note位置服务器,小米Note
  12. 【指标异动】贡献度定量归因之法
  13. pagefile.sys 分页文件貌似不能放在移动硬盘上
  14. 阿里巴巴图库下载的在线图标显示为方框的问题
  15. MSCL超级工具类(C#),开发人员必备,开发利器
  16. importOrder
  17. Java单元测试实践-09.Mockito的Stub参数条件
  18. 如何删除outlook中的重复邮件
  19. G16、G24、G32、G36、G60
  20. 导向滤波算法 java_一种基于双通道先验和侧窗导向滤波的单幅图像去雾方法与流程...

热门文章

  1. error: gnu/stubs-32.h: No such file or directory
  2. Spring 钩子之BeanFactoryPostProcessor和BeanPostProcessor
  3. Shiro表结构设计
  4. css --- [小结]让盒子水平垂直居中的解决方案
  5. react --- 按需加载组件
  6. javascript --- XHR(XMLHttpRequet)对象
  7. 15 错误边界与使用技巧
  8. (三)Maven仓库介绍与本地仓库配置
  9. 设置UILabel可变高度(根据文本内容自动适应高度)
  10. Java的静态域以及封装性相关