整体思路:在登陆之后才能查看自己的电话本,电话本中包含用户名,联系人名字,电话,性别,分类;

1、登陆注册页面--数据库User表,注册登陆使用

2、电话本的前段显示,用表格和表单,

3、创建存取的电话本的表的类,实现各种setget方法及构造方法

4、电话本需要查询,删除,添加,修改的功能,创建java文件实现这些方法

5、创建各种方法的servlet,实现这些功能,

注意:进行非空验证,还有就是在电话本的存储的表中要有隐藏的id,通过前台传入id,作为主键去判断实现那些方法,在登陆之后要注意接收登录时的用户名,

需要用到的还有就是js中的点击事件等等

gettimestamp:时间戳,表示出日期和时间

1、在前段显示表格

欢迎, [<%=username%>]&nbsp;&nbsp;&nbsp;&nbsp;
<a href="login.jsp">重新登录</a>&nbsp;
<a href="register.jsp">新用户注册</a>
<hr>
<h2>添加(或者修改)联系人信息</h2>
<form id="addOrUpdateForm" action="InsertOrUpdateContactServlet"
method="post">
<input type="hidden" name="id" />
<table>
<tr>
<td>联系人名称:</td>
<td><input type="text" name="cname" /></td>
</tr>
<tr>
<td>电话:</td>
<td><input type="text" name="tel" /></td>
</tr>
<tr>
<td>性别:</td>
<td><select name="sex">
<option value="">未选择</option>
<option value="男">男</option>
<option value="女">女</option>
<option value="其他">其他</option>
</select></td>
</tr>
<tr>
<td>分组:</td>
<td><select name="tcgroup">
<option value="">未选择</option>
<option value="同事">同事</option>
<option value="朋友">朋友</option>
<option value="同学">同学</option>
<option value="家人">家人</option>
</select></td>
</tr>
<tr>
<td><input type="submit" value="保存"></td>
<td><input type="reset" value="重置" /></td>
</tr>
</table>
</form>
<hr>
<h2>查询联系人</h2>
<form action="ShowIndexContactServlet" method="post">
<input type="hidden" name="isSearch" value="do" /> 联系人名称:<input
type="text" name="cname" /> 电话:<input type="text" name="tel" /> 性别:
<select name="sex">
<option value="">未选择</option>
<option value="男">男</option>
<option value="女">女</option>
<option value="其他">其他</option>
</select> 分组: <select name="tcgroup">
<option value="">未选择</option>
<option value="同事">同事</option>
<option value="朋友">朋友</option>
<option value="同学">同学</option>
<option value="家人">家人</option>
</select> <input type="submit" value="查询" /><input type="button"
id="btn_delMultiple" value="删除选中记录" onclick="confirmMultiDel()" />
</form> <hr>
//在表格内输出

<%
List<ContactBook> cbList = (List<ContactBook>) session.getAttribute("cbList");
if (cbList != null && cbList.size() > ) {
out.print("<table style='text-align:center;' width='60%' border=1 cellpadding=0 cellspacing=0>");
out.print("<tr><td>名称</td><td>电话</td><td>分组</td><td>性别</td><td>添加时间</td><td>管理</td>"
+ "<td><input id='leader' type='checkbox' /></td></tr>");
for (ContactBook c : cbList) {
out.print("<tr>");
out.print("<td>" + c.getName() + "</td>");
out.print("<td>" + c.getTel() + "</td>");
out.print("<td>" + c.getTcgroup() + "</td>");
out.print("<td>" + c.getSex() + "</td>");
out.print("<td>" + DateConvertor.putDate2String(c.getAddtime()) + "</td>");
out.print("<td><a href='DeleteContactBook?ids=" + c.getId()
+ "' onclick='return confirmDel()'>删除</a>&nbsp;" + "<a href='#' onclick='loadFormData(\""
+ c.getId() + "\", \"" + c.getName() + "\", \"" + c.getTel() + "\", \"" + c.getSex()
+ "\",\"" + c.getTcgroup() + "\")'>修改</a></td>");
out.print("<td><input type='checkbox' name='select' value='" + c.getId() + "' /></td>");
out.print("</tr>");
}
out.print("</table>");
} else {
out.print("<h1>没有记录 !</h1>");
}
%> <script type="text/javascript">
// 点击修改时执行的事件, 将form表单填充
function loadFormData(id, cname, tel, sex, tcgroup) {
var formData = document.getElementById("addOrUpdateForm");
formData.id.value = id;
formData.cname.value = cname;
formData.tel.value = tel;
formData.tcgroup.value = tcgroup;
formData.sex.value = sex;
}

// 单条记录删除的确认
function confirmDel() {
var r = confirm("确定要删除这条记录吗 ?");
if (r) {
return true;
}
return false;
}

// 多条记录删除的确认
function confirmMultiDel() {
var objs = document.getElementsByName("select");
var arrayCheck = [];
for (var i in objs) {
if (objs[i].checked) {
arrayCheck.push(objs[i].value);
}
}
if(arrayCheck.length > 0) {
var cf = confirm("选中了" + arrayCheck.length + "条数据, 确定删除吗 ?");
if (cf) {
window.location.href = "DeleteContactBook?ids=" + arrayCheck;
// 1,2,3,4,5
}
} else {
alert("未选中任何记录 !");
}
}

// 点击复选框, 全选列表
document.getElementById("leader").onclick = function() {
var t = document.getElementById("leader").checked;
var objs = document.getElementsByName("select");
for (var i = 0; i < objs.length; i++) {
objs[i].checked = t;
}
}
</script>

jdbc电话本项目的更多相关文章

  1. JavaWeb项目之电话本,两个版本,以及总结反思

    使用技术: Oracle 数据库 前端后台: Servlet + jsp + JDBC + html + css + js 前端界面自定, 但一定实现需要的功能 实现功能: 用户可以登录 登录之后可以 ...

  2. C语言实现电话本 动态开辟 信息存储于文件

    下面是我用C写的一个电话本小项目,实现的功能有:添加 删除 修改 查找 排序 清空 显示,功能还是比较全的,内存也是动态开辟的.能存储于本地,能从本地读出并显示 头文件部分代码,contact.h: ...

  3. 用SpringBoot搭建简单电商项目 01

    前几节呢,我们已经简单介绍了SpringBoot框架的使用,从这一节开始,我们尝试着使用SpringBoot框架来一步一步搭建一个简单电商项目.当然了,这不是真正的电商项目,你可以看成是一个CRUD案 ...

  4. 记一次开发:Qt简单电话本程序

    前言 断断续续学习C++一年了,现在要做课设,觉得控制台界面实在太难看,于是用Qt做一个图形化的程序出来. 学习Qt也没有多久,只是了解了个大概,这次开发基本上是啃了2天的官方帮助文档,然后利用各种Q ...

  5. 从头开始 启动开源电商项目jShop

    1. 引言 干了三年C#, 有了转Java 的念想,所以尝试学习一下java web,java语法本身和C#没有太多的差别,所以打算看看开源的java项目,开源的Java项目还是非常非常多的,曾经看了 ...

  6. 微信电话本可免费拨打网络电话 通话一分钟约300K流量

    微信电话本新版本于昨日晚间发布,这是一款智能通讯增强软件,通话双方都下载此APP并开通免费通话功能就能使用微信电话本拨打免费网络电话,在对方无法接通情况下还能将音频转向语音信箱,微信电话本目前支持An ...

  7. 苹果IPhone手机由于更新了IOS7 Beta测试版导致“激活出错”后,如何还原电话本和照片方法

    苹果这狗日的,手段果然狠,因为用户提前升级了测试版又没有更新正式版,就突然把手机变砖头,既不让升级正式版,也不让备份手机中的信息,确实有必要这样吗? 我的手机是IPone4s,在看了6月Apple W ...

  8. Android-->发送短信页面实现(短信发送以及群发和从电话本中选择联系人)-----------》2

    分析下怎么写 首先,我们需要一个输入框,可以手动的输入手机号码, 其次,很少有人愿意手动输入,那么我们需要提供一个按钮来给我们的用户选择自己电话本中的联系人(一次可以选择多个即群发) 然后,我们需要一 ...

  9. Python Django(WEB电商项目构建)

    (坚持每一天,就是成功) Python Django Web框架,Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,即模型M,模板T和视图V组成. 安装Pyth ...

随机推荐

  1. 1、微信小程序----弹幕的实现(无后台)

    小程序刚刚出来,现在网上的demo是多,但是要找到一个自己需要的却不容易.今天跟大家分享自己写的一个弹幕功能. 先来一张效果图: 我的思路是这样的,先用<switch>标签确定是否打开弹幕 ...

  2. 【高斯消元】兼 【期望dp】例题

    [总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $           ...

  3. Swift 轻量级网络层设计

    前言 普遍我们的网络层设计的时候直接是如下结构APIManager.post(url, parameter,completeHandle),服务器配置在APIManager.m文件中进行配置.这样一个 ...

  4. (转)Spring boot——logback.xml 配置详解(二)

    文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 1 根节点<configuration>包含的属性 scan: 当此属性设置为t ...

  5. MySQL学习笔记(四):存储引擎的选择

    一:几种常用存储引擎汇总表 二:如何选择 一句话:除非需要InnoDB 不具备的特性,并且没有其他办法替代,否则都应该优先考虑InnoDB:或者,不需要InnoDB的特性,并且其他的引擎更加合适当前情 ...

  6. FCKEditor在jsp页面中的配置方法

    大家在使用博客园或者是在网站上面发表一些东西的时候,往往会发现,输入文字的不是一个简单的文本框,而是一个类似于word的在线编辑环境.这个插件叫FCKEditor,使用这个插件要进行一定程度的配置,下 ...

  7. Java基础之数据类型、内存、修饰符、代码块

    Java 数据类型 基本数据类型 数值:int.short.long 字符:char 布尔:boolean 引用数据类型 class(类) interface(接口) 数组[] 所占字节数(1 byt ...

  8. VMware NAT端口映射 外网可以访问内网虚拟机

    我想尝试的是利用本机的ip+port来访问虚拟机上的web服务器,因为这样的话,我就能够将我的web服务器部署成为一个能让外网访问的服务器了,首先说下我的环境: 主机:系统win7,ip地址172.1 ...

  9. js中this的指向总结

    // this要在执行时才能确认值,定义时无法确认.下面是常见的几种this指向. //1.在构造函数执行 function Obj(name,age){ //1.实例化时:会创建一个 空对象     ...

  10. Spring框架集成mybatis框架的配置(笔记)

    <!-- 0.注解扫描 --><!-- 1.导入外部文件 --><!-- 2.数据源 --><!-- 3.session Factory -->< ...