java - 如何防止用户刷新页面时购物车商品增加?

标签 java jsp servlets

我使用 servlet 和 jsp 制作了一个购物车,但我遇到了一个问题,每当我刷新 cart 页面时,购物车项目的数量就会增加。实际上,我正在做的是每当用户单击某些产品上的“添加到购物车”按钮时,都会在网址中传递特定的产品ID,就像addtocart.jsp?id=3 和然后根据 id,我从数据库中提取产品并将其添加到购物车中,但是当我刷新此 URL addtocart?id=3 时,此页面中的整个过程将再次运行,从而增加产品数量每次刷新。 我怎么解决这个问题。有什么建议吗?

product.jsp

<%
 String id = request.getParameter("id");
 Connection con = ConnectionManager.getConnection();
 PreparedStatement ps = con.prepareStatement("Select * from products inner join images using(product_name) "
         + "where product_id=?");
 ps.setString(1,id);
 ResultSet rs= ps.executeQuery();
 rs.next();

 String name = rs.getString("product_name");
 String image = rs.getString("image_name");
 String company = rs.getString("company_name");
 String category =  rs.getString("category_name");
 String sub = rs.getString("sub_category_name");
 double price = rs.getDouble("price");
 String summary = rs.getString("summary");
 int hits = rs.getInt("hits");

 //out.println(price);
%>
   <div class="container_16" style="background: #FFF;">
       <div class="grid_16 productHeading">
           <h2 class="heading"><%=name %>- By <%= company %> <%=category%> </h2>
       </div>

       <div class="grid_10">

             <h5>Category: <a href="#" onclick="return false"><%= category %> </a> >
              <a href="#" onclick="return false">  <%= sub %> </a><br/><br/>
              Priced At <span class="Bigred">RS. <%=price %></span> 
             </h5>

             <h2>Summary Of this Item</h2>


                       <div class="grid_5" id="addtocart">
                           <a href="addToCart.jsp?id=<%=id%>">
                              Add To Cart
                           </a>
                           <% if(session.getAttribute("admin")!=null)
                              {
                           %>   
                              <a href="addToCart.jsp?id=<%=id%>">
                              Edit  
                           </a>
                          <%              
                            }
                           %>   
                       </div>

               <br/>

             <h6 class="grey">Summary of <%= name%></h6>
                    <p class="info">
                        <%= summary%>
                    </p>       

       </div>  

       <div class="grid_4" id="pimage">
           <img src="<%= image%>">
       </div>    

  </div>    

最佳答案

使用发布/重定向/获取模式:

  1. 使用 POST 方法而不是 GET 提交表单
  2. 处理发布请求后重定向 repo 物车页面。

Post/Redirect/Get flow https://en.wikipedia.org/wiki/Post/Redirect/Get

关于java - 如何防止用户刷新页面时购物车商品增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391333/

相关文章:

java - 在 Java 中将 HTML 转换为纯文本

java - PyLucene : lucene. initVM() 在 linux RHEL7 上导致段错误

java - 添加当前日期时间逻辑后,无法在java数据库中插入数据

java - JSP 页面加载速度太慢

java - 如何从 servlet 访问 www 目录中的文件?

java - 从代码中的任何位置访问 HttpContext、HttpServletRequest 和 HttpServletResponse

java - 签名 Jar 文件中的 Spring 组件扫描 (@Autowire) 速度很慢

java - Android字符串,我应该使用strings.xml还是java字符串

偶尔找不到 Eclipse Tomcat jsp 类文件

java - 同一个tomcat的webapps之间的共享对象