优化MVC,实现数据库表的记录的添加、删除、修改、查询。
一.在UserDAO里面重写实体user要调用的方法;
1.查询所有user表中的记录。用getAllUser()方法得到List
public class UserDAO {
public List getAllUser() throws SQLException{
String sql="select * from user";
ResultSet rs= DBHelper.getResultSet(sql);
return tools.ResultSettoList(rs,user.class);
}
2.删除user表中的一条记录,通过得到客户端传过来的ID定位到该条记录,并调用delete方法,执行删除记录操作。
public boolean delete(user user){
String sql="delete from user where userID=?";
Object[] obj=new Object[]{user.getUserID()};
int rs=DBHelper.ExecSql(sql,obj);
if(rs==1)
return true;
else
return true;
}
3.修改user表中的一条记录,通过得到客户端传过来的ID定位到该条记录,并调用update方法,执行修改记录操作。
public boolean update(user user){
String sql="update user set userName=?,password=? where userID=?";
Object[] obj=new Object[]{user.getUserName(),user.getPassword(),user.getUserID()};
int rs=DBHelper.ExecSql(sql,obj);
if(rs==1)
return true;
else
return false;
}
4.添加user表中的一条记录,通过得到客户端传过来的ID定位到该条记录,并调用insert方法,执行添加一条记录操作。
public boolean insert(user user){
String sql="insert into user(userID,userName,password)values(?,?,?)";
Object[] obj=new Object[]{user.getUserID(),user.getUserName(),user.getPassword()};
int rs=DBHelper.ExecSql(sql,obj);
if(rs>0)
return true;
else
return false;
}
(1)先在dao包中写出test类测试以上方法是否正确:
1.1 首先可以查看出数据库中有4条记录

1.2 当运行此段代码时,控制台应当显示出数字“4”,说明getAllUser()方法没问题。

public class testDAO {
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
// 测试查询
UserDAO dao = new UserDAO();
List list = dao.getAllUser();
System.out.println(list.size());
}
}
2.1测试删除方法的正确性:首先查看数据库中第一条记录为(userID:1;userName:Tom;password:13579;)

2.2当输入userID=“5” 该条记录会被删除
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
UserDAO dao = new UserDAO();
// 测试删除:
u.setUserID("5");
dao.delete(u);
System.out.println("u");
结果显示:

3.1修改:客户端输入userID,定位到对应的记录,则会调用update()方法,执行修改操作
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
UserDAO dao = new UserDAO();
user u = new user();
// 测试修改
u.setUserID("1");
u.setPassword("123");
u.setUserName("King");
dao.update(u);
System.out.println("u");
结果显示:

4.添加一条记录:客户端需要输入对应的userID;userName;password;此时调用inser()方法,执行添加操作。
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
// 测试查询
UserDAO dao = new UserDAO();
user u = new user();
// 测试添加:
u.setUserID("4");
u.setUserName("Judy");
u.setPassword("12345");
dao.insert(u);
}
结果:

5.UserServlet中得到List集合并实现跳转,将记录显示在jsp中。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// System.out.println("hello");
UserDAO dao = new UserDAO();
try {
List user = dao.getAllUser();
// servlet改进方法
// request.setAttribute("user", user);
// RequestDispatcher rd=request.getRequestDispatcher("show.jsp");
// rd.forward(request, response);//推送给user,jsp进行后续处理
request.getSession().setAttribute("user", user);
response.sendRedirect("show.jsp");
} catch (Exception e) {
e.printStackTrace();
}
}
6.index.jsp中加入超链接,以便于使servlet访问到用户请求,使数据库做出相应处理。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head>
<body>
<a href ="user/UserServlet?action=show">显示用户信息</a>
<a href ="user/insert.jsp">添加用户</a>
</body>
</html>
7.心得体会:通过此次锻炼,我对MVC有了更加深入的了解,这个架构的思想又在我的脑海里画上了深深地一笔,只要思路清晰,知道自己在干什么,想干什么,就什么都好说了。
需要特别注意到的是路径的问题,必须搞清楚是相对路径还绝对路径。
优化MVC,实现数据库表的记录的添加、删除、修改、查询。的更多相关文章
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200) 2.删除字段 ALTER TABLE table_NAME DROP CO ...
- SQL语句添加删除修改字段及一些表与字段的基本操作
用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200)2.删除字段 ALTER TABLE table_NA ...
- 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改的记录数
开篇语 在这篇日志中 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架 我介绍到了包级别的日志管理框架,那么这个主要是针对包这一个层级的 Log 信息,包括包开始执行和结束时间,以 ...
- MySQL数据库优化技术之数据库表的设计
三范式介绍表的范式:只有符合的第一范式,才能满足第二范式,进一步才能满足第三范式. 1. 第一范式:表的列具有原子性,不可再分解.只要是关系型数据库都自动满足第一范式.数据库的分类:关系型数据库:My ...
- 查询sqlserver数据库表的记录数
SELECT a.name, b.rows FROM sysobjects AS a INNER JOINsysindexes AS b ON a.id = b.idWHERE (a.type = ' ...
- SQL Server 数据库引擎怎样记录完整备份后修改过的数据
SQL Server 使用两个内部数据结构跟踪被大容量复制操作修改的区,以及自上次完整备份后修改的区.这些数据结构极大地加快了差异备份的速度.当数据库使用大容量日志恢复模式时,这些数据结构也可以加快将 ...
- SQL Server 2012设置某用户对某些表的记录限制其删除操作
第一步:用sa用户进入SSMS: 第二步:在安全性---用户上面点击右键---"属性": 第三步:在选择页中选择”安全对象“,点击”搜索“,弹出添加对象页面,这里默认为特定对象不用 ...
- Oracle数据库表空间创建、添加用户并授权
--创建test表空间CREATE TABLESPACE test_data LOGGING DATAFILE '/u01/app/oracle/oradata/test/test_data.dbf' ...
- MVC缓存02,使用数据层缓存,添加或修改时让缓存失效
在"MVC缓存01,使用控制器缓存或数据层缓存"中,在数据层中可以设置缓存的有效时间.但这个还不够"智能",常常希望在编辑或创建的时候使缓存失效,加载新的数据. ...
随机推荐
- 通过Cloudera Manager部署CDH5.15.1的webUI界面详解
通过Cloudera Manager部署CDH5.15.1的webUI界面详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客CDH的部署完全通过Cloudera Mana ...
- search 重要文件路径 搜索【原】
hosts文件路径 C:/WINDOWS/system32/drivers/etc/ tnsnames.ora文件路径 C:/oraclexe/app/oracle/product/11.2.0/se ...
- AES加密【转】
. 此时就一定要使用如下代码步骤 : 1.SecureRandom的key定下来. SecureRandom 实现完全隨操作系统本身的內部狀態,除非調用方在調用 getInstance 方法之後又 ...
- POJ - 3279 Fliptile (枚举)
http://poj.org/problem?id=3279 题意 一个m*n的01矩阵,每次翻转(x,y),那么它上下左右以及本身就会0变1,1变0,问把矩阵变成全0的,最小需要点击多少步,并输出最 ...
- CodeChef Arithmetic Progressions
https://www.codechef.com/status/COUNTARI 题意: 给出n个数,求满足i<j<k且a[j]-a[i]==a[j]-a[k] 的三元组(i,j,k)的个 ...
- dp填表法,刷表法
填表法:利用上一状态推当前 刷表法:利用当前推关联,利用刷表法较为便捷,向上边界较容易处理,处理在本次循环中的影响
- Docker入门03——Container
1 启动容器 1.1 新建并启动 1.2 启动已终止容器 2 后台运行 3 终止 4 进入容器 5 导入和导出 5.1 导出 5.2 导入 6 删除 1 启动容器 1.1 新建并启动 docker r ...
- UE4中Bebavior Tree中Delay及其后面代码失效的原因
具体原因是因为节点的执行过程中,该节点及其父节点的Decorator条件不满足,而节点又受到flow control的影响,导致中途强制结束了Task节点的执行,具体如下. UE4中的Behavior ...
- linux下比较两个文本文件的不同——diff命令
1>Diff命令的功能Linux中Diff命令的功能为逐行比较两个文本文件,列出其不同之处.它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序. 2>语 ...
- JS浮点数运算Bug的解决办法
方法一:重写浮点运算的函数 //除法函数,用来得到精确的除法结果 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显.这个函数返回较为精确的除法结果. //调用:acc ...