url标签会自动对参数进行url编码

<c:url value="/BookServlet" var = "authorUrl">
    <c:param name="method" value="findByAuthor"/>
    <c:param name="author" value="${book.author}"/>
</c:url>

多表联查

CartItemDao
public List<CartItem> findByUser(String uid){
    String sql = "select * from t_cartitem c, t_book b where c.bid = b.bid and uid = ?";
    List<Map<String,Object>> mapList = qr.query();
    return toCartItemList(mapList);
}

//把map映射成CartItem

If(map == null)return null;
CartItem cartItem = CommonUtils.toBean(map,CartItem.class);
Book book =  CommonUtils.toBean(map,Book.class);
User user =  CommonUtils.toBean(map,User.class);
cartItem.setBook(book);
cartItem.setUser(user);
return cartItem;

//把多个Map(List<Map>)映射成多个CartItem(List)

List<CartItem> cartItemList toCartItemList(List<Map<String,Object>> mapList){
    List<CartItem> cartItemList = new ArrayList<CartItem>();
    for(Map map:mapList){
        CartItem cartItem = toCartItem(map);
        cartItemList.add(cartItem);
    }
    return cartItemList;
}

//list.jsp

<c:forEach items="${cartItemList }" var="cartItem">


</c:forEach>

//获取所有被勾选的条目复选框

$(":checkbox[name=checkboxBtn][checked=checked]").each(function(){
var id = $(this).val;

}

//统一设置所有条目的复选按钮

function setItemCheckBox(bool){
    $(":checkbox[name=checkboxBtn]").attr("checked",bool);
}

//设置结算按钮样式

function setJieSuan(bool){
    if(bool){
        $("#jiesuan").removeClass(kill).addClass("jiesuan)";
        $("#jiesuan").unbind("click");//撤销当前元素上所有click属性
    }else{
        $("#jiesuan").remove(jiesuan).addClass("kill");
        $("#jiesuan").click(function(){return false;})
    }
}

//所有条目的个数

$(":checkbox[name=checkboxBtn]").click(function(){
   var all = $(":checkbox[name=checkboxBtn]").length;
    
});

//batchDelete qr.update(sql,cartItemIdArray);//cartItemIdArray必须是object数组