E commerce 多么不同的URL';他们在工作

E commerce 多么不同的URL';他们在工作,e-commerce,query-parameters,E Commerce,Query Parameters,我想问一个关于一些网站如何工作的理论问题。举个例子,假设我在A市场的网上商店。我在购物车里放了一箱葡萄酒,页面上显示了以下URL: www.A.co.uk/webstore/basket.asp?calledby=normal&ProductCode=6379044 我继续购物,然后在购物车里放了一瓶不同的酒,页面上又出现了这个URL www.A.co.uk/webstore/basket.asp?calledby=normal&ProductCode=6323456 然后我

我想问一个关于一些网站如何工作的理论问题。举个例子,假设我在A市场的网上商店。我在购物车里放了一箱葡萄酒,页面上显示了以下URL:

www.A.co.uk/webstore/basket.asp?calledby=normal&ProductCode=6379044
我继续购物,然后在购物车里放了一瓶不同的酒,页面上又出现了这个URL

www.A.co.uk/webstore/basket.asp?calledby=normal&ProductCode=6323456
然后我在浏览器上点击后退按钮三次,电车页面再次出现。这一次只包含第一项,而不包含第二项

在另一个网站上,我展示了以下内容:

我选了一箱酒。因此,包含葡萄酒的表单被发布到此ASP页面
basket.ASP?Item=3605681
,其中Item是葡萄酒特定案例的ID。但是,浏览器中显示的页面具有不同的URL:

www.B.com/extra/basket.aspx?acstore=10&ba=0
然后我又往篮子里添了一箱不同的酒。出现的地址与前一个地址完全相同


当我点击后退按钮时,购物篮总是显示我有两件物品在购物篮中。你认为这些在线商店是如何对网站进行编程的,这样即使用户多次按下后退按钮,购物篮也会显示其当前状态?另外,这两种情况的区别是什么?

篮子可能存储在会话中。会话通常由cookies支持。在JSP/Servlet中,它是
JSESSIONID
cookie。要自己测试它,请在浏览器的cookie存储中找到cookie并将其删除。您将看到页面刷新将导致一个空的篮子。有关更详细的背景信息,请阅读

在JSP/Servlet术语中,可以按如下方式检索/预创建篮子:

Basket basket = (Basket) session.getAttribute("basket");

if (basket == null) {
    basket = new Basket();
    session.setAttribute("basket", basket);
}

// ...
String productCode = request.getParameter("productCode");
Product product = someProductService.find(productCode);

if (product != null) {
    basket.addProduct(product);
}

// ...
<table>
  <c:forEach items="${basket.products}" var="product">
     <tr>
        <td>${product.code}</td>
        <td>${product.description}</td>
        <td>${product.quantity}</td>
        <td>${product.price}</td>
     </tr>
  </c:forEach>
</table>
只要用户在同一会话中与同一网页进行交互,这种情况就会存在。任何产品都可以添加到篮子中,如下所示:

Basket basket = (Basket) session.getAttribute("basket");

if (basket == null) {
    basket = new Basket();
    session.setAttribute("basket", basket);
}

// ...
String productCode = request.getParameter("productCode");
Product product = someProductService.find(productCode);

if (product != null) {
    basket.addProduct(product);
}

// ...
<table>
  <c:forEach items="${basket.products}" var="product">
     <tr>
        <td>${product.code}</td>
        <td>${product.description}</td>
        <td>${product.quantity}</td>
        <td>${product.price}</td>
     </tr>
  </c:forEach>
</table>
在JSP中,您可以按如下方式显示它:

Basket basket = (Basket) session.getAttribute("basket");

if (basket == null) {
    basket = new Basket();
    session.setAttribute("basket", basket);
}

// ...
String productCode = request.getParameter("productCode");
Product product = someProductService.find(productCode);

if (product != null) {
    basket.addProduct(product);
}

// ...
<table>
  <c:forEach items="${basket.products}" var="product">
     <tr>
        <td>${product.code}</td>
        <td>${product.description}</td>
        <td>${product.quantity}</td>
        <td>${product.price}</td>
     </tr>
  </c:forEach>
</table>

${product.code}
${product.description}
${product.quantity}
${product.price}

篮子可能存储在会话中。会话通常由cookies支持。在JSP/Servlet中,它是
JSESSIONID
cookie。要自己测试它,请在浏览器的cookie存储中找到cookie并将其删除。您将看到页面刷新将导致一个空的篮子。有关更详细的背景信息,请阅读

在JSP/Servlet术语中,可以按如下方式检索/预创建篮子:

Basket basket = (Basket) session.getAttribute("basket");

if (basket == null) {
    basket = new Basket();
    session.setAttribute("basket", basket);
}

// ...
String productCode = request.getParameter("productCode");
Product product = someProductService.find(productCode);

if (product != null) {
    basket.addProduct(product);
}

// ...
<table>
  <c:forEach items="${basket.products}" var="product">
     <tr>
        <td>${product.code}</td>
        <td>${product.description}</td>
        <td>${product.quantity}</td>
        <td>${product.price}</td>
     </tr>
  </c:forEach>
</table>
只要用户在同一会话中与同一网页进行交互,这种情况就会存在。任何产品都可以添加到篮子中,如下所示:

Basket basket = (Basket) session.getAttribute("basket");

if (basket == null) {
    basket = new Basket();
    session.setAttribute("basket", basket);
}

// ...
String productCode = request.getParameter("productCode");
Product product = someProductService.find(productCode);

if (product != null) {
    basket.addProduct(product);
}

// ...
<table>
  <c:forEach items="${basket.products}" var="product">
     <tr>
        <td>${product.code}</td>
        <td>${product.description}</td>
        <td>${product.quantity}</td>
        <td>${product.price}</td>
     </tr>
  </c:forEach>
</table>
在JSP中,您可以按如下方式显示它:

Basket basket = (Basket) session.getAttribute("basket");

if (basket == null) {
    basket = new Basket();
    session.setAttribute("basket", basket);
}

// ...
String productCode = request.getParameter("productCode");
Product product = someProductService.find(productCode);

if (product != null) {
    basket.addProduct(product);
}

// ...
<table>
  <c:forEach items="${basket.products}" var="product">
     <tr>
        <td>${product.code}</td>
        <td>${product.description}</td>
        <td>${product.quantity}</td>
        <td>${product.price}</td>
     </tr>
  </c:forEach>
</table>

${product.code}
${product.description}
${product.quantity}
${product.price}