javaWeb实战教程10-商品模块的编码实现

本文是JavaWeb实战教程的第10部分,主要讲解商品模块的编码实现,包括商品列表和商品详细页面的开发。商品列表支持按分类筛选、多种排序方式和分页功能,商品详情页面展示商品信息并推荐相关商品。文章详细介绍了dao、service、servlet和jsp的实现过程。
摘要由CSDN通过智能技术生成

javaWeb实战教程


7.商品模块的开发

商品模块分为商品列表和商品详细两个页面,其中商品列表可以按照商品分类筛选,还可以按照多种方法排序;商品详细除了有这个商品的信息外,还推荐了几个商品。

根据数据库新建Product.java:

public class Product {

    private int id;
    private String name;
    private String des;
    private double price;
    private double oldprice;
    private int stock;
    private String pic1;
    private String pic2;
    private String pic3;
    private String pic4;
    private String txt;
    private int click;
    private int rank;

    private int claszId;
}

其中click是商品的点击量,点击量越高说明人气越高;rank是商品的排序等级,rank越高排序越靠前;claszId是外键clasz的主键id。


7.1 商品列表页面

商品列表页面是通过页头的分类点击进来的,所以商品列表按照分类进行筛选;其次商品列表根据综合排序、价格、人气、上架时间进行排序;商品列表还带分页功能,可以显示一共有多少条数据。

根据这些需求,我们一步步来编码实现。


7.1.1 dao的实现

新建ProductDao.java,在里面写上方法:

public List<Product> getListByClaszId(int claszId, String orderby, boolean isDesc, int page, int max)
public int getListCountByClaszId(int claszId)

getListByClaszId是根据clasz的id,按照orderby进行排序的方法,这涉及到sql语句的拼接:

StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append("select * from Product ");
if (claszId > 0)
    sqlBuffer.append(" where claszId=? ");
sqlBuffer.append(" order by ");
sqlBuffer.append(orderby);
if (isDesc)
    sqlBuffer.append(" desc");
sqlBuffer.append(" limit ?,?");

最后发起查询:

Object[] params = null;
if (claszId > 0) {
    params = new Object[] { claszId, (page - 1) * max, max };
} else {
    params = new Object[] { (page - 1) * max, max };
}

return new QueryRunner().query(connection, sqlBuffer.toString(),
            new BeanListHandler<>(Product.class), params);

getListCountByClaszId方法是根据clasz的id来查询商品总数:

public int getListCountByClaszId(int claszId) throws SQLException {

    return new QueryRunner().query(connection,
            "select count(*) from product where claszId=?",
            new ScalarHandler<Long>(), claszId).intValue();

}

7.1.2 service的实现

这里并没有什么义务逻辑,主要是数据库查询,直接调用productDao:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值