易买网项目完工,把一些新知识记录下来,以便以后查阅,也方便他人借阅。介绍使用cookies查询商品详情。

第一步:建立商品实体类。

第二步:连接Oracle数据库。

第三步:使用三层架构。

效果图如下:

当我看中新疆牛肉干,商品点击时,进入查看商品详情页。

商品详情页:

核心代码如下:

 <%
//创建商品业务逻辑对象
productBiz prodctbiz = new productBizImpl(); List<easybuy_product> productlist = prodctbiz.findproductList();
request.setAttribute("productlist",product);
%>
//EL表达式
核心架包
<%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
//EL表达式:
<c:forEach var="news" items="${requestScope.productlist}" > <li class="ck">
<dl>
<dt><a href="addcookie?id=${news.ep_id}"><img src="${news.ep_file_name}" /></a></dt>
<dd class="title"><a href="addcookie?id=${news.ep_id}">${news.ep_name}</a></dd>
<dd class="price">¥${news.ep_price}.00</dd>
</dl> </li> </c:forEach>

第二步:在Servlet创建addcookie.java页面,获取商品id:(注意:必须在web.xml写入)

        <!--商品id存在cookies-->
<servlet>
<servlet-name>addcookie</servlet-name>
<servlet-class>Servlet.addcookie</servlet-class>
</servlet> <!-- 映射servlet -->
<servlet-mapping>
<servlet-name>addcookie</servlet-name>
<url-pattern>/addcookie</url-pattern>
</servlet-mapping>
package Servlet;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class addcookie extends HttpServlet { /**
* Constructor of the object.
*/
public addcookie() {
super();
} /**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
request.setCharacterEncoding("utf-8");
//获取商品id
String id = request.getParameter("id");
//转发的页面
response.setHeader("refresh", "0;url=/yimaiWang/product-view.jsp?id="+id); Cookie[] cookies = request.getCookies(); String visitlist = null;
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("visitlist")) {
visitlist = cookie.getValue();
break;
}
}
if (visitlist == null) { Cookie cookie = new Cookie("visitlist", id);
cookie.setMaxAge(180);
response.addCookie(cookie); } else { String[] existIds = visitlist.split(",");
for (String exsitId : existIds) {
if (exsitId.equals(id)) { return;
}
} Cookie cookie = new Cookie("visitlist", visitlist + "," + id);
cookie.setMaxAge(180);
response.addCookie(cookie); }
} else { Cookie cookie = new Cookie("visitlist", id);
cookie.setMaxAge(180);
response.addCookie(cookie); }
} }

第三步:跳转商品详情页product-view.jsp(这俩个查询语句不同,一个是查询商品id,一个是商品List集合)

public easybuy_product findProductForid(int id) {
con=this.getConnection();
int i =id;
String sql = "select * from easybuy_product where ep_id =?"; easybuy_product pd = new easybuy_product(); try
{
st=con.prepareStatement(sql);
st.setInt(1,id);
rs=st.executeQuery(); while(rs.next())
{ pd.setEp_id(rs.getInt(1));
pd.setEp_name(rs.getString(2));
pd.setEp_description(rs.getString(3));
pd.setEp_price(rs.getInt(4));
pd.setEp_stock(rs.getInt(5));
pd.setEpc_id(rs.getInt(6));
pd.setEpc_child_id(rs.getInt(7));
pd.setEp_file_name(rs.getString(8));
}
} catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}finally{
this.ShiFang(rs, st, con); } return pd;
}
}
public List<easybuy_product> product(String id) {
List<easybuy_product> listproduct=new ArrayList<easybuy_product>();
// TODO Auto-generated method stub con = this.getConnection(); String sql="select * from easybuy_product where ep_id=?";
try {
st=con.prepareStatement(sql);
st.setString(1,id);
rs=st.executeQuery();
while(rs.next()){
easybuy_product product = new easybuy_product();
product.setEp_id(rs.getInt(1));
product.setEp_name(rs.getString(2));
product.setEp_description(rs.getString(3));
product.setEp_price(rs.getInt(4));
product.setEp_stock(rs.getInt(5));
product.setEpc_id(rs.getInt(6));
product.setEpc_child_id(rs.getInt(7));
product.setEp_file_name(rs.getString(8)); listproduct.add(product);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); this.ShiFang(rs, st, con);
} return listproduct;
}

<%
//获取商品id
int id = Integer.parseInt(request.getParameter("id"));
productBiz bizvoid = new productBizImpl();
easybuy_product shop = bizvoid.findProductForid(id);
request.setAttribute("shop",shop);
%>

<%
//获取商品id
request.setCharacterEncoding("utf-8");
String a = request.getParameter("id");
%>
<% //创建商品信息业务逻辑对象
productBiz productbiz = new productBizImpl(); List<easybuy_product> list =productbiz.product(a);
request.setAttribute("list",list); %>
<div id="product" class="main">
<c:forEach var="product" items="${requestScope.list}" >
<h1><%=shop.getEp_name() %></h1>
</c:forEach>
<div class="infos">
<c:forEach var="product" items="${requestScope.list}" >
<div class="thumb"><img src="${product.ep_file_name}" width="300px" /></div>
<div class="buy">
<p>商品描述:<span class="price">${product.ep_description}</span></p>
<p>商城价:<span class="price">¥${product.ep_price}.00</span></p>
<c:if test="${product.ep_stock==null}">
<p class="w1 c">缺货</p>
</c:if>
<c:if test="${product.ep_stock!=null}">
<p class="w1 c">有货</p>
</c:if>
<c:if test="${name==null}">
<script type="text/javascript">
function ck(){
alert("你未登入,请去登入吧!");
return false;
}
</script> </c:if>

使用cookies查询商品详情的更多相关文章

  1. 使用cookies查询商品浏览记录

    经历了俩个星期,易买网项目如期完工,现在总结一下如何使用cookies实现浏览商品的历史记录. 第一步:创建商品实体类. 第二步:连接oracle数据库. 第三步:创建商品三层架构. 效果图: 在要显 ...

  2. Vue框架H5商城类项目商品详情点击返回弹出推荐商品弹窗的实现方案

    需求场景: 非推荐商品详情页返回的时候弹出弹窗推荐商品,点击弹窗按钮可以直接访问推荐商品: 只有直接进入商品详情页返回才会弹出推荐商品弹窗: 每个用户访问只能弹一次(除非清除缓存). 需求分析: 1. ...

  3. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第九天】(商品详情页面实现)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  4. SSH网上商城---商品详情页的制作

    在前面的博文中,小编分别简单的介绍了邮件的发送以及邮件的激活,逛淘宝的小伙伴都有这样的体会,比如在搜索框中输入连衣裙这个商品的时候,会出现多种多样各种款式的连衣裙,连衣裙的信息包括价格,多少人购买,商 ...

  5. 如何用Baas快速在腾讯云上开发小程序-系列4:实现客户侧商品列表、商品详情页程序

    版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/431172001487671163 来源:腾云阁 h ...

  6. JAVAEE——宜立方商城09:Activemq整合spring的应用场景、添加商品同步索引库、商品详情页面动态展示与使用缓存

    1. 学习计划 1.Activemq整合spring的应用场景 2.添加商品同步索引库 3.商品详情页面动态展示 4.展示详情页面使用缓存 2. Activemq整合spring 2.1. 使用方法 ...

  7. [springboot 开发单体web shop] 8. 商品详情&评价展示

    上文回顾 上节 我们实现了根据搜索关键词查询商品列表和根据商品分类查询,并且使用到了mybatis-pagehelper插件,讲解了如何使用插件来帮助我们快速实现分页数据查询.本文我们将继续开发商品详 ...

  8. Day13_商品详情及静态化

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...

  9. Android开发案例 - 淘宝商品详情

    所有电商APP的商品详情页面几乎都是和淘宝的一模一样(见下图): 采用上下分页的模式 商品基本参数 & 选购参数在上页展示 商品图文详情等其他信息放在下页展示 知识要点 垂直方向的ViewPa ...

随机推荐

  1. PAT 1113 Integer Set Partition

    Given a set of N (>1) positive integers, you are supposed to partition them into two disjoint set ...

  2. 申请SSL证书怎样验证域名所有权

    申请域名型证书时,系统将提供以下三种方式验证域名的所有权,请根据自己的实际情况选择其中一种进行域名验证: 1.管理员邮箱验证 系统会向你选择的管理员邮箱 发送验证邮件,能够收到验证邮件,并点击邮件中验 ...

  3. 【codeforces 801C】Voltage Keepsake

    [题目链接]:http://codeforces.com/contest/801/problem/C [题意] 有n个设备 你想同时使用 第i个设备每分钟消耗ai点电量,一开始有bi点电量 你有一个充 ...

  4. nyoj_782_星期几?_201312071940

    星期几? 时间限制:500 ms  |           内存限制:65535 KB 难度:2   描述                      Acmer 小鱼儿 埋头ku算一道题 条件:已知给 ...

  5. 网络流入门 Drainage Ditches

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) ...

  6. J - Simpsons’ Hidden Talents

    Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had. Marg ...

  7. [bzoj2783][JLOI2012]树_树的遍历

    树 bzoj2783 JLOI2012 题目大意:给定一棵n个点的树.求满足条件的路径条数.说一个路径是满足条件的,当且仅当这条路径上每个节点深度依次递增且点权和为S. 注释:$1\le n\le 1 ...

  8. [转]十五天精通WCF——第十一天 如何对wcf进行全程监控

    说点题外话,我们在玩asp.net的时候,都知道有一个叼毛玩意叫做“生命周期”,我们可以用httpmodule在先于页面的page_load中 做一些拦截,这样做的好处有很多,比如记录日志,参数过滤, ...

  9. HDU 5242 上海大都会 G题

    这道题其实是求K条最长的不重叠的链.贪心算法+DFS即可求.深度优先搜索时,返回当前子树的最长链,使用优先队列保存其他孩子结点的最长链,即可.求结果时只需从优先队列中取前K个值的和.这相当于暴力删除每 ...

  10. POJ2777 Count Color 线段树区间更新

    题目描写叙述: 长度为L个单位的画板,有T种不同的颜料.现要求按序做O个操作,操作分两种: 1."C A B C",即将A到B之间的区域涂上颜色C 2."P A B&qu ...