设计一个通讯录主页面

 <!DOCTYPE html>
<html>
<head>
<title>电话本首页</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body>
<table align="center" border="1">
<form>
<center><h1>电话簿</h1></center>
<tr>
<td>1.<a href="/myPhoneBook/PhoneList"><input type="button" value="查询联系人"/></a></td>
</tr>
<tr>
<td>2.<a href="add.html"><input type="button" value="添加联系人"/></a></td>
</tr>
<tr>
<td>3.<a href="update.html"><input type="button" value="修改联系人"/></a></td>
</tr>
<tr>
<td>4.<a href="/myPhoneBook/Delete"><input type="button" value="删除联系人"/></a></td>
</tr> </form>
</table>
</body>
</html>

1.添加联系人:

1.1保存页面

<!DOCTYPE html>
<html>
<head>
<title>添加联系人页面</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body>
<form action="/myPhoneBook/Add" method="POST">
<table cellpadding="10" border="1" align="center">
<tr>
<td>编号</td>
<td><input type="text" name="id"/></td>
</tr>
<tr>
<td>姓名</td>
<td><input type="text" name="name"/></td>
</tr>
<tr>
<td>年龄</td>
<td><input type="text" name="age"/></td>
</tr>
<tr>
<td>性别</td>
<td>
男<input type="radio" checked="checked" name="gender" value="男"/>
女<input type="radio" name="gender" value="女"/>
</td>
</tr>
<tr>
<td>电话</td>
<td><input type="text" name="phone"/></td>
</tr>
<tr>
<td>QQ</td>
<td><input type="text" name="qq"/></td>
</tr>
<tr>
<td>邮箱</td>
<td><input type="text" name="mail"/></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="添加联系人"/><a href="index.html"></a></td>
</tr>
</table>
</form>
</body>
</html>

1.2保存逻辑:

AddServlet  (接收页面数据(getParameter()),使用dom4j保存到xml)修改联系人(完成)

 public class Add extends HttpServlet {

     public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8"); String id = request.getParameter("id");
String name = request.getParameter("name");
String age = request.getParameter("age");
String gender = request.getParameter("gender");
String phone = request.getParameter("phone");
String qq = request.getParameter("qq");
String mail = request.getParameter("mail"); try {
write(id,name,age,gender,phone,qq,mail);
} catch (DocumentException e) {
e.printStackTrace();
} response.getWriter().write("<font color=\"red\" size=\"6px\">添加成功</font><a href=\"index.html\">返回首页</a>");
} public void write(String id, String name, String age, String gender,
String phone, String qq, String mail) throws IOException, DocumentException {
//关联或者创建一个xml文档
// File file = new File("h:/testdemo/jiuye/myPhoneBook/Person.xml");
File file = new File("/Person.xml");
//判断xml文档是否存在
if(!file.exists()){
//不存在,创建一个文档 ,并且添加根标签
Document doc = DocumentHelper.createDocument();
Element rootElem = doc.addElement("Persons");
save(file,doc);
}
//存在,读取这个文档根标签
Document doc = new SAXReader().read(file);
Element rootElem = doc.getRootElement(); Element perElem = rootElem.addElement("person"); perElem.addElement("id").setText(id); perElem.addElement("name").setText(name); perElem.addElement("age").setText(age); perElem.addElement("gender").setText(gender); perElem.addElement("phone").setText(phone); perElem.addElement("qq").setText(qq); perElem.addElement("mail").setText(mail);
save(file, doc);
} public void save(File file, Document doc) throws IOException {
//将Document对象写入xml文档
FileOutputStream out = new FileOutputStream(file);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
} }

2.修改联系人

2.1修改页面

 <!DOCTYPE html>
<html>
<head>
<title>修改联系人页面</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body>
<form action="/myPhoneBook/Update" method="POST">
<center><h1>修改联系人</h1></center>
<table cellpadding="10" border="1" align="center">
<tr>
<td>需要修改人编号</td>
<td><input type="text" name="id_1"/></td>
</tr>
<tr>
<td>编号</td>
<td><input type="text" name="id"/></td>
</tr>
<tr>
<td>姓名</td>
<td><input type="text" name="name"/></td>
</tr>
<tr>
<td>年龄</td>
<td><input type="text" name="age"/></td>
</tr>
<tr>
<td>性别</td>
<td>
男<input type="radio" checked="checked" name="gender" value="男"/>
女<input type="radio" name="gender" value="女"/>
</td>
</tr>
<tr>
<td>电话</td>
<td><input type="text" name="phone"/></td>
</tr>
<tr>
<td>QQ</td>
<td><input type="text" name="qq"/></td>
</tr>
<tr>
<td>邮箱</td>
<td><input type="text" name="mail"/></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="确认修改"/></td>
</tr>
</table>
</form>
</body>
</html>

2.2修改逻辑

UpdateServlet ( 接收页面数据,把数据保存xml )

 public class Update extends HttpServlet {

     public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String id_1 = request.getParameter("id_1");
String id = request.getParameter("id");
String name = request.getParameter("name");
String age = request.getParameter("age");
String gender = request.getParameter("gender");
String phone = request.getParameter("phone");
String qq = request.getParameter("qq");
String mail = request.getParameter("mail"); try {
update(id_1,id,name,age,gender,phone,qq,mail,response);
} catch (Exception e) {
e.printStackTrace();
}
} public void update(String id_1, String id, String name, String age,
String gender, String phone, String qq, String mail,
HttpServletResponse response) throws Exception { response.setContentType("text/html;charset=utf-8");
//关联或者创建一个xml文档
// File file = new File("h:/testdemo/jiuye/myPhoneBook/Person.xml");
File file = new File("/Person.xml");
//判断xml文档是否存在
Document doc = new SAXReader().read(file);
Element rootElem = doc.getRootElement(); Iterator<Element> perIt = rootElem.elementIterator("person");
while (perIt.hasNext()) {
Element idEle = perIt.next().element("id");
if(id_1.equals(idEle.getText())){
//得到对应ID的父节点
Element parent = idEle.getParent();
//根据父节点修改子节点的文本
parent.element("id").setText(id);
parent.element("name").setText(name);
parent.element("age").setText(age);
parent.element("gender").setText(gender);
parent.element("phone").setText(phone);
parent.element("qq").setText(qq);
parent.element("mail").setText(mail);
response.getWriter().write("<font color=\"red\" size=\"6px\">修改成功</font><a href=\"index.html\">返回首页</a>");
save(file, doc);
}
}
} private void save(File file, Document doc) throws FileNotFoundException,
UnsupportedEncodingException, IOException {
//将Document对象写入xml文档
FileOutputStream out = new FileOutputStream(file);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
} }

3.删除联系人:

3.1删除逻辑:

 public class Delete extends HttpServlet {

     public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//创建一个删除页面
try {
show(response);
} catch (Exception e) {
e.printStackTrace();
} request.setCharacterEncoding("utf-8");
//获取要删除的联系人的ID
String temp = request.getParameter("choose");
if(temp!=null){
int choose = Integer.parseInt(temp);
try {
//进行删除操作
remove(choose,response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
} public void remove(int choose, HttpServletResponse response) throws Exception { //关联或者创建一个xml文档
// File file = new File("h:/testdemo/jiuye/myPhoneBook/Person.xml");
File file = new File("/Person.xml");
Document doc = new SAXReader().read(file);
Element rootElem = doc.getRootElement(); Element perElem = (Element) rootElem.elements().get(choose-1);
perElem.detach();
save(file,doc);
response.getWriter().write("<center><font color=\"red\" size=\"6px\">删除成功</font><a href=\"index.html\">返回首页</a></center>");
} public void save(File file, Document doc) throws Exception {
//将Document对象写入xml文档
FileOutputStream out = new FileOutputStream(file);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
} public void show(HttpServletResponse response) throws Exception { response.setContentType("text/html;charset=utf-8"); // File file = new File("h:/testdemo/jiuye/myPhoneBook/Person.xml");
File file = new File("/Person.xml");
response.getWriter().write("<html><head><title>联系人页面</title><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"></head><body><center><h1>联系人列表</h1></center><form action=\"/myPhoneBook/Delete\" method=\"POST\"><table cellpadding=\"10\" border=\"1\" align=\"center\"><tr align=\"center\"><td></td><td>编号</td><td>姓名</td><td>年龄</td><td>性别</td><td>电话</td><td>QQ</td><td>邮箱</td></tr>");
Document doc = new SAXReader().read(file);
Element rootElem = doc.getRootElement(); Iterator<Element> it = rootElem.elementIterator("person");
int count = 1;
while(it.hasNext()){
List<Element> list = it.next().elements();
response.getWriter().write("<tr align=\"center\"><td>"+count+".<input type=\"radio\" name=\"choose\" value=\""+count+"\"/></td>");
for (Element elem : list) {
response.getWriter().write("<td>"+elem.getText()+"</td>");
}
response.getWriter().write("</tr>");
count++;
}
response.getWriter().write("<tr><td colspan=\"8\" align=\"center\"><input type=\"submit\" value=\"删除联系人\"/><a href=\"index.html\">回到首页</a></td></tr></table></form>");
} }

4.显示联系人列表

public class PhoneList extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { try {
showList(response);
} catch (Exception e) {
e.printStackTrace();
}
} public void showList(HttpServletResponse response) throws Exception { response.setContentType("text/html;charset=utf-8"); // File file = new File("h:/testdemo/jiuye/myPhoneBook/Person.xml");
File file = new File("/Person.xml"); response.getWriter().write("<html><head><title>联系人页面</title><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"></head><body><center><h1>联系人列表</h1></center><table cellpadding=\"10\" border=\"1\" align=\"center\"><tr align=\"center\"><td>编号</td><td>姓名</td><td>年龄</td><td>性别</td><td>电话</td><td>QQ</td><td>邮箱</td></tr>");
if(!(file.exists())){
Document doc = DocumentHelper.createDocument();
Element rootElem = doc.addElement("Persons");
save(file,doc);
}
Document doc = new SAXReader().read(file);
Element rootElem = doc.getRootElement(); Iterator<Element> it = rootElem.elementIterator("person");
while(it.hasNext()){
List<Element> list = it.next().elements();
response.getWriter().write("<tr align=\"center\">");
for (Element elem : list) {
response.getWriter().write("<td>"+elem.getText()+"</td>");
}
response.getWriter().write("</tr>");
}
response.getWriter().write("</table><center><a href=\"index.html\">回到首页</a> <a href=\"add.html\">添加联系人</a> <a href=\"/myPhoneBook/Delete\">删除联系人</a></center>");
}
public void save(File file, Document doc) throws IOException {
//将Document对象写入xml文档
FileOutputStream out = new FileOutputStream(file);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
} }

<项目><day12>通讯录(自己做的)的更多相关文章

  1. <项目><day12>通讯录(视频)

    1 需求分析(需求分析师) 功能分析: 1)添加联系人 2)修改联系人 3)删除联系人 4)查询所有联系人 2 需求设计(系统分析师/架构师/资深开发人员) 2.1设计实体(抽象实体) 联系人实体: ...

  2. Python之路,Day12 - 那就做个堡垒机吧

    Python之路,Day12 - 那就做个堡垒机吧   本节内容 项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多 ...

  3. 看完你也能独立负责项目!产品经理做APP从头到尾的所有工作流程详解!

    (一)项目启动前 从事产品的工作一年多,但自己一直苦于这样或者那样的困惑,很多人想要从事产品,或者老板自己创业要亲自承担产品一职,但他们对产品这个岗位的认识却不明晰,有的以为是纯粹的画原型,有的是以为 ...

  4. 实战项目:通讯录&nbsp;UI—第十一天

     1.推出视图的两种方式:  1.通过导航控制器push到下一个界面,使用pop返回到上一个界面 2.通过模态的形式推出视图,不需要依赖于导航控制器,通过使用present到下一个界面,通过dismi ...

  5. 在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)

    项目中需要搜索, 所以从零开始学习大家都在用的搜索神器 elasiticsearch. 刚开始 google 的时候, 搜到好多经验贴和视频(中文的, 英文的), 但是由于是第一次接触, 一点概念都没 ...

  6. 如何学习JavaEE,项目又该如何做?

    本文主要分为三个部分: 如何学习java基础 如何学习javaEE 你关心的项目问题 01 java基础学习 建议初学者看视频学习,不推荐看书.入门视频选择非常重要,最好是通俗易懂.深入浅出的教学视频 ...

  7. 【spring】在spring cloud项目中使用@ControllerAdvice做自定义异常拦截,无效 解决原因

    之前在spring boot服务中使用@ControllerAdvice做自定义异常拦截,完全没有问题!!! GitHub源码地址: 但是现在在spring cloud中使用@ControllerAd ...

  8. iOS项目 -- 模仿花椒直播做的第二层界面完整版

    ,项目开始做了,好遗憾的是,花椒app有更新了版本,

  9. 在Centos7中创建.net core 项目,并用Apache做代理服务器部署.net core项目

    这一篇实例记录一次用Centos7创建并部署.net core项目的过程,希望能帮到用到的小伙伴. Kestrel 是 ASP.NET Core 项目模板中包括的默认 Web 服务器,Kestrel可 ...

随机推荐

  1. 洛谷 P2912 [USACO08OCT]牧场散步Pasture Walking

    题目描述 The N cows (2 <= N <= 1,000) conveniently numbered 1..N are grazing among the N pastures ...

  2. varchar2(100 char)是什么意思

    最佳答案   varchar2(100 char)最长可以插入100个任意字符而varchar2(100)最长可以插入100个英文字符

  3. vue >>> 编译失败问题 loader 待解决( iview vue脚手架生成)

    vue >>> 编译失败问题 loader 待解决 用vue iview 脚手架 来一次试试~

  4. 如何快速上手基础的CSS3动画

    前言 说起CSS3动画,就必须说说 transform,translate,transition,animation这4个属性,transform主要定义元素的动作,比如旋转.倾斜.位移等,trans ...

  5. 2019天梯赛练习题(L1专项练习)

    7-1 水仙花数 (20 分) 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身.例如:1. 本题要求编写程序,计算所有N位水仙花数. 输入样例: 3 输出样例: 153 ...

  6. nginx 获取真实ip

    使用阿里云SLB,无法获取真实ip问题 官方给出的是如下用法,需要安装模块,大体上是没有错的,但是比较模糊,实际操作中可能会踩坑,所以参考学习即可,不必照搬.(那个http_realip_module ...

  7. 14. PARAMETERS

    14. PARAMETERS PARAMETERS表提供有关存储例程(存储过程和存储函数)的参数以及存储函数的返回值的信息. PARAMETERS表不包含内置SQL函数或用户定义函数(UDF). 参数 ...

  8. Linux内核学习总览

    断断续续学习操作系统已经有大半年时间了,一直想系统地梳理一下. 正好借助<深入Linux内核架构> (Wolfgang Manuere 著,郭旭 译)汇总一下. 首先基础框架篇,Linux ...

  9. 几个非常实用的JQuery代码片段

    jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多).jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用). ...

  10. Mybatis中实体类属性和数据列之间映射的四种办法

    http://blog.csdn.net/lmy86263/article/details/53150091 Mybatis不像hibernate中那么自动化,通过@Column注解或者直接使用实体类 ...