2022-5-11作业
1 编写 新增商品 和 查询商品的页面
2 使用Servlet + JDBC 完成新增商品 和查询商品的功能
3 实现新增商品之后 重定向到 查询商品的页面
package com.qiku.web;import com.qiku.dao.ProductDao;
import com.qiku.entity.Product;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;/*** 一个Servlet对应一个客户端请求*/
@WebServlet(name = "findAllProductServlet" , urlPatterns = "/findAllProduct")
public class FindAllProductServlet extends HttpServlet {//由于我们需要访问ProductDao中的方法 所以将其作为成员变量private ProductDao productDao = new ProductDao();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {try {//执行查询所有商品的操作List<Product> allProduct = productDao.findAllProduct();//将allProduct 写出到页面上resp.setContentType("text/html;charset=utf-8");PrintWriter writer = resp.getWriter();writer.println("<table border=\"1\">");for(Product p : allProduct){
// writer.println("<h3>"+p.getPname()+"\t"+p.getPrice()+"\t"+p.getPdesc()+"</h3>");writer.println("<tr><td>"+p.getPname()+"</td><td>"+p.getPrice()+"</td><td>"+p.getPdesc()+"</tr>");}} catch (SQLException e) {e.printStackTrace();}}
}
package com.qiku.web;import com.qiku.dao.ProductDao;
import com.qiku.entity.Product;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** 对应新增商品的请求*/
@WebServlet(name = "addProductServlet" , urlPatterns = "/addProduct")
public class AddProductServlet extends HttpServlet {ProductDao productDao = new ProductDao();@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");//获取商品信息String pid = req.getParameter("pid");String pname = req.getParameter("pname");double price= Double.parseDouble(req.getParameter("price"));String pdesc = req.getParameter("pdesc");int pflag = Integer.parseInt(req.getParameter("pflag"));String cid = req.getParameter("cid");//将上述信息 封装成一个 product对象Product product = new Product(pid, pname, price, pdesc, pflag, cid);//将product 作为参数 传递给ProductDao 去存入数据库productDao.addProduct(product);//重定向到查询页面resp.sendRedirect("AllProduct.html");}
}
编写查询商品和添加商品的方法
package com.qiku.dao;import com.qiku.entity.Product;
import com.qiku.utils.DruidUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;import javax.servlet.annotation.WebServlet;
import java.sql.SQLException;
import java.util.List;public class ProductDao {QueryRunner qr = new QueryRunner(DruidUtils.dataSource);//查询所有商品public List<Product> findAllProduct() throws SQLException {String sql = "select * from product";List<Product> productsList = qr.query(sql, new BeanListHandler<Product>(Product.class));return productsList;}public void addProduct(Product p) {try {String sql = "insert into product values( ? , ? , ? , ? , ? , ?)";qr.update(sql, p.getPid(), p.getPname(), p.getPrice(),p.getPdesc(), p.getPflag(), p.getCid());} catch (SQLException e) {e.printStackTrace();}}
}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>主页</title>
</head>
<body>
<a href="findAllProduct">查询所有商品</a>
<hr>
<a href="increase.html">新增商品</a>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>查询商品信息</title>
</head>
<body>
<a href="findAllProduct">查询所有商品</a>
</body>
</html>
新增商品的前端页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>添加商品</title>
</head>
<body>
<form action="addProduct" method="post"><h3>添加商品信息</h3><p>pid:商品编号<input type="text" name="pid"></p><p>pname:商品名称<input type="text" name="pname"></p><p>price:商品价格<input type="text" name="price"></p><p>pdesc:商品描述<input type="text" name="pdesc"></p><p>pflag:商品状态<input type="text" name="pflag"></p><p>cid:商品分类<input type="text" name="cid"></p><input type="submit" value="提交">
</form>
</body>
</html>
2022-5-11作业相关推荐
- java学习笔记 2022.2.11
2022.2.11 on java 8 摘录(反射) 加载.这是由类加载器执行的.该步骤会先找到字节码(通常在类路径中的磁盘上,但也不一定),然后从这些字节码中创建一个Class对象. 链接.链接阶段 ...
- 2022年11月骨传导耳机排名,骨传导蓝牙耳机品牌怎么选?
近些年市面上供消费者选择的骨传导蓝牙耳机品牌众多,有突出防水功能的骨传导耳机,也有突出音质的骨传导耳机,2022年11月市面上又出现了许多新款骨传导蓝牙耳机,这些各式各样的骨传导耳机排名情况如何?骨传 ...
- 【数据分享】2022年11月西南地区POI数据分享(重庆、四川、贵州、云南、西藏)
一.数据概况 今天分享一份西南地区的POI数据,包含重庆市.四川省.贵州省.云南省.西藏自治区5个省级行政区. 数据时间为2022年11月,坐标系是GCJ-02. 较2022年3月的POI数据,5个区 ...
- 2022年11月多家权威机构____编程语言排行榜__薪酬状况
2022年11月多家权威机构____编程语言排行榜__薪酬状况 目 录: 一.TIOBE统计数据(2022年11月) (1)2022年11月的编程语言流行度指数排行 (2)编程语言多年流行回顾 (3) ...
- 第14届蓝桥杯STEMA测评真题剖析-2022年11月27日Scratch编程初中级组
[导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第117讲. 蓝桥杯选拔赛现已更名为STEMA,即ST ...
- Microsoft Visual Studio C++2022 Windows 11 SDK环境
Microsoft Visual Studio C++2022 Windows 11 SDK环境 1.安装 2.环境变量 本文为作者(难拳)原创,转载请注明出处. 1.安装 Visual Studio ...
- 2022年11月PMP考试时间出炉!考生须知
中国大陆地区2022年第二期PMP认考试将在满足疫情防控和考试组织条件的基础上,暂定于11月27日上午举办,此次考试将采取分地区.分批次的报名方式. 一.报名网站 本网站是中国国际人才交流基金会新版项 ...
- 【lnmp+ELK+Nginx+GeoIP】超详细新版ELK8.5.0解析收集Nginx日志并实现数据可视化与IP地址地图可视化教程-2022年11月版
超详细新版ELK8.5.0+lnmp1.9解析收集Nginx日志并实现数据可视化与IP地址地图可视化教程-2022年11月版 前言 1.基础环境和所需要的软件包 1.1服务器配置(仅供参考) 1.2 ...
- 2022 年 11 种最佳移动自动化测试工具
移动应用程序开发正在以前所未有的速度增长,并且相应地需要使用正确的移动测试策略执行彻底的测试.这些策略主要涉及使用各种移动自动化测试工具. 移动测试工具可帮助企业自动化其应用程序测试,并减少额外的成本 ...
- 【2022.7.11】HTML基础介绍语法常用标签超文本链接锚点定位
来自2022.7.11 今日学习 一.HTML基础介绍 1.网页 1.1什么是网页 1.2什么是HTML 1.3超文本 1.4网页的形成 2.常用浏览器 2.1常用浏览器 2.2浏览器内核 3.web ...
最新文章
- WPF Datagrid with some read-only rows - Stack Overflow
- boost::function模块boost::lambda::bind用法的测试程序
- python 将os.getcwd()获取路径中的\替换成\\
- RSA key format is not supported
- JS 相等判断 / 类型判断
- 数据结构—二叉排序树
- 试题13 进制转换(十进制-R进制)
- 商城系统源码开发技巧分享
- java date类赋值日期_Java中Date时间类
- 分享一款手机最强Python编程神器,用手机运行Python。天秀!
- Selenium打开IE浏览器方法以及报错处理
- python turtle 画蜡笔小新_蜡笔小新有几集?作者到底怎么死的啊?
- ux设计_UX评论模式品牌知道规则并且也打破了规则
- TP-LINK无线路由器配置解读
- (转载)酷炫桌面背景图片,实用命令图片
- @iptables防火墙详解
- 如何计算词语的相似性(附github)
- GUI界面连接Mysql数据库
- 版本号Alpha、Beta、RC、Candidate、Stable分别代表什么含义?
- python 股票量化盘后分析系统V0.42