JavaWeb08(MVC应用02[家居商城]连接数据库)

news2024/11/30 14:32:24

目录

一.绑定分类

1.1 效果预览

1.2 代码实现

   ①底层代码

 ②前端代码

二.绑定所有商品

2.1 效果预览

2.2.代码实现

①底层代码

②前端代码

三.分类查询

3.1效果预览

3.2代码实现

①底层代码

②前端代码

四.模糊查询

4.1 效果预览

 4.2代码实现

①底层代码

②前端代码

五.分类模糊查询

5.1 效果预览

 5.2 代码实现

六.细节处理

6.1 效果预览

6.2代码实现


一.绑定分类

1.1 效果预览

1.2 代码实现

   ①底层代码

/**
 * 查询类别全部
 */

    public List<Type> getAll() {
        List<Type> ls = new ArrayList<Type>();
        try {
            con=DBHelper.getCon();
            String sql="select * from tb_type";
            ps=con.prepareStatement(sql);
            rs=ps.executeQuery();
            while(rs.next()) {
                Type t = new Type(rs.getInt(1),rs.getString(2));
                ls.add(t);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            DBHelper.myClose(con, ps, rs);
        }
        return ls;
    }


//调用业务逻辑层

ITypeBiz itb = new TypeBiz();

//设置编码
req.setCharacterEncoding("utf-8");

//调用查询全部商品的集合方法
 List<Goods> goodsls = igb.getAll(tid,str);

//存起来  仅转发有效
 req.setAttribute("typels", typels);

//转发到type.jsp进行绑值展示数据
req.getRequestDispatcher("type.jsp").forward(req, resp);

 ②前端代码

<div class="col-3">
      <div class="list-group">
           <a href="#" class="list-group-item list-group-item-action  active"> 所有商品</a>
           <c:forEach items="${typels}" var="t">
             <a href="#" class="list-group-item list-group-item-action>${t.tname}</a>
                    </c:forEach>
</div>

        </div>

二.绑定所有商品

2.1 效果预览

2.2.代码实现

①底层代码

/**
 * 查询类别全部
 */

    public List<Type> getAll() {
        List<Type> ls = new ArrayList<Type>();
        try {
            con=DBHelper.getCon();
            String sql="select * from tb_type";
            ps=con.prepareStatement(sql);
            rs=ps.executeQuery();
            while(rs.next()) {
                Type t = new Type(rs.getInt(1),rs.getString(2));
                ls.add(t);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            DBHelper.myClose(con, ps, rs);
        }
        return ls;
    }


//调用业务逻辑层

IGoodsBiz igb = new GoodsBiz();

 //调用查询全部商品的集合方法
 List<Goods> goodsls = igb.getAll(tid,str);

//把查询出来的商品集合存起来

req.setAttribute("goodsls", goodsls);

②前端代码

 <!--绑定商品  -->

<div class="row">
      <c:forEach items="${goodsls}" var="g">
             <div class="col-lg-3 col-md-4 col-sm-6">
                    <figure class="figure  text-center">
                        <img src="${g.gpath}" class="figure-img img-fluid rounded" >
                            <figcaption class="figure-caption">

                                  <b>${g.gname}<b><br>

                                        <b>&yen;${g.gprice}</b>
                </c:forEach>

三.分类查询

3.1效果预览

3.2代码实现

①底层代码

public List<Goods> getAll(String tid) {

        String sql="select * from tb_goods";

//tid为就意味着查询全部 不为空就意味着点了其他类别 传了类别id

        if(tid!=null) {
                sql+=" and tid="+tid;
            }

        sql+="order by gid desc";

}


//调用业务逻辑层

IGoodsBiz igb = new GoodsBiz();

//接收表单提交过来的类别ID

String tid = req.getParameter("tid");//第一次进来就是null

 //调用分类查询的方法
 List<Goods> goodsls = igb.getAll(tid,str);

//方便显示选中的样式 为了让对应的类别加active样式

req.setAttribute("tid", tid);

②前端代码

<!-- 点击“所有商品”的时候 tid为null 因此判断为empty才选中 同时刷新所有-->

 <a href="type.do" class="list-group-item list-group-item-action ${empty tid?'active':''}"> 所有商品</a>

<!-- 让对应的类别选中  加入active样式 因此要将tid存起来-->

 <a href="type.do?tid=${t.tid}&index=2" class="list-group-item list-group-item-action ${t.tid==tid?'active':''}">${t.tname}</a>

四.模糊查询

4.1 效果预览

 4.2代码实现

①底层代码

 public List<Goods> getAll(String tid,String str) {
            if(str==null) {
                str="";//相当于查询全部
            }
            String sql="select * from tb_goods where gname like '%"+str+"%'";

               //不为空就意味着点了其他类别  传了类别id
            if(tid!=null&&!"".equals(tid)) {
                sql+=" and tid="+tid;//将where----->and
            }
            sql+=" order by gid desc";


//调用分类查询方法

List<Goods> goodsls = igb.getAll(tid,str);

//方便连同分类一起查询  同时文本框显示关键字

req.setAttribute("str", str);

②前端代码

<form action="type.do" method="post">
                <!--传index 为了让分类选中  -->
                <input type="hidden" name="index" value="2"/>
                <!--传tid 为了模糊查询类别联合用  -->
                <input type="hidden" name="tid" value="${tid}"/>
                    <div class="form-group">
                        <div class="input-group mb-3">
                            <input name="str" value="${str}" type="text" class="form-control" placeholder="请输入家居关键字">
                            <div class="input-group-append">
                                <button class="btn btn btn-primary" type="submit" ></button>
                            </div>
                        </div>
                </form>
        </div>

五.分类模糊查询

5.1 效果预览

 5.2 代码实现

//说明点了其他类别 tid是有值的   不为空也不为空字符串的时候

if(tid!=null&&!"".equals(tid)) {
                sql+=" and tid="+tid;
 }

 <!--传tid 为了模糊查询类别联合用  -->
 <input type="hidden" name="tid" value="${tid}"/>

 <!--点击类别的同时传递关键字到servlet  -->

 <a href="type.do?tid=${t.tid}&index=2&gname=${gname}">${t.tname}</a>

六.细节处理

6.1 效果预览

6.2代码实现

<!--查询未果  -->
      <c:if test="${empty goodsls}">
            <div class="h2" >暂未查找到"<span class="text-danger">${str}</span>"相关的宝贝~<a href="type.do?index=2">点我刷新喔~</a>

</div>
</c:if>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/527767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一图看懂 zipp 模块:ZipFile 的一些兼容子类和补充接口,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 zipp 模块&#xff1a;ZipFile 的一些兼容子类和补充接口&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&#x1f9ca;模块图&#x1f9ca;类关…

直观理解torch.gather函数(带图)

直观理解torch.gather函数 1. gather的作用 因为深度学习里面&#xff0c;像分类或者分割&#xff0c;有时候去进行loss计算或准确度计算的时候&#xff0c;需要挑选某个维度特定的值&#xff0c;所以有了这么个函数。注意不要高估这个函数的能力&#xff0c;这个函数只是在指…

大数据技术之Sqoop

第1章 Sqoop简介 Sqoop是一款开源的工具&#xff0c;主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递&#xff0c;可以将一个关系型数据库&#xff08;例如 &#xff1a; MySQL ,Oracle ,Postgres等&#xff09;中的数据导进到Hadoop的HDFS中&…

破案小说中的《人月神话》和女装

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 在破案小说《谁是凶手》中&#xff0c;《人月神话》、《程序员修炼之道》以及女装作为素材出现了。 成功学&#xff08;鸡汤学&#xff09;书籍《用所有的存在与世界相会》…

如何制定一套有效的期货交易系统策略?

期货交易是一项全球性的金融交易&#xff0c;对于投资者来说&#xff0c;制定有效的期货交易系统策略是至关重要的。在制定期货交易策略时&#xff0c;需要考虑市场趋势、资产种类、交易成本、仓位控制等多个方面。 很多刚进入期货市场的朋友&#xff0c;甚至很多做了很久期货…

JS代码优化——逻辑判断

文章目录 JavaScript 语法篇嵌套层级优化多条件分支的优化处理使用数组新特性简化逻辑判断**多条件判断****判断数组中是否所有项都满足某条件****判断数组中是否有某一项满足条件** **函数默认值**使用默认参数使用解构与默认参数复杂数据解构 策略模式优化分支逻辑处理 JavaS…

Mars3d实现加载gif动图

官网有相关示例参考&#xff1a;功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 方式1&#xff1a; // [终点]绘制台风当前位置gif点 const gifGraphic new mars3d.graphic.DivGraphic({ position: [endItem.lon, e…

【人力资源管理】第3集 免费开源ERP: Odoo 16 hr_holidays管理员工休假和缺勤 构建一体化企业人力资源管理

文章目录 前言一、管理员工休假二、批准或者拒绝休假申请三 、简单报表工具四 、使用功能1.管理休假申请2.报告 总结 前言 管理员工休假和缺勤。 一、管理员工休假 跟踪所有员工的假期 跟踪每位员工的休假天数。员工输入请求&#xff0c;经理对请求进行审批和验证&#xff0…

MYSQL-数据库管理.3(用户管理及用户权限)

一、关系型数据库 数据结构 二维表格 库 -> 表 -> 列&#xff08;字段&#xff09;&#xff1a;用来描述对象的一个属性 行&#xff08;记录&#xff09;&#xff1a;用来描述一个对象的信息 二、非关系型数…

能成事的表达笔记

为什么需要好的沟通&#xff1f; 一.让自己舒服 二.让别人乐意 愿意听听得懂听完愿意配合你 共赢 沟通是思维和视角的改变 向上沟通 &#xff08;领导&#xff0c;客户&#xff09; 是最高效的职场成长路径 痛点&#xff1a; 出于恐惧而挖掘不到真实的需求 一味听从权威…

spring项目里的大事务优化

编程型事务更加灵活 声明式事务只需要加在方法头加Transactional注解即可开启事务&#xff0c;但是还是不太灵活&#xff0c;意味着整个方法所进行对数据库操作都要加进事务&#xff0c;当然一次查询也要进入事务&#xff0c;这并不是我们想要的&#xff0c;我们在update、ins…

电容笔和触控笔哪个好用?2023平价好用的电容笔测评

其实&#xff0c;许多产品各有特色&#xff0c;有的注重外观&#xff0c;而有的注重功能。ipad上的那支笔也是如此的。所以&#xff0c;购买电容笔的时候&#xff0c;必须对电容笔有充分的了解。在选购前&#xff0c;必须了解各种类型的电容笔&#xff0c;以决定选购何种电容笔…

ASEMI代理LTC3309AEV#TRMPBF原装ADI车规级LTC3309AEV#TRMPBF

编辑&#xff1a;ll ASEMI代理LTC3309AEV#TRMPBF原装ADI车规级LTC3309AEV#TRMPBF 型号&#xff1a;LTC3309AEV#TRMPBF 品牌&#xff1a;ADI /亚德诺 封装&#xff1a;LQFN-12 批号&#xff1a;2023 安装类型&#xff1a;表面贴装型 引脚数量&#xff1a;12 工作温度:-4…

数字演播厅全新上线,让您的业务展示事半功倍

向客户汇报时还在手忙脚乱找应用&#xff1f; 给领导汇报时还在尴尬的等待应用漫长的加载&#xff1f; 还在因为没有合适的控制设备而施展不开拳脚&#xff1f; 为帮助广大易知微用户提升演示汇报效果&#xff0c;易知微平台上线了「数字演播厅」功能&#xff0c;该功能专注…

22. Unity - 3D游戏开发小计01 --- 修复动画BUG、更改环境光照、导航网格、相机跟随、场景渲染后期处理

1. 导入玩家角色模型 素材来自于unity官网:3D Beginner:Tutorial Resources 在3D游戏开发中,三维物体模型一般会有团队内的其它成员提供,包括模型本身和动画文件等。我们需要做的是将这些素材进行组合并使用代码进行控制。 若对模型添加动画文件后,当运行时可能会发现模型…

OPPO舍弃芯片研发,让人想起欧洲芯片,国产芯片会从此溃败么?

OPPO一瞬间舍弃芯片研发&#xff0c;对国产芯片造成的影响无疑是非常大的&#xff0c;甚至可能导致国产芯片的研发由此溃败&#xff0c;这可以从当年欧洲的芯片业务衰败作为前车之鉴。 GSM称霸2G时代&#xff0c;也让欧洲手机和欧洲芯片企业取得优势&#xff0c;当年爱立信手机…

小红书文案怎么写才能吸引用户,品牌写文技巧

在小红书平台&#xff0c;文案是笔记非常重要的一环&#xff0c;那么文案怎么写才能吸引人呢?下面就让我们来聊一聊小红书文案写作的一些技巧&#xff0c;希望可以对大家有所帮助。 一、 标题 一个好的标题是非常重要的&#xff0c;这相当于是一篇笔记的门面&#xff0c;决定着…

什么是 Java 中的 AOP(面向切面编程)?如何使用它来实现横切关注点?

AOP&#xff08;Aspect-oriented programming&#xff0c;面向切面编程&#xff09;&#xff0c;是一种编程思想和技术&#xff0c;旨在将横切关注点和主业务逻辑分离&#xff0c;使得系统更容易扩展和维护。在 Java 中&#xff0c;AOP 主要通过代理模式和动态字节码生成实现。…

不限次数的chatGPT

不说废话直接看方法&#xff1a; 不用翻墙&#xff0c;开干 第一步&#xff1a;打开电脑的Edge浏览器&#xff0c;就是windows系统的默认浏览器&#xff0c;搜索wetab&#xff0c;点击如下的官方链接就会进入安装插件界面 第二步&#xff1a;点击chat AI就会弹出这个弹窗&…

如何将 Docker 镜像大小从 1.43 GB 减少到 22.4 MB

如果你正在从事 Web 开发&#xff0c;那么你可能已经了解过容器化的概念以及它的优点。 但是&#xff0c;当使用 Docker 时&#xff0c;镜像大小是一个很大的问题。仅仅是从 create-react-app 中得到的样板项目就通常超过 1.43 GB。 今天我们将会容器化一个 ReactJS 应用程序…