이 기사에서는 Java가 참조를 위해 쇼핑 카트 기능을 구현할 수있는 특정 코드를 공유했습니다. 특정 내용은 다음과 같습니다
1 구현이 필요합니다
1. Taotao Mall의 쇼핑 카트 기능을 실현하십시오
2 쇼핑 카트 기능
2.1 기능 설명
1. 쇼핑 카트에 제품을 추가 할 때 로그인이 필요하지 않습니다. JD.com은 로그인 할 필요가 없으며 Taobao는 로그인해야합니다. 각각 고유 한 이점이 있습니다.
2. 쇼핑 카트에서 상품의 총 가격을 계산하십시오. 상품의 양이 변할 때 재 계산이 필요합니다.
3. 사용자는 쇼핑 카트에서 품목을 삭제할 수 있습니다.
4. 사용자가 주문한 후 쇼핑 카트의 기능을 삭제하십시오.
쇼핑 카트는 사용자가 로그인하지 않을 때도 사용할 수 있습니다. 쇼핑 카트의 제품 정보는 쿠키에 작성해야합니다. 쇼핑 카트의 모든 작업은 운영 쿠키입니다. 데이터베이스의 압력을 효과적으로 줄입니다.
단점 : 컴퓨터를 교체 한 후 쇼핑 카트의 상품을 동기화 할 수 없습니다.
구현 프로젝트 : Taotao-Protal에서 쇼핑 카트 기능을 구현합니다. 제품 정보 서비스 만 전화하면 다른 시스템과 상호 작용할 필요가 없습니다.
2.2 기능 분석
1. 사용자가 로그인하지 않은 경우 쇼핑 카트를 사용할 수도 있으므로 장바구니 정보를 쿠키에 넣어야합니다.
2. Pojo에 제품 정보를 저장 한 다음 JSON에 직렬화하여 쿠키에 보관할 수 있습니다.
3. 제품 정보를 얻으려면 쿠키에서 JSON 데이터를 추출하여 Java 객체로 변환 할 수 있습니다.
4.이 기능은 쿠키의 작동 만 필요하며 데이터베이스의 지원이 필요하지 않으므로 Taotao-Portal에서만 구현하면됩니다.
5. 쇼핑 카트에는 4 가지 유형이 있습니다
a) 제품 추가
b) 상품의 양을 수정하십시오
c) 쇼핑 카트에서 품목을 삭제합니다
d) 쇼핑 카트 제품 목록 표시
2.3 쇼핑 카트 제품 추가
제품 세부 사항 페이지에서 "카트에 추가"버튼을 클릭하여 요청을 제출하고 제품 ID가 컨트롤러로 전달되고 컨트롤러는 ID를 수신하며 컨트롤러는 서비스를 호출하여 제품 ID를 기반으로 기본 제품 정보를 쿼리합니다. 제품을 쿠키에 쓰십시오. 쿠키를 추가하기 전에 쿠키의 쇼핑 카트에서 상품을 꺼내서 현재 쇼핑 카트 제품 목록에 그러한 제품이 있는지 여부를 결정하십시오. 하나의 수량이 있으면 제품이 추가되지 않으면 수량은 1입니다. 사용자에게 쇼핑 카트 목록을 표시하십시오.
2.3.1 서비스
기능 : 제품 ID, 수량 (기본값은 1) 및 제품 ID를 기반으로 제품 정보를 쿼리하십시오. Taotao-Rest의 서비스를 부릅니다. 쇼핑 카트에 제품을 추가하고 먼저 쇼핑 카트 제품 목록을 꺼내고 목록에 그러한 제품이 있는지 확인하고 수량을 늘리십시오. 이 항목이 항목 목록에 추가되지 않은 경우. Taotaoresult를 성공적으로 추가하기 위해 돌아갑니다.
기능:
1. 컨트롤러가 제공하는 제품 ID를 받고 제품 ID를 기반으로 제품 정보를 쿼리하십시오.
2. 쿠키에서 쇼핑 카트 정보를 꺼내 제품 Pojo 목록으로 변환하십시오.
3. 제품 목록에 제품 정보를 추가하십시오.
매개 변수 :
1. 제품 ID
2. 요청
3. 응답
반품 값 :
Taotaoresult
@service public class cartserviceimpl은 cartservice {// service url @value ( "$ {rest_base_url}") private string rest_base_url; // 제품 서비스 URL @Value ( "$ {items_item_url}") 개인 문자열 items_item_url; // 쿠키 @Value의 쇼핑 카트 제품에 해당하는 키 ( "$ {cart_items_list_key}") 개인 문자열 cart_items_list_key; // 쇼핑 카트 쿠키 수명 @Value ( "$ {cart_items_expire_time}") 개인 정수 cart_items_expire_time; /** * 카트 추가 * <p> 제목 : addItem </p> * <p> 설명 : </p> * @param itemid * @param request * @param 응답 * @return * @see com.taotao.portal.service.cartService#additem (java.lang.long, javax.servlet.htppertpertperperperperperperperperperperverperperperperver Javax.servlet.http.httpervletresponse) */@override public taotaoresult additem (long itemid, httpservletrequest request, httpservletresponse 응답) {// 제품 ID 항목 = getItembyid (itemid); if (item == null) taotaoresult.build (400, "제품 정보가 발견되지 않았다"); // 쿠키 목록에서 쇼핑 카트 제품 목록을 가져옵니다. <item> cartitems = getItemListFromCookie (요청); // 제품이 쇼핑 카트에 존재하는지 판단 부울 itemexists = false; for (항목 i : cartitems) {if (i.getid (). longValue () == itemid.longvalue ()) {// 쇼핑 카트 I.Setnum (i.getnum () + 1) 에이 항목이 있습니다. itemexists = true; 부서지다; }} // 제품이 쇼핑 카트에 존재하지 않는 경우 (! itemexists) {// 1 item.setNum (1)으로 설정하는 경우 장바구니 제품 목록에 항목을 추가하십시오. // 쇼핑 카트 cartitems.add (항목)에 제품을 추가합니다. } // 쇼핑 카트 정보를 쿠키 쿠키에 쓰기 쿠키 쿠키 우틸 (Cookieutils.setCookie) (요청, 응답, cart_items_list_key, jsonutils.objecttojson (cartitems), cart_items_expire_time, true); return taotaoresult.ok (cartitems); } 개인 항목 getItemById (long itemId) {// 제품 ID 문자열 resulttr = httpclientutil.doget (rest_base_url + items_item_url + itemid)에 따라 제품 정보를 확인합니다. // taotaoresult taotaoresult result = taotaoresult.formattopojo (resultstr, item.class)로 변환합니다. // 제품 정보 가져 오기 항목 항목 = null; if (result.getStatus () == 200) {item = (항목) result.getData (); } 반환 항목; } private list <item> getItemListFromCookie (httpservletRequest 요청) {// 쿠키 문자열에서 쇼핑 카트 항목 목록을 가져옵니다. cartitemsstrst = cookieutils.getCookieValue (request, cart_items_list_key, true); // 비어 있지 않으면 Java 객체 목록 <itele> cartitems = null로 변환됩니다. if (! stringUtils.isblank (cartitemsstr)) {cartitems = jsonutils.jsontolist (cartitemsstr, item.class); } else {cartitems = new ArrayList <> (); } return cartitems; }}2.3.2 제품 Pojo
Product Pojo는 Taotao-Portal에서 품목을 사용해야합니다. 이 pojo는 사형화 될 때 예외를 제외 할 것입니다. 다음 수정이 필요합니다.
2.3.3 컨트롤러
@controller @requestmapping ( "/cart") public class cartcontroller {@autowired private cartservice cartservice; @requestmapping ( "/add/{itemid}") public string additem (@pathvariable long itemid, httpservletrequest request, httpservletreponse 응답, 모델 모델) {// 제품 정보 추가 taotaoresult result = cartservice.additem (itemId, 요청, 응답); // 오류 메시지 if (result.getStatus ()! = 200) {model.addattribute ( "message", result.getmsg ()); "오류/예외"를 반환합니다. } // 쇼핑 카트의 항목을 페이지 model.addattribute ( "cartlist", result.getData ())로 전달합니다. "카트"를 반환합니다. }} 사용자는 "내 쇼핑 카트"를 클릭하여 쇼핑 카트 정보를 표시합니다.
2.4 디스플레이 쇼핑 카트 제품
2.4.1 서비스
/** * 쇼핑 카트 목록 가져 오기 * <p> * 제목 : getCartitemsList * </p> * <p> * 설명 : * </p> * * @return * @see com.taotao.portal.service.cartservice#getCartItemsList () */@OverRide public list <item> getCartEmsList (httppservletectemlist) getcarteMslist (httppservletectemlist). 쿠키 목록 <Item> itemsList = getItemListFromCookie (요청); 반환 아이템 명단; }
2.4.2 컨트롤러
@requestmapping ( "/cart") public String showcart (httpservletrequest 요청, 모델 모드) {// 쇼핑 카트 정보 목록 <item> list = cartservice.getCartitemSlist (요청); mode.addattribute ( "cartlist", list); "카트"를 반환합니다. }2.5 제품의 양을 수정하십시오
쇼핑 카트 항목의 "+"및 "-"표시를 클릭하면 품목 수를 늘리거나 줄입니다. 상품의 양을 줄이면 수량이 "1"인 경우 계속 감소하지 않습니다.
2.5.1 서비스
/** * 지정된 제품의 수량을 수정 * <p> 제목 : changeItemnum </p> * <p> 설명 : </p> * @param itemid * @param num * @param request * @param response * @return * @see com.taotao.portal.service.cartservice#ChangeItemnum (long, int, int, int, javax.servlet.http.httpervletrequest, javax.servlet.http.httpervletresponse) */@override public taotaoresult changeitemnum (long itemid, int num, httpservletrequest 요청, httpservletresponse 응답) {// httpservletrequest 요청) {// httpservletrequest 요청, httpservletrequest 요청 <// getItemListFromCookie (요청); // 제품 목록에서 수정할 제품을 찾으십시오 (항목 항목 : list) {if (item.getId () == itemid) {// 제품을 완료하고 수량 item.setnum (num)을 수정합니다. 부서지다; }} // 쿠키 쿠키에 제품 정보를 쓰기 쿠키 쿠키 틸 (Cookieutils.setCookie) (요청, 응답, cart_items_list_key, jsonutils.objecttojson (list), cart_items_expire_time, true); return taotaoresult.ok (); } 2.5.2 컨트롤러
@RequestMapping ( "/update/num/{itemid}/{num}") @ResponseBody public taotaoresult updatenumbyid (@pathvariable long itemid, @pathvariable integer num, httpservletrequest 요청, httpservletResponse 응답) {taotaoresult result = cartservice (chartservice). 응답); 반환 결과; }2.6 쇼핑 카트 제품 삭제
2.6.1 서비스
/** * 쇼핑 카트에서 아이템 삭제 * <p> * 제목 : deleteitem * </p> * <p> * 설명 : * </p> * * @param itemid * @param request * @param response * @return * @see com.taotao.portal.service.cartservice#deleteitem (java.lang.long, * javax.servlet.http.httpervletrequest, * javax.servlet.http.httpervletresponse) */ @override public list <iteletime> deleteitem (long itemid, httpservletrequest request, httpservletresponse 응답) {items> itemslist (retimlist); // 쇼핑 카트에서 항목을 찾아서 삭제 (항목 항목 : itemsList) {if (item.getId (). longValue () == initemid.longValue ()) {itemslist.remove (항목); 부서지다; }} // 쿠키 쿠키에서 쇼핑 카트 데이터를 업데이트합니다. 반환 아이템 명단; } 2.6.2 컨트롤러
@requestmapping ( "/delete/{itemid}") public string deleteitembyid (@pathvariable long itemid, httpservletrequest request, httpservletResponse 응답, 모델 모델) {list <item> list = cartservice.deleteitem (itemId, 요청, 응답); model.adtattribute ( "CartList", List); "카트"를 반환합니다. }쇼핑 카트 문제
1. 장비 교체시 쇼핑 카트 제품은 동기화 할 수 없습니다.
a) 쇼핑 카트 항목은 데이터베이스에 저장할 수 없습니다.
b) 사용자는 정보 동기화를 위해 로그인해야합니다.
c) 쇼핑 카트 정보를 Redis에 저장할 수 있습니다. 열쇠는 사용자이며 값은 쇼핑 카트 목록입니다.
d) 쇼핑 카트 상품 문제.
2. 주문을 제출 한 후 쇼핑 카트 제품을 지워야합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.