<项目><day12>通讯录(自己做的)
设计一个通讯录主页面
<!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>通讯录(自己做的)的更多相关文章
- <项目><day12>通讯录(视频)
1 需求分析(需求分析师) 功能分析: 1)添加联系人 2)修改联系人 3)删除联系人 4)查询所有联系人 2 需求设计(系统分析师/架构师/资深开发人员) 2.1设计实体(抽象实体) 联系人实体: ...
- Python之路,Day12 - 那就做个堡垒机吧
Python之路,Day12 - 那就做个堡垒机吧 本节内容 项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多 ...
- 看完你也能独立负责项目!产品经理做APP从头到尾的所有工作流程详解!
(一)项目启动前 从事产品的工作一年多,但自己一直苦于这样或者那样的困惑,很多人想要从事产品,或者老板自己创业要亲自承担产品一职,但他们对产品这个岗位的认识却不明晰,有的以为是纯粹的画原型,有的是以为 ...
- 实战项目:通讯录 UI—第十一天
1.推出视图的两种方式: 1.通过导航控制器push到下一个界面,使用pop返回到上一个界面 2.通过模态的形式推出视图,不需要依赖于导航控制器,通过使用present到下一个界面,通过dismi ...
- 在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)
项目中需要搜索, 所以从零开始学习大家都在用的搜索神器 elasiticsearch. 刚开始 google 的时候, 搜到好多经验贴和视频(中文的, 英文的), 但是由于是第一次接触, 一点概念都没 ...
- 如何学习JavaEE,项目又该如何做?
本文主要分为三个部分: 如何学习java基础 如何学习javaEE 你关心的项目问题 01 java基础学习 建议初学者看视频学习,不推荐看书.入门视频选择非常重要,最好是通俗易懂.深入浅出的教学视频 ...
- 【spring】在spring cloud项目中使用@ControllerAdvice做自定义异常拦截,无效 解决原因
之前在spring boot服务中使用@ControllerAdvice做自定义异常拦截,完全没有问题!!! GitHub源码地址: 但是现在在spring cloud中使用@ControllerAd ...
- iOS项目 -- 模仿花椒直播做的第二层界面完整版
,项目开始做了,好遗憾的是,花椒app有更新了版本,
- 在Centos7中创建.net core 项目,并用Apache做代理服务器部署.net core项目
这一篇实例记录一次用Centos7创建并部署.net core项目的过程,希望能帮到用到的小伙伴. Kestrel 是 ASP.NET Core 项目模板中包括的默认 Web 服务器,Kestrel可 ...
随机推荐
- 洛谷 P2912 [USACO08OCT]牧场散步Pasture Walking
题目描述 The N cows (2 <= N <= 1,000) conveniently numbered 1..N are grazing among the N pastures ...
- varchar2(100 char)是什么意思
最佳答案 varchar2(100 char)最长可以插入100个任意字符而varchar2(100)最长可以插入100个英文字符
- vue >>> 编译失败问题 loader 待解决( iview vue脚手架生成)
vue >>> 编译失败问题 loader 待解决 用vue iview 脚手架 来一次试试~
- 如何快速上手基础的CSS3动画
前言 说起CSS3动画,就必须说说 transform,translate,transition,animation这4个属性,transform主要定义元素的动作,比如旋转.倾斜.位移等,trans ...
- 2019天梯赛练习题(L1专项练习)
7-1 水仙花数 (20 分) 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身.例如:1. 本题要求编写程序,计算所有N位水仙花数. 输入样例: 3 输出样例: 153 ...
- nginx 获取真实ip
使用阿里云SLB,无法获取真实ip问题 官方给出的是如下用法,需要安装模块,大体上是没有错的,但是比较模糊,实际操作中可能会踩坑,所以参考学习即可,不必照搬.(那个http_realip_module ...
- 14. PARAMETERS
14. PARAMETERS PARAMETERS表提供有关存储例程(存储过程和存储函数)的参数以及存储函数的返回值的信息. PARAMETERS表不包含内置SQL函数或用户定义函数(UDF). 参数 ...
- Linux内核学习总览
断断续续学习操作系统已经有大半年时间了,一直想系统地梳理一下. 正好借助<深入Linux内核架构> (Wolfgang Manuere 著,郭旭 译)汇总一下. 首先基础框架篇,Linux ...
- 几个非常实用的JQuery代码片段
jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多).jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用). ...
- Mybatis中实体类属性和数据列之间映射的四种办法
http://blog.csdn.net/lmy86263/article/details/53150091 Mybatis不像hibernate中那么自动化,通过@Column注解或者直接使用实体类 ...


