1。实体类package org.mh.fight.entity;public class Flightinfo {
int id;
String start_place;
String end_place;
String time;
double price; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getStart_place() {
return start_place;
} public void setStart_place(String start_place) {
this.start_place = start_place;
} public String getEnd_place() {
return end_place;
} public void setEnd_place(String end_place) {
this.end_place = end_place;
} public String getTime() {
return time;
} public void setTime(String time) {
this.time = time;
} public double getPrice() {
return price;
} public void setPrice(double price) {
this.price = price;
}
}2。购物车package org.mh.fight.util;import org.mh.fight.entity.Flightinfo;public class BuyCar {
Flightinfo flightinfo;
int num;
public Flightinfo getFlightinfo() {
return flightinfo;
}
public void setFlightinfo(Flightinfo flightinfo) {
this.flightinfo = flightinfo;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}3。购物车Map: key为Flightinfo ID(编号) ,value 为buyCar里面是(flightinfo和num),购物车Map用Session来维护 // 根据ID查询出相关的记录
public Flightinfo flightInfoById(String id, HttpSession session) {
ArrayList arrayList = (ArrayList) session.getAttribute("list");
for (int i = 0; i < arrayList.size(); i++) {
Flightinfo flightinfo = (Flightinfo) arrayList.get(i);
if (id.equals(flightinfo.getId())) {
return flightinfo;
}
}
return null;
}
// 购物车
public boolean buyCar(String id, HttpSession session) { try {
boolean flag = false;
Map car = null;
if (session.getAttribute("buycar") != null)
car = (Map) session.getAttribute("buycar");
else
car = new HashMap();
Flightinfo flightinfo = flightInfoById(id, session);
Object[] key = car.keySet().toArray();
for (int i = 0; i < key.length; i++) {
if (id.equals(key[i])) {
BuyCar buyCar = (BuyCar) car.get(key[i]);
buyCar.setNum(buyCar.getNum() + 1);
flag = true;
break;
}
}
if (!flag) {
BuyCar buyCar = new BuyCar();
buyCar.setFlightinfo(flightinfo);
buyCar.setNum(1);
car.put(id, buyCar);
}
session.setAttribute("buycar", car);
return true;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return false;
}
}4。JSP页面中<c:foreach> 迭代<c:forEach  items="${sessionScope.buycar}" var="car"> 
  <tr>
    <td width="20%" height="40"><div align="center" class="style21">F${car.value.flightinfo.id}</div></td>
    <td width="20%" height="40"><div align="center"><span class="style21">${car.value.flightinfo.price}</span></div></td>
    <td width="20%" height="40"><div align="center" class="style21">${car.value.flightinfo.time}</div></td>
<td width="20%" height="40"><div align="center" class="style21">${car.value.num}</div></td>
<s:url action="returnTicket.action" var="url">
<s:param name="key">${car.key}</s:param>
</s:url>
    <td width="20%" height="40"><div align="center" class="style21"><s:a href="%{url}">退票</s:a></div></td>
  </tr>
  </c:forEach>
--------------------------------------
${car.value.num} 这里的值可以遍历出来
为什么${car.value.flightinfo.id} 等实体bean不能出来~~~
怎么改这里呢?

解决方案 »

  1.   

    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

    HttpSession session =request.getSession();

    response.setContentType("text/html,charset=gbk");

    request.setCharacterEncoding("GBK");
    //获得提交的商品信息
    String id = request.getParameter("id");
    String miaoshu = request.getParameter("miaoshu");
    String price = request.getParameter("price");
    //存入实体
    CDBean cd = new CDBean(); 
    cd.setItemID(Integer.parseInt(id));
    cd.setLongDescription(miaoshu);
    cd.setCost(Double.parseDouble(price));
    //从实体里面取
    Object obj =session.getAttribute("cd");
    //如果不存在集合则创建集合,并且设置数量为1 
    if(obj==null){ 
    cd.setMusicNum(1);
    Map map= new HashMap();
    //将商品的信息存入集合里面,放入map集合里面,让id做为键实体作为值
    map.put(Integer.parseInt(id), cd);
    session.setAttribute("cd", map);  //将集合放入session中
    }else{
    //如果存在集合则接收
     Map map2 = (Map)obj;
     if(map2.get(Integer.parseInt(id))!=null){  //当商品存在时给里面在累加数量
      CDBean  cdbean = (CDBean)map2.get(Integer.parseInt(id));
      cdbean.setMusicNum(cdbean.getMusicNum()+1);
      map2.put(Integer.parseInt(id),cdbean);  //重新将修改后的值添加到集合里面
      session.setAttribute("cd",map2);
     }else{ //当商品不存在,
     cd.setMusicNum(1);
     map2.put(Integer.parseInt(id), cd);
     session.setAttribute("cd",map2);
     } 

    response.sendRedirect("../Cart.jsp");
    }