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

本文展示了如何使用Java实现Web端联系人的增删改查功能。通过DOM4J处理XML文件,创建实体类、XML工具类、接口、DAO实现类以及Servlet来完成操作。详细代码包括添加、更新、删除联系人以及查询所有联系人的功能实现。
摘要由CSDN通过智能技术生成

首先画出分析图

c7735fdab753eff4613b79c6a5c2e22d.png实现效果如图

d9b7721a2c45fab112a0aca221c841ea.png

项目下的包如图:

5d3a8bf91fb50b197f8689b26e424b86.png

实体包

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;

}

@Override

public 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 block

e.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 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 stub

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

}

@Override

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

}

@Override

public void removeContact(String id) throws Exception {

// TODO Auto-generated method stub

//通过xpath去查找对应的contact

Document document=XMLUtil.getDocument();

Element element=(Element) document.selectSingleNode("//contact[@Id='"+id+"']");

/**

* 如果是火狐浏览器,其本身有一个bug,对于一个get请求,它会重复做两次,

* 第一次会把一个唯一的id给删除掉,但是在第二次的时候,它会继续去删,而这个时候查找不到,会报错,会发生错误,

* 为了解决这个bug,我们在这里验证其是否为空

*/

if (element!=null) {

element.detach();

XMLUtil.write2xml(document);

}

}

@Override

public Contact findContact(String id) throws Exception {

// TODO Auto-generated method stub

Document 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;

}

@Override

public List allContacts() {

// TODO Auto-generated method stub

Document document=XMLUtil.getDocument();

List list=new ArrayList();

List conElements=(List)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页面

添加联系人

#btn{

width:40px;

width: 50px;

background: green;

color: white;

font-size:14px;

}

添加联系人

姓名
年龄
性别

电话
QQ
邮箱

接下来则是最重要的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 contacts=operater.allContacts();

PrintWriter writer=response.getWriter();

/**

* shift+alt+A ——>区域选择

* 正则表达式:“."表示任意字符,"*"表示多个字符

* “/1”表示一行代表匹配一行内容

*/

String html="";

html+= "";

html+= "";

html+= "";

html+= "

";

html+= " ";

html+= "

查询所有联系人";

html+= "

html+= " table td {";

html+= " text-align: center;";

html+= " }";

html+= "";

html+= " table {";

html+= " border-collapse: collapse;";

html+= " }";

html+= " ";

html+= "";

html+= "";

html+= "

";

html+= "

";

html+= "

查询所有联系人

";

html+= "

";

html+= "

html+= "

";

html+= " ";

html+= "

编号";

html+= "

姓名";

html+= "

性别";

html+= "

年龄";

html+= "

电话";

html+= "

QQ";

html+= "

邮箱";

html+= "

操作";

html+= "

";

html+= " ";

html+= "

";

if (contacts!=null) {

for (Contact contact : contacts) {

html+= "

"+contact.getId()+"";

html+= "

"+contact.getName()+"";

html+= "

"+contact.getSex()+"";

html+= "

"+contact.getAge()+"";

html+= "

"+contact.getPhone()+"";

html+= "

"+contact.getQq()+"";

html+= "

"+contact.getEmail()+"";

html+= "

修改   删除";

html+= "

";

}

}

html+= "

";

html+= "

";

html+= " 添加联系人";

html+= "

";

html+= "

";

html+= "

";

html+= "

";

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 block

e.printStackTrace();

}

response.sendRedirect(request.getContextPath()+"/Index");

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doGet(request, response);

}

}

修改联系人,根据查找到的联系人,显示在其上面如图(根据显示的首页显示得内容为本页面的默认值)

7cf6c46251da5f2ed60500ac0690c1f0.png

首先是要去查找这个联系人的信息,即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 block

e.printStackTrace();

}

String html="";

html += "";

html += "";

html += "

";

html += " ";

html += "

添加联系人";

html += "

html += " #btn{";

html += " width:40px;";

html += " width: 50px;";

html += " background: green;";

html += " color: white;";

html += " font-size:14px;";

html += " }";

html += " ";

html += "";

html += "";

html += "

";

html += "

";

html += "

修改联系人

";

html += "

";

html += "

";

html +="";

html += "

html += "

";

html += "

";

html += "

姓名";

html += "

";

html += "

";

html += "

";

html += "

年龄";

html += "

";

html += "

";

html += "

";

html += "

性别";

html += "

";

if (contact.getSex().equals("男")) {

html += " 男  ";

html += " 女";

}else {

html += " 男  ";

html += " 女";

}

html += "

";

html += "

";

html += "

";

html += "

电话";

html += "

";

html += "

";

html += "

";

html += "

QQ";

html += "

";

html += "

";

html += "

";

html += "

邮箱";

html += "

";

html += "

";

html += "

";

html += "

";

html += " ";

html += "

";

html += "

";

html += "

";

html += "

";

html += "

";

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 block

e.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 block

e.printStackTrace();

}

response.sendRedirect(request.getContextPath()+"/Index");

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doGet(request, response);

}

}

最后:不用jsp去写,就用servlet去写html真的好累,还是好好学jsp吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值