用java实现书城项目(简单增删改查2)
书城项目
登录
dao
接口:UserDao
Users login(String username,String password);
实现:UserDaoImpl
QueryRunner queryrunner = new QueryRunner();
Connection connection = createConnection();
Users query = null;
String sql = "select * from users where username=? and password=?";
query = queryrunner.query(connection,sql,new BeanHandler<>(Users.class),username,password);
return query;
services
接口:UserServices 同UserDao代码一致
实现:UserServicesImpl
UserDao userdao = new UserDaoImpl();
return userdao.login(username,password)
servlet
UserServlet:service
req.setCharacterEncoding("e-8");
String reqkey = req.getParameter("reqkey");
Method method= getClass().getDeclaredMethod(reqkey,HttpServletRequest.class,HttpServletResonse.class);
method.setAccessible(true);
method.invoke(this,req,resp);
UserServlet:tologin
//接收数据
String username = req.getParameter("username");
String password = req.getParameter("password");
//调取方法
UserServicesImpl userservices = new UserServicesImpl();
User users = userservices.login(username,password);
//根据结果跳转页面
if(users==null){
req.getRequestDispatcher("/pages/user/login.html").forword(req,resp);
}else{
req.getRequestDispatcher("/pages/user/login_success.html").forword(req,resp);
}
注册
dao
接口:UserDao
boolean regist(Users users);
实现:UserDaoImpl
QueryRunner queryrunner = new QueryRunner();
Connection connection = createConnection();
int i = 0;
String sql = "insert into users values(null,?,?,?)";
i=queryRunner.update(connection,sql,user.getUsername(),user.getPassword(),user.getEmail);
return i;
services
接口:UserServices 同UserDao代码一致
实现:UserServicesImpl
return userdao.regist(Users);
servlet
UserServlet:toregist
//接收数据
Users users = new Users();
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = req.getWriter();
Map<String, String[]> parameterMap = req.getParameterMap();
BeanUtils.populate(users,parameterMap);
//调取方法
boolean b = userservices.regist(Users);
//根据结果跳转页面
if(b){
writer.writer("<script type='text/javascript'>alert('注册成功');location.href='/pages/user/regist_success.html'</script>");
}else{
writer.writer("<script type='text/javascript'>alert('注册失败');location.href='/pages/user/regist.html'</script>");
}
查询图书
dao
接口:BookDao
List<Books> selectbooks();
实现:BookDaoImpl
QueryRunner queryrunner = new QueryRunner();
Connection connection = createConnection();
List<Books> booksList = null;
String sql = "select * from books";
booksList = queryRunner.query(connection,sql,new BeanListHandle<>(Books.class));
services
接口:BookServices 同BookDao
实现:BookServicesImpl
BookDaoImpl bookDao = new BookDaoImpl();
return bookDao.selectbooks();
servlet
BookServlet:selectbooks
List<Books> selectbooks = bookServices.selectbooks();
添加图书
dao
接口:BookDao
int insertbook(Books books);
实现:BookDaoImpl
Connection connection = createConnection();
int i = 0;
String sql = "insert into books values(null,?,?,?,?,?,?)";
i = queryRunner.update(connection,sql,books.getTitle(),books.getAuthor(), books.getPrice(), books.getSales(), books.getStock(), "/static/uploads/huozhe.jpg")
return i;
services
接口:BookServices 同BookDao
实现:BookServicesImpl
return bookDao.insertbook(books);
servlet
BookServlet:addbooks
Books book = new Books();
Map<String, String[]> parameterMap = req.getParameterMap();
BeanUtils.populate(book,parameterMap);
int i = bookServices.insertbook(book);
if(i>0){
resp.sendRedirect("/pages/manager/bookServlet?reqkey=selectbooks");
}else{
resp.sendRedirect("/pages/manager/book_add.html");
}
图书列表展示
dao
接口:BookDao
List<Books> selectbooks();
实现:BookDaoImpl
public List<Books> selectbooks(){
String sql = "select * from books";
List<Books> booksList = queryRunner.query(connection,sql,new BeanListHandler<>(Books.class));
return booksList;
}
services
接口:BookServices
实现:BookServicesImpl
servlet
BookServlet:selectbooks
List<Books> selectbooks = bookServices.selectbooks();
req.serAttribute("blist",selectbooks);
processTemplate("manager/book_manager",req,resp);
查询列表id
dao
接口:BookDao
Books findById(int bookId);
实现:BookDaoImpl
String sql = "select * from books where id=?";
Books books = queryRunner.query(connection,sql,new BeanHandler<>(Books.class),bookId);
return books;
services
servlet
BookServelet:findbybookid
String bookid = req.getParameter("bookid");
if(bookid = null){
throw new RuntimeException("bookid is null");
}
Books id = bookServices.findById(Integer.parseInt(bookid));
req.setAttribute("mybook",id);
processTemplate("manager/book_edit",req,resp);
修改图书
dao
接口:BookDao
int updatebook(Books books);
实现:BookDaoImpl
String sql = "update books set title=?,author=?,price=?,sales=?,stock=? where id=?";
int i = queryRunner.update(connection,sql,books.getTitle(),books.getAuthor(),books.getPrice,books.getSales(),books.getStock(),books.getId());
return i;
services
servlet
BookServelet:updatebook
Books books = new Books();
Map<String, String[]> parameterMap = req.getParameterMap();
BeanUtils.populate(books,parameterMap);
int i = bookServices.updatebook(books);
if(i>0){
resp.sendRedirect("/pages/manager/bookServlet?reqkey=selectbooks");
}else{
resp.sendRedirect("/pages/manager/bookServlet?reqkey=findbybooks&bookid="+books.getId());
}
删除图书
dao
接口:BookDao
int deletebook(int bookId);
实现:BookDaoImpl
String sql = "delete from books where id =?";
int i = queryRunnering.update(connection,sql,bookId);
return i;
services
servlet
BookServlet:deletebyid
String id = req.getParameter("bookid");
if(id == null){
throw new RuntimeException("bookid is null");
}
int i = bookServices.deletebook(Integer.parseInt(id));
resp.sendRedirect("/pages/manager/bookServlet?reqkey=selectbooks");
用java实现书城项目(简单增删改查2)的更多相关文章
- Java连接Zookeeper以及书写简单增删改查的方法
Java连接Zookeeper以及书写简单增删改查的方法 摘要:本笔记主要记录了使用IDEA创建一个Maven项目并使用Maven配置文件下载Zookeeper连接驱动,连接云服务器的Zookee ...
- Mybatis实现简单增删改查
Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...
- ado.net的简单数据库操作(三)——简单增删改查的实际应用
果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...
- Redis:五种数据类型的简单增删改查
Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...
- 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作
专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...
- java对xml文件做增删改查------摘录
java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...
- 使用java对sql server进行增删改查
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...
- Java API实现Hadoop文件系统增删改查
Java API实现Hadoop文件系统增删改查 Hadoop文件系统可以通过shell命令hadoop fs -xx进行操作,同时也提供了Java编程接口 maven配置 <project x ...
- .net core项目搭建swagger接口实现简单增删改查
.net core搭建swagger 1,新建立.net core项目(这里不再细说) 2,引入NuGet程序包 3,建立项目之后在Startup类中配置swagger 这里我直接把代码贴出来: 在C ...
- 【ES】ElasticSearch初体验之使用Java进行最基本的增删改查~
好久没写博文了, 最近项目中使用到了ElaticSearch相关的一些内容, 刚好自己也来做个总结. 现在自己也只能算得上入门, 总结下自己在工作中使用Java操作ES的一些小经验吧. 本文总共分为三 ...
随机推荐
- 【Jmeter】Request1输出作为Request2输入-后置处理器
[Jmeter]基础介绍-详细 接上文,继续介绍Jmeter,本文关注点为如何解决上文中提到的第一个问题,即: 需要实现Request1的返回作为Request2的RequestBody或Header ...
- Python 实现SynFlood洪水攻击
Syn-Flood攻击属于TCP攻击,Flood类攻击中最常见,危害最大的是Syn-Flood攻击,也是历史最悠久的攻击之一,该攻击属于半开放攻击,攻击实现原理就是通过发送大量半连接状态的数据包,从而 ...
- css 修改复选框的样式
效果图: 实现代码如下: /* 选中input标签类型为复选框的 */ input[type="checkbox"] { width: 16px; height: 16px; ve ...
- 【奶奶看了都会】ComfyUI+SVD制作AI视频教程,附效果演示
AI一天,人间一年 大家好啊,我是小卷,最近AI绘画又发展出一些新玩意了,小卷因为工作的关系有一个月没关注AI的发展了,都有点跟不上版本节奏了... 1.comfyui的使用效果 今天给大家介绍下AI ...
- 数学和CNN里面的卷积和互相关
卷积和互相关 nndl上CNN这章的互相关讲的比较晦涩,简单辨析一下书上的互相关 A.1 数学意义上的卷积就是将卷积核进行翻转之后再进行我们熟悉CNN上的卷积运算 同时互相关就是不将卷积核翻转直接CN ...
- webrtc终极版(题外话)辛苦写文章分享,竟然遇到喷子狂喷,写篇文章回怼下,顺便发表下面对喷子的处理方式
webrtc终极版(题外话)辛苦写文章分享,竟然遇到喷子狂喷,写篇文章回怼下,顺便发表下面对喷子的处理方式 第一篇文章发过后,出人意料的是,收到了博客园某一位用户的狂喷[注:本系列文章会同步发布到cs ...
- 如何使用Ghost对UEFI+GPT+WIN10进行备份还原?
以前BIOS兼容模式下用MBR分区表来备份还原系统使用Ghost很轻松就可以完成系统还原和备份,对于新版BIOS及支持GPT+UEFI快速启动的系统来说又应该如何备份还原呢?答案依旧是Ghost,只不 ...
- Delphi TStringList 有趣的CommaText和DelimitedText
CommaText 在没有指定StrictDelimiter=true的情况下,当列表中项中 包含 空格和逗号的时候就默认的 在这个字符串上面 增加 双引号 很智能吧 例子1: var MyList: ...
- [Java][并发编程]AQS以及其相关同步器的源码解析
AQS以及其相关同步器的源码解析 概念 AQS(AbstractQueuedSynchronizer)抽象的队列同步器.是用来构建锁或者其他同步器组件的重量级基础框架以及整个JUC体系的基石.通过内置 ...
- JS Leetcode 530. 二叉搜索树的最小绝对差 题解分析,再次了解中序遍历
壹 ❀ 引 本题来自LeetCode 783. 二叉搜索树节点最小距离,题目描述如下: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 示例 1: 输入:root ...