基于Struts技术的购物车的实现

SSH框架购物车源代码详解与实战 本文还有配套的精品资源,点击获取 简介:SSH框架是Java Web开发中的经典组合,包括Struts、Spring、Hibernate,为构建高效、可扩展的Web应用提供支持。本文档详细解析SSH框架的每个组成部分及其在购物车应用中的具体实现,涵盖了用户交互、业务逻辑、数据持久化和前端交互的各个方面,包括Struts处理用户请求、Spring的依赖注入与事务管理、Hibe... 阅读详情
 
第一部分:购物车的基本功能
从已有的物品列表中选择物品添加到购物车;
可以修改购物车中的物品数量;
可删除购物车中的物品;
可以结账。
 
通常购物车还有的功能包括:根据购物车生成订单、添加邮寄信息等。这些功能相对比较简单,所以不在这里实现。
 
第二部分:实现
       实例包括以下文件:
文件名
主要内容
作用
生成方式
index.jsp
一个超链,链接到购物页面
进入购物页面
使用向导,然后添加代码
DBManager
封装了建立与数据库的连接,执行各种SQL语句的方法
完成与数据库之间的交互
代码完全手写
Good
封装了物品的基本信息,包括
作为值对象在各个层之间传递
代码完全手写
GoodsM
业务逻辑,封装了查询所有物品信息的方法,以及根据编号查询物品信息的方法
管理物品信息,主要查询物品信息
代码完全手写
CartManager
向购物车添加物品,从购物车删除物品,修改购物车中的物品
管理购物车
代码全部手写
BuyAction
根据用户选择的物品编号,把选择的物品添加到购物车中。
购买物品
使用向导,然后修改代码
buy.jsp
显示已有物品的列表,显示购物车中物品信息,物品列表后面有添加购物车的功能,购物车信息后面有修改购物车信息的功能。
显示物品,显示购物车,可以通过这个界面添加、修改购物车信息。
先使用向导生成,然后添加物品信息列表,然后再添加购物车管理功能。
UpdateForm
包含物品编号和物品数量信息,以及验证的方法
完成更新的时候使用
向导生成,然后修改
web.xml
核心控制器ActionServlet的声明,访问方式的声明
完成核心控制器的配置
通过向导生成
struts-config.xml
声明ActionForm,声明Action,声明映射关系
与ActionServlet共同完成控制功能
多数内容是通过向导生成的
       所涉及的文件之间的关系如下:
 
 

DB
DBManager
GoodsM
BuyAction
index.jsp
buy.jsp
goods

显示所有物品信息

DB
DBManager
GoodsM
buy.jsp
Good
cart
AddAction
goods

向购物车中添加信息

DB
DBManager
GoodsM
buy.jsp
Good
cart
AddAction
goods

修改购物车中的信息
       基本过程如下:
Ø         创建数据库
Ø         创建表
Ø         向表中插入测试数据
Ø         创建工程
Ø         创建与数据库进行交互的DBManager
Ø         创建表示物品信息的Good
Ø         创建一个单独的欢迎界面index.jsp
Ø         创建管理物品信息的GoodsM
Ø         创建BuyAction及其配置信息
Ø         创建buy.jsp,显示物品信息
Ø         创建CartManager,用于管理购物车
Ø         创建AddAction,完成物品的添加Action
Ø         修改JSP文件buy.jsp,增加代码来显示购物车中的信息
Ø         创建UpdateAction和UpdateForm
Ø         进行异常处理
在最后添加了一部分内容:如何在MyEclipse中创建Form。
下面详细介绍每一部分。
1、 创建数据库
数据库的名字是:cart
2、 创建表
表名:goods;
创建表的SQL语句:
create table goods(gid char(13) primary key,gname varchar(30),price float,quantity int);
3、 向表中插入测试数据
insert into goods values('0001','洗发水',18,30);
insert into goods values('0002','洗衣粉',6.5,300);
insert into goods values('0003','羽毛球',3,330);
insert into goods values('0004','拖鞋',4.9,230);
insert into goods values('0005','面包',4,380);
insert into goods values('0006','订书机',11,80);
insert into goods values('0007','电池',2.5,1130);
4、 创建工程
工程的名字:cart
Ø         第一步:选择【File】à【New】à【Project】,打开创建工程对话框。
Ø         第二步:选择【MyEclipse】à【J2EE Projects】à【Web Project】。
Ø         第三步:输入Web工程的名字cart即可。
包的名字:com.neu.cart
Ø         第一步:在【src】上点击右键;
Ø         第二步:在弹出的对话框中选择【New】à【Package】;
Ø         第三步:输入包的名字com.neu.cart。
Ø         点击【Finish】。
导入Struts相关的包:
Ø         第一步:在工程的名字cart上点击鼠标右键。
Ø         第二步:在弹出的对话框中选择【MyEclipse】à【Add Struts Capabilities…】。
Ø         第三步:在下面的文件中输设置以下信息:
n         选择Struts的版本1.2
n         选择包的路径,选择刚才建好的包
n         选中画面下面的两个复选框
Ø         点击【Finish】
 
Ø         导入之后察看WEB-INF下面的web.xml,包含了中心控制器的声明以及其它配置信息等,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
 </servlet>
 <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
 </servlet-mapping>
</web-app>
 
本例中我们使用mysql的驱动程序,导入MySql的驱动程序:
Ø         在工程上点击右键
Ø         在弹出的界面上选择【Properties】
Ø         选择左边的【Java Builder Path】,然后选择右边的【Liberaries】。
Ø         点击【Add External JARs…】,在打开的界面中选择数据库的驱动程序。
为了能够在部署的时候把驱动程序也部署到服务器上,需要进行设置:
Ø         选择【Window】à【Preferences…】
Ø         在左边选择【MyEclipse】à【J2EE Projects】à【Web Project】,在右边选择【Deployment】。出现下面的界面:
Ø         如图选择4个复选框中的第一个。这样部署的时候就会把我们添加在Builder Path中的类库部署到服务器上。
5、 创建与数据库进行交互的DBManager
创建包com.neu.cart.common,创建的方式与前面创建com.neu.cart包的过程一样。
创建类DBManager,参考代码如下:
package com.neu.cart.common;
 
import java.sql.*;
 
public class DBManager extends Object{
    private Connection con = null;
    private Statement stmt = null;
    private ResultSet rs = null;
    public void init()
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            //加载驱动程序
       
            con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bookstore","root","root");
            //创建连接
        }catch(Exception e){}
    }
 
    //获取连接
    public Connection getConnection()
    {
        if(con == null)
            init();
        return con;
    }
   
    //执行有结果集的查询
    public int executeUpdate(String sql) throws SQLException
    {
        stmt = getConnection().createStatement();
        return stmt.executeUpdate(sql);
    }
    public ResultSet executeQuery(String sql) throws SQLException
    {
        stmt = getConnection().createStatement();
        return stmt.executeQuery(sql);
    }
   
    public void close()
    {
        if(rs!=null)
            try {
                rs.close();
            } catch (SQLException e) {          }
        if(stmt!=null)
            try {
                stmt.close();
            } catch (SQLException e) {          }
        if(con!=null)
            try {
                con.close();
            } catch (SQLException e) {          }
 
    }
   
}
 
6、 创建表示物品信息的Good
创建包:com.neu.cart.vo
创建类Good
package com.neu.cart.vo;
 
public class Goods {
 
private String gid;
private String gname;
private float price;
private int quantity;
 
public String getGid() {
        return gid;
}
 
public void setGid(String gid) {
        this.gid = gid;
}
 
public String getGname() {
        return gname;
}
 
public void setGname(String gname) {
        this.gname = gname;
}
 
public float getPrice() {
        return price;
}
 
public void setPrice(float price) {
        this.price = price;
}
 
public int getQuantity() {
        return quantity;
}
 
public void setQuantity(int quantity) {
        this.quantity = quantity;
}
}
7、 创建一个单独的欢迎界面
文件名:index.jsp
创建过程如下:
Ø         在工程上点击右键
Ø         在弹出的界面中选择【New】à【JSP】,弹出界面如下:
Ø         在弹出的界面中设置两个信息:第一个是JSP文件的名字index.jsp,第二个是文件的模板,选择【Standard JSP using Struts 1.2】,点击【Finish】。
Ø         生成的代码如下:
 
<%@ page language="java" pageEncoding="UTF-8"%>
 
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
 <head>
    <html:base />
   
    <title>index.jsp</title>
   
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
 </head>
 
 <body>
    This a struts page. <br>
 </body>
</html:html>
Ø         把body中的代码替换成下面的代码即可:
    <html:link action="/buy.do">我要购物!</html:link>
8、 创建GoodsM
完成Goods相关的操作,创建model包。
创建GoodsM类,完成物品的管理。
package com.neu.cart.model;
 
import java.util.ArrayList;
import com.neu.cart.common.*;
import com.neu.cart.vo.*;
import java.sql.*;
 
public class GoodsM {
public ArrayList getGoodsList(int page)
{
        DBManager dbm = new DBManager();
       
        ArrayList list = new ArrayList();
       
        try {
              
               ResultSet rs = dbm.executeQuery("select * from goods");
              
               while(rs.next())
               {
                      Goods goods = new Goods();
                      goods.setGid(rs.getString(1));
                      goods.setGname(rs.getString(2));
                      goods.setPrice(rs.getFloat(3));
                      goods.setQuantity(rs.getInt(4));
                      list.add(goods);
               }
        } catch (SQLException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
        }
        dbm.close();
        return list;
}
public static Goods findGoodsById(String id)
{
        DBManager dbm = new DBManager();
       
        Goods goods = new Goods();
       
        try {
               StringBuffer sql = new StringBuffer();
               sql.append("select * from goods where id='");
               sql.append(id);
               sql.append("'");
               ResultSet rs = dbm.executeQuery(sql.toString());
 
              
               while(rs.next())
               {
                      goods.setGid(rs.getString(1));
                      goods.setGname(rs.getString(2));
                      goods.setPrice(rs.getFloat(3));
               }
        } catch (SQLException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
        }
        dbm.close();
        return goods;        
}
 
}
9、 创建BuyAction及其配置信息
在MyElipse中创建的过程:
Ø         在工程上点击右键,在弹出点的界面上,选择【New】à【Others…】
Ø         在弹出的界面中,选择【MyEclipse】à【Web-Struts】à【Struts1.2】à【Struts1.2 Action】
Ø         在弹出的界面中输入以下信息:
n         在【Use case】后面输入buy,表示这个用例的名字。
n         【path】中输入“/buy”,表示访问的时候使用的路径,就是在index.jsp文件的超链中使用的内容。这个内容通常是根据use case自动生成的,不需要输入。
n         【Action Type】选择【Type】,也就是默认情况,其它相当于重定向和包含,这里是直接提交给Action处理。
n         【Action Impl】:选择【Create new Action class】,如果使用已经存在的类,选择后面的。
n         下面的内容选择默认即可。
Ø         配置跳转关系,在上面的界面中选择中间的【Forwards】,然后点击【Add】,弹出下面的界面:
Ø         【Name】后面输入success,是你为这个跳转关系起的名字,【Path】中输入要跳转到的JSP页面,当Action中选择了success的时候,就跳转到这个文件。点击【Add】完成添加。
Ø         点击【Finish】完成Action的创建。
Ø         创建之后的Action的名字是BuyAction,在execute方法中添加处理代码,修改之后的代码如下:
 
//Created by MyEclipse Struts
// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.9.210/xslt/JavaClass.xsl
 
package com.neu.cart.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.neu.cart.model.*;
import java.util.ArrayList;
/**
 * MyEclipse Struts
 * Creation date: 12-13-2005
 *
 * XDoclet definition:
 * @struts:action validate="true"
 * @struts:action-forward name="success" path="/buy.jsp"
 */
public class BuyAction extends Action {
 
// --------------------------------------------------------- Instance Variables
 
// --------------------------------------------------------- Methods
 
/**
 * Method execute
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */
public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response) {
       
        GoodsM gm = new GoodsM();
        ArrayList goods = gm.getGoodsList(1);
        //如果想进行分页显示,可以在此基础上修改
        request.setAttribute("goods",goods);
       
        return mapping.findForward("success");
       
}
 
}
功能分析:创建业务逻辑Bean GoodsM的对象,然后调用getGoodsList方法得到所有的物品列表,之后把物品列表保存到request中。最后,通过mapping的findForward方法选择“success”对应的界面对用户进行响应。“success”是前面配置的跳转关系。
 
10、              显示物品信息
创建buy.jsp,显示所有的物品信息。该文件的创建过程与前面的index.jsp的创建过程相同。只是显示物品信息的代码如下:
buy.jsp文件:
 <body>
    可以购买的物品有:<br>
    <table>
      <tr>
        <TH>物品编号</TH><TH>物品名称</TH><TH>物品价格</TH><th>库存</th><TH>添加</TH>
      </tr>
    <logic:iterate id="element" name="goods">
      <tr>
        <TD><bean:write name="element" property="gid"/></TD>
        <TD><bean:write name="element" property="gname"/></TD>
        <TD><bean:write name="element" property="price"/></TD>
        <TD><bean:write name="element" property="quantity"/></TD>
        <TD><html:link action="/add.do" paramId="gid" paramName="element" paramProperty="gid">添加到购物车</html:link></TD>
      </tr>
    </logic:iterate>
    </table>
 </body>
其中,<logic:iterate>标签用于迭代输出物品列表中的信息。name指出循环的对象,id表示其中的一个元素。
<bean:write>标签用于输出信息,name是对象的名字,property是对象的属性的名字。
<html:link>标签生成一个超链,提交add.do处理,传递一个参数,参数的名字是gid,参数的值通过paramName和paramProperty指出。意思是在点击【添加到购物车】这个超链的时候,把物品的id传递过去。
11、              创建业务逻辑,完成购物车的管理
创建包com.neu.cart.model。
创建类CartManager,创建的过程如下:
Ø         在包com.neu.cart.model上点击右键,选择【New】à【Class】
Ø         在弹出的界面中输入类的名子CartManager即可。
Ø         之后,修改CartManager的代码如下:
package com.neu.cart.model;
 
import java.util.*;
import com.neu.cart.vo.*;
public class CartManager {
private ArrayList list;
public CartManager()
{
       
}
/*
* 向购物车中添加物品,参数是要添加的物品的编号,默认的一次添加一个。
*/
public ArrayList addGoods(String gid)
{
     // 如果没有物品,直接创建该物品的对象,然后添加到购物车中
        if(list == null)
        {
               System.out.println("Method:addGoods");
               Goods goods = GoodsM.findGoodsById(gid);
               System.out.println("godds"+goods.getGid());
               goods.setQuantity(1);
               list = new ArrayList();
               list.add(goods);
        }
        else
        {
              int i=0;
               boolean find = false;
        // 查找购物车中是否存在要添加的物品,如果存在直接修改购物车
// 中物品的数量,如果不存在,则添加这个物品
               for(;i<list.size();i++)
               {
                      Goods goods = (Goods)list.get(i);
                      if(goods.getGid().equals(gid))
                      {
                             goods.setQuantity(goods.getQuantity()+1);
                             //如果已经存在,修改数量
                            
                             list.set(i,goods);
                            
                             find = true;
                             break;
                      }
               }
               if(!find)
               {
                      Goods goods = GoodsM.findGoodsById(gid);
                      goods.setQuantity(1);
                      list.add(goods);
               }
        }
        System.out.println("元素:"+list.size());
        return list;
}
/*
* 删除购物车中的信息,参数是要删除的物品的编号。
* 删除的过程:首先查找这个物品,查找到这个物品之后,使用List的remove方法删
* 除。
*/
public ArrayList deleteGoods(String gid)
{
        if(list == null)
               return null;
        for(int i=0;i<list.size();i++)
        {
               Goods goods = (Goods)list.get(i);
              if(goods.getGid().equals(gid))
               {
                      list.remove(i);
                      break;
               }
        }
        return list;
}
/*
*更新物品的数量,第一个参数是要更新的物品的编号,第二个参数是更新后的物品的
*数量。首先查找这个物品,查找到之后修改数量,然后再更新的到链表中。
*/
public ArrayList updateGoods(String gid,int quantity)
{
        if(list == null)
               return null;
        for(int i=0;i<list.size();i++)
        {
               Goods goods = (Goods)list.get(i);
               if(goods.getGid().equals(gid))
               {
                      goods.setQuantity(quantity);
                      list.set(i,goods);
                      break;
               }
        }
        return list;
}
// 返回购物信息
 public getList(){return list;}
}
12、              创建AddAction
这个Action的创建过程与前面的BuyAction的创建过程基本相同。execute方法中的主要代码如下:
 
        // 得到session对象,购物车对象存储在session中
HttpSession session = request.getSession();
     // 从session中获取到购物车对象
        Object o = session.getAttribute("cart");
        CartManager cart = null;
        if(o == null)
        {
               cart = new CartManager();
        }
        else
               cart = (CartManager)o;
        // 得到要添加的物品的id
        String gid = request.getParameter("gid");
        // 如果没有物品id,直接跳转到buy.jsp
        if(gid==null)
               return mapping.findForward("success");
        // 把这个物品添加到购物车中
        cart.addGoods(request.getParameter("gid"));
        // 把购物车重新保存到session中
        session.setAttribute("cart",cart);
       
        // 创建消息对象
        ActionMessages errors = new ActionMessages();
       // 把操作成功的信息写到errors对象中
        errors.add("operation",new ActionMessage("message.operation.add"));
        // 保存存储信息
        this.saveErrors(request,errors);
        // 返回选择物品的界面
        return mapping.findForward("success");     
13、              修改JSP文件buy.jsp,增加代码来显示购物车中的信息
    购物车中的物品:<br>
    <table>
      <tr>
        <TH>物品编号</TH><TH>物品名称</TH><TH>物品价格</TH><th>数量</th><TH>添加</TH>
      </tr>
    <logic:iterate id="element" name="cart" property="list">
      <tr>
      <html:form action="/update.do" method="post">
      <html:hidden property="gid" name="element"/>
        <TD><bean:write name="element" property="gid"/></TD>
        <TD><bean:write name="element" property="gname"/></TD>
        <TD><bean:write name="element" property="price"/></TD>
        <TD><html:text property="quantity" name="element"></html:text>
        </TD>
        <TD><html:submit property="action" value="update"/><html:submit property="action" value="delete"/></TD>
      </html:form>
      </tr>
    </logic:iterate>
    </table>
14、              创建UpdateAction和UpdateForm
与AddAction非常类似,自己完成。
15、              进行异常处理
主要是对修改时候输入的数量进行验证。
另外对各种操作的结果进行提示。
 
附:Form的创建过程
Ø         选择【New】à【Others…】,弹出下面的界面:
Ø         选择【MyEclipse】à【Web-Struts】à【Struts1.2】à【Struts1.2 Form】
Ø         在这个界面输入相关信息
n         Use case:使用update,更新购物车时候使用这个这个form,更新购物车对应的是action的use case是update。
n         Name:form的名字,输入use case之后,自动生成,可以不改。
n         Form Impl:选择第一个,表示创建一个新的Form
n         SuperClass:采用默认值即可。
n         Form Type:这个form对应的类文件,也就是创建的ActionForm
Ø         如果要给form添加属性
n         可以选择下面的Form Properties,然后选择【Add】
n         在弹出的界面中配置属性的名字、类型、和输入类型(对应的表单元素的类型)。有多少个属性,添加多少次就可以了。
Ø         设置Form的方法
n         可以选择【Methods】,然后看到下面的界面,选择默认值即可。
Ø         可以根据Form创建JSP文件
n         选择上面的界面中的【JSP】,出现下面的界面:
n         把复选框【Create JSP form】选中,然后在输入jsp文件的名字。我们这里不需要。
 
Struts2+Java电子商务商品管理系统实战 随着互联网的普及与电子商务的迅猛发展,商品管理系统在现代商业活动中扮演着至关重要的角色。它不仅是企业提高效率、拓展市场的利器,也是消费者获取信息、完成交易的重要平台。在本文中,我们将探讨电子商务商品管理系统的几个关键组成部分,并分析它们如何共同作用以优化用户体验、提高运营效率以及保障数据安全。 阅读详情

相关推荐

struts2简单购物车

实现了简单的购物车功能,基本添加商品,删除商品,显示金额等,一个很久的例子,细节的忘了

Javaweb如何使用struts2实现购物车功能?

这里仅给出将商品放在session中的代码,如果你看过我前面用servlet放在数据库中的代码,这里想实现放在数据库中其实也很简单!!下面给出代码: 1.首先,我们要新建一个web工程如图(注意包名一定要符合命名规范): Product中的代码: public class Product { private Integer pid; private String pname; privat...

潇洒不放纵的博客 1131

struts2购物车

struts2 的购物车, 实现了数据库的增删查改,运用jquery美化界面

发一个struts2+hibernate3实现的简单购物车程序

为了和学习javaEE技术的朋友们一起交流,一起分享学习,我刚刚写了一个用struts2+hibernate3实现的简单购物车程序,觉得还可以,所以传上来供大家交流交流,此程序还在完善中如下:我用的数据库是mysql数据库register.sqlcreate table user ( uid varchar(32) not null primary key, ...

weixin_33859504的博客 280

购物车 java struts

购物车java购物车java购物车 java struts购物车 java struts购物车 java struts购物车 java struts

Struts2简单的购物车

eclipse开发工程包 基于Struts2的简单购物车 非常简单一共只有4个跳转页面 JDBC访问MySQL数据库存储读取数据 需要配置一下dao文件中的JDBC配置运行其中main[]建立数据库就 关联下tomcat中的外链可以使用了

基于Struts+Spring+hibernate的网上书店购物车设计开发文档

基于Struts+Spring+hibernate的网上书店购物车设计开发文档基于Struts+Spring+hibernate的网上书店购物车设计开发文档.rar ...

congge4395的博客 114

jsp+struts2购物车

jsp+struts2购物车全部源代码,并包含数据库完整代码。是学习jsp 与struts2的好材料。

Struts 2提交form表单执行action后不跳转(ajax)

今日写项目写到一个商品加入购物车功能,原本设计是点击按钮之后,存储数据,并弹出一个div告知用户添加成功,页面不跳转,看似很简单的功能,却在“不跳转”这点上卡住,我不想跳转咋就这么难呢?查了很多资料,知道了要用ajax,因为本人愚钝,并没有能够解决我的小问题,一度想要放弃,特别感谢熊世唯同学不耐其烦的指导,让我解决了这个小难题 本篇博客旨在还没有深入理解ajax的情况下,实现一个提交form表单后不

并非所有流浪者都迷失了自我 5166

Struts2购物车

java教程购物车Struts_Hibernate

struts2+spring+hibernate框架购物车

struts2+spring+hibernate框架购物车

2010-03-30 购物车核心源码

说明:网上订餐系统:采用Struts2+Jsp+Javabean 实现原理-----》用户有一个购物车属性,其实就是一个数组里边装的是具体的购物项目,它是一 个对象用于封装用户选好的食品! 因此有两个model类 User 和 CarItem  1.下面是购物车Action中的方法:  //删除购物车中的商品 public String DeleteProduct(){

gxh777的专栏 565

Struts2 项目:购物车

简易的网上购书系统:用户必须先注册,登录之后到达我的网上书城,选择自己喜欢的书籍并加入购物车,在购物车中选择支付。

【2024计算机毕业设计】基于jsp+mysql+Spring+hibernate+Struts2的SSH在线蛋糕销售网站平台管理系统

点此进入演示地址最好是java jdk 1.8,我在这个平台上运行的。其他版本理论上也可以。Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以,如果编译器的版本太低,需要升级下编译器,不要弄太低的版本Tomcat 7.x,8.x,9.x版本均可Windows XP/7/8//8.1/10/11或者Linux或者MacOS,2G内存以上,推荐4G,4G以上更好管理员角色包含以下功能:管理员登录,用户管理,蛋糕类别管理,蛋糕管理,订单管理,网站留言管理,公告管理等功能。

xiaomingstart的博客 754

Unity Android构建报错:compileSdk 35兼容性五层定位法

Android构建中的compileSdk是编译时API目标版本,其升级并非孤立操作,而是触发JDK、Android Gradle Plugin(AGP)、NDK、targetSdk与Unity引擎版本之间强耦合校验的起点。当出现'using a newer Android Gradle plugin to use compileSdk = 35'类报错,本质是代际技术栈错配——例如AGP 7.1.3不识别compileSdk 35所需Java 17语法,或NDK 21与AGP 7.4的ABI规范冲突。该问

weixin_32496547的博客 569

将3DMax编辑的动画,导入给已经绑定蒙皮好的模型给Unity使用

现在程序猿想做独立游戏,即容易,也难。 说容易,引擎越来越傻瓜化。 说难,到哪去找靠谱的美术? 好在伟大的AssetStore(还有淘宝上)有大批不赖的资源可以用。 现成的模型,是好,但是,没有配套的动作,却是一件让人头疼的事情,即使用IK动画,也不能完美的弥补这一缺陷。 虽然Unity具备 retargeting 功能,但是,也不是万能的,很多情况下,非标准的骨骼会导致

正经的时候都在打游戏 1万+
上一篇: JSP培训(15)——购物车实例(下)及小结
下一篇: Java Web实践专题——信息查询方式总结
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值