优化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,使用控制器缓存或数据层缓存"中,在数据层中可以设置缓存的有效时间.但这个还不够"智能",常常希望在编辑或创建的时候使缓存失效,加载新的数据. ...
随机推荐
- H3C常用命令详解
H3C常用命令详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1.关闭后台日志输出 <yinzhengjie>sys [yinzhengjie]undo info- ...
- Log4net(三)——RollingFileAppender配置
RollingFileAppender配置 log4net的记录介质很多,这里只总结最常用的方式之一:RollingFileAppender. 1.日志文件名是以文件大小进行变换的 如果日志文件大小到 ...
- golang匿名结构体
go语言定义结构体类型时可以仅指定字段类型而不指定字段名字.这种字段叫做匿名字段(anonymous field). Go语言有一个特性允许只声明一个成员对应的数据类型而不指名成员的名字:这类成员就 ...
- FZU 2254 英语考试
在过三个礼拜,YellowStar有一场专业英语考试,因此它必须着手开始复习. 这天,YellowStar准备了n个需要背的单词,每个单词的长度均为m. YellowSatr准备采用联想记忆法来背诵这 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
- Python的自动补全
1.编辑文件 tab.py vi tab.py #!/usr/bin/env python # python startup file import sys import readline imp ...
- centos 修改文件权限
给脚本添加可执行权限: chmod -R 777 filename.sh
- CodeMirror 使用大全
CodeMirror是一个用于编辑器文本框textarea代码高亮javascript插件,为各种编程语言实现关键字,函数,变量等代码高亮显示,丰富的api和可扩展功能以及多个主题样式,能满足您各种项 ...
- VS中空项目、win32项目、控制台程序的区别(转)
空项目,大多数想单纯创建c++工程的新同学,打开vs后很可能不知道选择创建什么工程,这时候请相信我,空项目是你最好的选择.因为空工程不包含任何的源代码文件,接下来你只需要在相应的源代码文件夹和头文件文 ...
- oracle sum(x) over( partition by y ORDER BY z ) 分析
之前用过row_number(),rank()等排序与over( partition by ... ORDER BY ...),这两个比较好理解: 先分组,然后在组内排名. 今天突然碰到sum(... ...