JavaWeb - 仿小米商城(5):商品详情展示

JavaWeb - 仿小米商城(5):商品详情展示

1 功能描述 接上篇 JavaWeb - 仿小米商城(4):商品列表形式 本篇博客将分析和实现小米商城商品详情内容的查 询和展示。如以下H5页面所示:

2 功能分析

2.1 功能逻辑抽象

详情展示功能在逻辑上并不复杂:在商品列表界面每当点击商品 <img>标签或商品名称时,都会向后端 提交一个 GET 请求来获取本商品数据内容。后端在收到请求后查询数据库并以 json 形式返回展示内 容。

查询商品详情内的功能需要面向数据库中的另一张表 tb_goods,为了区分不同类型的数据查询业务以及 代码的维护性和扩展性。在开发时基于三层架构体系建立对应的 GoodsServlet 类、GoodsService 接口 和实现类、GoodsDao 接口和实现类

3 代码实现

3.1 前端

3.1.1 修改商品a链接地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HX8nL2Rf-1652785655545)(C:\Users\30361\AppData\Roaming\Typora\typora-user-images\image-20220516182715257.png)]

3.1.2 编写goodsDetail.html代码

前端在加载<header>内容时便向后端提交异步请求。在商品详情页根据传递过来的id,发出请求向 Servlet获取本商品json数据

html 的<script>标签中定义以下 jQuery 代码:

<script type="text/javascript">
$(document).ready(function () {
var gid = getParams("gid");
$.get("goods.do?action=showGoodById", "gid=" + gid, function (result) {
if (result.flag === true) {
//设置标题上的链接信息
$("#tip").attr("href","getGoodsListByTypeId?typeid="+
result.data.typeid);
$("#tip").text(result.data.name);
//设置大图地址和悬停提示
$("#picImg").attr("src","/"+ result.data.picture);
$("#picImg").attr("alt",result.data.name);
//拼接详情
var gdStr = '<div class="panel-heading">商品详情</div>' +
' <div class="panel-body">' +
' <h3>产品名称:<small>' + result.data.name + '</small>
</h3>' +
' <div style="margin-left: 10px;">' +
' <p>市场价格:&nbsp;&nbsp;&nbsp;' +
'<span class="text-danger" style="font-size: 15px;">' +
result.data.price + '</span>&nbsp;&nbsp;&nbsp;' +
'<span class="glyphicon glyphicon-yen"></span></p> ' +
' <p>上市时间:&nbsp;&nbsp;&nbsp;' + result.data.pubdate +
'</p>' +
' <p>热销指数:&nbsp;&nbsp;&nbsp;';
var stTemp = "";
for (var j = 0; j <= result.data.star; j++) {
stTemp += '<img src="image/star_red.gif" alt="star"/>';
}
gdStr += stTemp;
gdStr += ' <p>详细介绍:</p>' +
' <p>&nbsp;&nbsp;' + result.data.intro + '</p>' +
' <a href="addCart?goodsId=' + result.data.id + '&price='
+ result.data.price + '" class="btn btn-warning">' +
'加入购物车&nbsp;&nbsp;&nbsp;<span class="glyphicon glyphiconshopping-cart"></span></a>&nbsp;&nbsp;&nbsp;' +
' <button class="btn btn-danger">直接购买</button>' +
' </div>' +
' </div>';
//将拼接好的字符放在在html内
$("#spDetail").html(gdStr);
}
});
});
</script>

3.2 后端

3.1.1 Servlet

在 GoodsServlet 类中定义查询所有商品分类内容的主体逻辑

@WebServlet("/goods.do")
public class Goodservlet extends BaseServlet{
//... ...
/**
* 根据传递商品id到商品详情页
* @param request
* @param response
* @return
*/
	public String getGoodsById(HttpServletRequest request, HttpServletResponse
response) {
		String id = request.getParameter("id");
		return Constants.REDIRECT+ "/goodsDetail.html?gid="+id;
}
/**
* 根据商品id返回所有商品json数据
* @param request
* @param response
* @return
*/
public String getGoodById(HttpServletRequest request, HttpServletResponse
response) {
		String gid = request.getParameter("gid");
		int id=1;//没有默认显示1号商品
		if(gid!=null){
		id= Integer.parseInt(gid);
	}
		IGoodService service = new GoodServiceImpl();
		resultData.setFlag(false);
		Goods goods = service.queryDataById(id);
		if(goods!=null){
		resultData.setFlag(true);
		resultData.setData(goods);
	}
	String json = JSON.toJSONString(resultData);
	System.out.println(json);
	//在响应中声明返回的是json格式字符
	response.setContentType("application/json;charset=utf-8");
	return json;
}
}
3.1.2 Service

在 GoodsImpl 类中定义 findAll() 方法,定义旅游线路分类内容的具体查询业务逻辑

public class GoodsServiceImpl implements IGoodsTypeService {
		//... ...
	@Override
	public Goods queryDataById(int id) {
		return goodsDao.findDataById(id);
	}
}
3.1.3 Dao

在 GoodsDaoImpl 类中定义 getAllDatas() 方法,操作数据库查询 tb_goods_type表中的所有内容

public class GoodsTypeDaoImpl implements IGoodsTypeDao {
//... ...
	@Override
	public Goods findDataById(int id) {
		String sql="select * from tb_goods where gstate=0 and id=?";
		List<Goods> goods = queryBySql(sql,id);
		if(goods!=null &goods.size()>=1){
		return goods.get(0);
			}
		return null;
	}
}

tate=0 and id=?";
List goods = queryBySql(sql,id);
if(goods!=null &goods.size()>=1){
return goods.get(0);
}
return null;
}
}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于引用[1]和引用提供的信息,可以介绍一下javaweb仿小米商城的实现方式。 1. 技术栈:该系统使用了Java作为后端开发语言,使用了Spring Boot框架进行快速开发,前后端分离采用了Vue.js作为前端发框架,数据库使用了MySQL,项目管理具使用了Maven,缓存使用了Redis。 2. 后端开发:后端采用了Spring Boot框架,使用了SSM(SpringMVC + Spring + MyBatis)作为持久层框架,通过Maven进行项目管理。后端主要负责处理前端请求,与数据库进行交互,实现商品管理、用户管理、订单管理等功能。 3. 前端开发:前端采用了Vue.js作为开发框架,通过Ajax与后端进行数据交互。前端主要负责展示商品信息、用户登录注册、购物车管理、订单生成等功能。 4. 数据库设计:使用MySQL作为数据库,设计商品表、用户表、订单表等相关表结构,通过MyBatis进行数据库操作。 5. 缓存管理:使用Redis作为缓存,提高系统性能和响应速度,常用的缓存数据包括商品信息、用户信息等。 6. 安全性:在用户登录注册、订单生成等关键操作中,采用了加密算法和安全验证机制,保证用户数据的安全性。 7. 部署和运维:使用Maven进行项目管理,通过Docker容器化部署,使用Nginx进行反向代理和负载均衡,保证系统的稳定性和可扩展性。 8. 其他功能:系统还可以实现商品搜索、商品推荐、购物车管理、订单支付等功能,提升用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值