基于SSM的鲜花商城、网上花店、鲜花销售系统 后端技术:Spring、SpringMVC、MyBatis + Tomcat 前端技术:JSP、jQuery 、BootStrap 数据库:MySQL 软件:IDEA/Ecilpse/MyEcilpse、Navicat/Sqlsong

花店搬上网这事儿听起来简单,真要动手搞起SSM框架的商城系统,里头藏着不少有意思的弯弯绕绕。咱们今天就来扒一扒这个鲜花电商系统的技术实现,保准你能在代码里闻到花香。

先看后端这三大件怎么咬合。Spring的依赖注入在商品分类模块用得那叫一个溜,看这段Service层代码:

@Service
public class CategoryServiceImpl implements CategoryService {
    @Autowired
    private CategoryMapper categoryMapper;

    @Transactional
    public void updateCategoryFlowerCount(Integer categoryId) {
        categoryMapper.increaseFlowerCount(categoryId);
        // 这里故意留个坑,后面说事务回滚的事儿
        System.out.println("更新分类下鲜花数量成功");
    }
}

@Autowired这注解把MyBatis的Mapper接口直接拽进来用,就像在咖啡机里塞了咖啡豆自动出咖啡。@Transactional注解更绝,当某个倒霉订单支付失败时,所有数据库操作自动回滚,比超市退货还利索。

说到MyBatis的动态SQL,鲜花搜索功能绝对是个典型。看看这XML配置:

<select id="searchFlowers" resultType="Flower">
    SELECT * FROM flowers
    <where>
        <if test="keyword != null">
            name LIKE CONCAT('%',#{keyword},'%')
        </if>
        <if test="minPrice != null">
            AND price >= #{minPrice}
        </if>
        <if test="maxPrice != null">
            AND price &lt;= #{maxPrice}
        </if>
    </where>
    ORDER BY sales_volume DESC
</select>

这where标签聪明得很,没传价格参数时自动忽略价格条件,比会变脸的川剧演员还灵活。特别要注意那个<符号,XML里直接写小于号会报错,这个坑新手一踩一个准。

前端页面用Bootstrap搭架子,JSP里嵌EL表达式活生生把1999年的技术玩出花。看看商品列表页这个循环:

<div class="row">
<c:forEach items="${flowerList}" var="flower" varStatus="vs">
    <div class="col-md-3">
        <div class="thumbnail">
            <img src="${ctx}/upload/${flower.image}" 
                 onerror="this.src='${ctx}/images/default.jpg'" 
                 class="img-responsive">
            <div class="caption">
                <h4>${fn:escapeXml(flower.name)}</h4>
                <p class="text-danger">¥<fmt:formatNumber value="${flower.price}" pattern="#0.00"/></p>
                <button class="btn btn-warning addCart" data-id="${flower.id}">
                    <i class="glyphicon glyphicon-shopping-cart"></i> 加入购物车
                </button>
            </div>
        </div>
    </div>
</c:forEach>
</div>

fn:escapeXml防XSS攻击这个细节不能少,不然用户在商品名里写个<script></script>

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐