设计一个通讯录主页面

 <!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. Web服务器安全设置

    Web服务器安全方面一直重视程度不够,是各种网站经常被黑的主要原因.下面笔者总结了一下关于怎样保证Web服务器安全的措施,希望能给那些服务器尚存在漏洞的用户提供一些帮助. 本文主要以Windows s ...

  2. 洛谷 P1006 传纸条

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...

  3. nodejs,python,sublime和Eclipse的包管理器

    Python的包管理器叫pip. 首先安装Python运行环境Python 3.7.0:https://www.python.org/downloads/release/python-370/ Pyt ...

  4. 初识WEBGL

    WEBGL (全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一 ...

  5. 主成分分析、因子分析、ICA(未完成)

    并且SVD分解也适用于一般的矩阵. 主成分分析可以简单的总结成一句话:数据的压缩和解释.常被用来寻找判断某种事物或现象的综合指标,并且给综合指标所包含的信息以适当的解释.在实际的应用过程中,主成分分析 ...

  6. 最短路 || POJ 1797 Heavy Transportation

    Background Hugo Heavy is happy. After the breakdown of the Cargolifter project he can now expand bus ...

  7. 服务器禁用ping

    linux禁ping.这里操作的是centos6.5内核参数禁ping禁用ping #echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all启用ping ...

  8. Oracle————存储过程与函数

    存储过程存储过程参数模式包括IN.OUT. IN OUT. IN(默认参数模式):表示当存储过程别调用时,实参值被传递给形参:形参起变量作用,只能读该参数,而不能修改该参数.IN模式参数可以是变量或表 ...

  9. Archive for required library: 'D:/Program Files/Apache/maven-repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar'

    今天导入一个项目工程,发现报错:Archive for required library: 'D:/Program Files/Apache/maven-repository/dom4j/dom4j/ ...

  10. VS2015提示:未安装Style的Visual Studio语言支持,代码编辑Intellisense将不可用。服务器控件的标记Intellisense可能不起作用

    一.问题 最近在VS2015打开文件,提示未安装Style的Visual Studio语言支持,代码编辑Intellisense将不可用.服务器控件的标记Intellisense可能不起作用. Int ...