欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jsp购物车简单实现思想(一)

程序员文章站 2024-03-20 13:38:28
...

目录

 

学习目标:

1.通过超链接a传参将所点击购买的商品id传到处理页面doShopCart.jsp进行处理

2.接收超链接a所传productid并进行处理

3.接收处理后的存储多个id的ArrayList aList购物车列表,通过ProItemDaoImp类的getProItemByIds(aList)方法从数据库取出商品id所对应的商品信息

4.通过实现类ProItemDaoImp调getProItemByIds(aList)方法获得商品集合通过遍历输出在页面上

 

 

 


学习目标:

理解并掌握jsp中购物车的简单实现思想


核心步骤

1.通过超链接a传参将所点击购买的商品id传到处理页面doShopCart.jsp进行处理

所需的主要知识超链接传参,jsp表达式

核心代码:

<a href="doShopCart.jsp?productid=<%=p.get("productid") %>">

商品列表展示:jsp购物车简单实现思想(一)


2.接收超链接a所传productid并进行处理

所需的主要知识:session对象getAttribute(),setAttrubute()方法,request对象的get.getParameter()方法

核心代码:

<%
       //从商品列表获取添加到购物车       		
       		String id=null;
			//判断购物车列表是否为空,若不为空则先获取该列表再传商品id
       		//此判断是重点⭐⭐⭐
            if(session.getAttribute("cartList")!=null){
       			//获得id
       			id=request.getParameter("productid");
       			//接收购物车列表
       			ArrayList<String> cartList=(ArrayList<String>)session.getAttribute("cartList");
       			cartList.add(id);
       			//更新购物车列表
       			session.setAttribute("cartList",cartList);
       			//重定向到购物车
       			response.sendRedirect("shopCart.jsp");
       		}else{//若为空则先创建购物车列表再添加商品id
       			
       			//创建购物车列表存储id
       			ArrayList<String> cartList=new ArrayList<String>();
       			//同上
       			id=request.getParameter("productid");
       			cartList.add(id);
       			session.setAttribute("cartList",cartList);
       			response.sendRedirect("shopCart.jsp");
       		}         			                                                          	
 %>

3.接收处理后的存储多个id的ArrayList aList购物车列表,通过ProItemDaoImp类的getProItemByIds(aList)方法从数据库取出商品id所对应的商品信息

所需要的知识:数据库连接(略),sql语句的查询,ArrayList,泛型

核心代码

//工具类
public class DataBase {
	 static String driver="com.mysql.jdbc.Driver";//驱动字符串
	 static String url="jdbc:mysql:///mypos?characterEncoding=utf-8";//
	//连接字符串1                    **所需连接数据库的名称***

	 static String username="root";//数据库访问用户名
	 static String password="123";//数据库访问密码
	 PreparedStatement ps=null; 
	 Connection conn=null;
	 Statement sm=null;
                 ResultSet rs=null;
	public Connection getConn() {
		return conn;
	}
	public void setConn(Connection conn) {
		this.conn = conn;
	}
	public Statement getSm() {
		return sm;
	}
	public void setSm(Statement sm) {
		this.sm = sm;
	}
	public ResultSet getRs() {
		return rs;
	}
	public void setRs(ResultSet rs) {
		this.rs = rs;
	}

	 public DataBase(){
		try {
			//1.加载驱动
			Class.forName(driver);
			//2.建立连接
			conn=DriverManager.getConnection(url, username, password);
			sm=conn.createStatement();	
			//3.执行sql语句(封装到方法中)	
		} catch (ClassNotFoundException e) {	
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	 }
	 //执行sql语句获得结果集
	 public ResultSet getResult(String sql){
		try {
			return rs=sm.executeQuery(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return rs;	 
	 }

}

//类的dao

public interface ProItemDao {	
	public ArrayList<HashMap<String,Object>> getProItemByIds(ArrayList<String> idList);
}


//类的daoImp

public class ProItemDaoImp extends DataBase implements ProItemDao {

	@Override
	public ArrayList<HashMap<String, Object>> getProItemByIds(ArrayList<String> idList) {
		ArrayList<HashMap<String, Object>> aList=new ArrayList<HashMap<String,Object>>();
		String sql=null;
		ResultSet rs=null;
		//通过遍历将购物车列表中的id分别执行查询,并且将所有结果添加到ArrayList结果集中
		for (String id:idList) {
			sql="SELECT p.productid,p.name,i.listprice,i.status"
					+" FROM product p,item i,category c"
					+" WHERE p.productid=i.productid && p.productid='"+id+"' && p.category=c.catid";
             //根据自己的需求去拼接sql语句
			//通过getResult 方法获得结果集
			rs = this.getResult(sql);			
			try {
				while(rs.next()){
					//创建HashMap对象将数据存进去
					HashMap<String, Object> map=new HashMap<>();
                    //根据数据库中表所对应列名存进HashMap
					map.put("productid", rs.getString("productid"));					
					map.put("name", rs.getString("name"));					
					map.put("listprice", rs.getDouble("listprice"));					
					map.put("status", rs.getString("status"));
					//将该对象存到ArrayList中返回获得的结果集
					aList.add(map);								
				}
			} catch (SQLException e) {	
				e.printStackTrace();
			}
		}	
		return aList;
	}

}


4.通过实现类ProItemDaoImp调getProItemByIds(aList)方法获得商品集合通过遍历输出在页面上

所需要的知识:HashMap中操作方法,遍历

核心代码

<%
       	 	//从carList存储的id获得购物车列表
       		ProItemDaoImp pidi=new ProItemDaoImp();  
			//接收购物车列表
           	ArrayList<String> a=(ArrayList<String>)session.getAttribute("cartList");
			//通过ProItemDaoImp类中的getProItermByIds方法,
            //获得购物车列表中存的多个id获取商品信息
           	ArrayList<HashMap<String,Object>> cart=pidi.getProItemByIds(a);         
           	//遍历获得的商品列表,通过循环输出到网页购物车中
			for(HashMap<String,Object> hm:cart){          		           		
%>

                <tr ><td><%=hm.get("productid") %></td>
                <td ><%=hm.get("name") %></td><td ><%=hm.get("listprice") %></td>
                <td>1</td><td><input type="button"  value="删除" /></td></tr>				

<%
           	}
                      	                    	
 %>
         		               

​

购物车列表展示:

jsp购物车简单实现思想(一)


总结:该功能重点在通过session对象传递商品id列表和对id列表进行sql处理


相关标签: jsp java