이전 섹션에서는 제품의 자세한 페이지를 완성하고 Hibernate의 보조 캐시를 사용하여 세부 페이지를로드하여 시스템의 성능을 향상 시켰습니다. 보기하려면 기사를 클릭하십시오. 이 섹션에서는 쇼핑 카트 부분을 시작합니다.
1. 새 테이블을 추가하십시오
먼저 데이터베이스에 여러 테이블을 추가합니다 : 사용자 테이블, 주문 상태 테이블, 주문 테이블 (쇼핑 카트 테이블) 및 쇼핑 아이템 테이블. 사용자의 기본 정보는 사용자 테이블에 저장됩니다. 주문 상태 테이블은 주로 배송 된 주문 상태를 저장합니다. 주문 테이블은 주로 사용자의 정보와 주문 상태를 저장하므로 사용자 테이블 및 주문 상태 테이블과 관련이 있습니다. 쇼핑 아이템 테이블은 특정 제품과 그 순서를 저장하므로 제품 테이블 및 주문 테이블과 관련이 있습니다. 특정 테이블 정보는 다음 SQL 문을 참조하십시오.
/*================================================================================================================== ======================================================================================= 테이블 사용자 생성 ( /* 사용자 번호, 자동 성장* / id int 기본 키 NOT AUTO_INCREMENT, /* 사용자 로그인 이름* / 로그인 varchar (20), /* 사용자 실명* / 이름 varchar (20), /* 사용자 로그인 암호* / Pass Varchar (20), /* 사용자 성별* / sex varchar (20), / phone varchar (20), /* usea varch (20)) /*============================================================== ===============================================================/ /* 테이블 : 쇼핑 카트 (주문) 테이블 구조* / /*======================================================================================= =========================================================================================== =========================================================================================== ======================================================================================= 테이블 포더 생성 ( /* 주문 번호, 자동 성장* / id int 기본 키 NOL NULL AUTO_INCREMENT, /* 수신자 이름* / 이름 varchar (20), /* 수신자 전화 번호* / Phone Varchar (20), /* 배송 정보* / 비고 Varchar (20), /* 주문 날짜* / 날짜 timestamp default current_timestamp, /* Post Decimal (8,* 2). varchar (20), /* 수신자 우편 번호* / 주소 Varchar (200), /* 주문 상태* / sid int 기본값 1, /* 멤버 번호* / uid int, 구속 조건 SID_FK 외국 키 (SID) 참조 상태 (ID), 제약 UID_FK 외국 키 (UID) 참조 사용자 (ID)); /*====================================================================================================================== ========================================================================================================================== ========================================================================================================================== =================================================================================================================================================== 구매 시점에 제품의 가격*/ 가격 소수점 (8,2),/*구매 수량*/ 번호 int null,/*제품 번호*/ pid int,/*이 라인 항목, 주문 번호*/ fid int, 제약 조건 PID_FK 외국 키 (PID) 참조 제품 (ID), Constraint FID_FK 외국 키 (FID) 참조 참조 forder (ID);
그런 다음이 테이블을 리버스 엔지니어링을 통해 Pojo로 변환하므로 자세한 내용은 설명하지 않습니다.
2. 쇼핑 카트의 무대 뒤 논리
2.1 서비스 계층의 논리
사용자가 쇼핑 카트에 제품을 추가하면 먼저 제품 ID를 통해 제품 정보를 얻은 다음 제품을 장바구니에 추가해야합니다. 추가하기 전에 먼저 현재 세션에 쇼핑 카트가 있는지 확인해야합니다. 그렇지 않은 경우 먼저 쇼핑 카트를 만들어야합니다. 그렇다면 현재 쇼핑 아이템을 쇼핑 카트에 추가합니다. 추가하기 전에 쇼핑 아이템이 이미 쇼핑 카트에 존재하는지 여부를 결정해야합니다. 존재하면 해당 쇼핑 수량을 늘리십시오. 존재하지 않으면 추가 한 다음 총 쇼핑 가격을 계산하고 마지막으로 쇼핑 카트를 세션에 저장하십시오. 전체 프로세스는 아래 다이어그램을 참조하십시오.
다음으로 특정 논리를 구현하고 먼저 두 개의 새로운 서비스 인터페이스 인 Sorderservice 및 Forderservice를 작성하겠습니다. Sorderservice에는 주로 정의 된 두 가지 방법이 있습니다. 사용자가 추가 한 품목을 쇼핑 품목으로 변환 한 다음 쇼핑 품목을 쇼핑 카트에 추가하십시오. Forderservice는 주로 쇼핑 카트의 총 가격을 계산하는 방법을 주로 정의합니다.
// Sorderservice 인터페이스 공용 인터페이스 Sorderservice 확장 기본 서비스 <Sorder> {// 쇼핑 품목 추가 및 새로운 쇼핑 카트 공개 포더 추가점 (Forder Forder, Product Product); // 제품 데이터를 쇼핑 아이템으로 변환 공개 소더 ProductTosorder (제품 제품); } // Forderservice 인터페이스 공용 인터페이스 Forderservice 확장 기본 서비스 <forder> {// 총 쇼핑 가격 계산 공개 Double Clutotal (Forder Forder); } 그런 다음이 두 인터페이스를 자세히 구현합니다.
// sorderserviceimpl 구현 클래스 @service ( "sorderService") public class sorderserviceimpl은 baseServiceimpl <Sorder>를 구현 {@override public forder addsorder (Forder Forder, Products) {boolean ishave = false; // 중복 쇼핑 아이템이 있는지 여부를 표시하는 데 사용됩니다. // 현재 쇼핑 아이템 Sorder Soorder = ProductTosorder (제품); // 현재 쇼핑 품목이 복제인지 판단합니다. 중복 된 경우 (Sorder Old : Forder.getSorders ())) {if (Old.getProduct (). getId (). equals (sorder.getProduct (). getId ()) {// 쇼핑 아이템에 대한 복제가 있습니다. ishave = true; 부서지다; }} // 현재 쇼핑 품목은 쇼핑 카트에 존재하지 않으며 (! ishave) {forder.getSorders (). add (소더); } 리턴 포더; } @override public Sorder ProductTosorder (제품 제품) {Sorder Soorder = New Sorder (); soorder.setName (product.getName ()); Soorder.SetNumber (1); soorder.setPrice (product.getPrice ()); Soorder.SetProduct (제품); 반환 소더; }} // forderserviceimpl 구현 @service ( "forderservice") public class forderserviceimpl은 baseServiceimpl <forder> 구현 forderservice {@override public double clutotal (forder forder) {double total = 0.0; for (소더 soorder : forder.getSorders ()) {Total += soorder.getNumber () * soorder.getPrice (); } 총계; }} 그런 다음 Sorderaction에 의해 사용하기 위해이 두 콩을 바지에 주입해야합니다.
@controller ( "Baseeaction") @Scope ( "프로토 타입") 공개 클래스 BASEEATION <T> ACTOCTUPPORT AMPSERMENTS RequestAware, SessionAware, ApplicationAware, ModelDriven <T> {// 다른 관련없는 코드를 생략 ... @Resource Protected Forderservice Forderservice; @Resource Protected Sorderservice Sorderservice; } 자, 서비스 계층의 논리가 완료되었고 다음은 작업 부분을 수행 할 것입니다.
2.2 행동 논리
우리는 새로운 Sorderaction을 생성하고 위의 논리 다이어그램에 표시된 프로세스를 따라 쇼핑 카트 추가 논리를 완성합니다. 코드는 다음과 같습니다.
@Controller @Scope ( "프로토 타입") public class SorderAction은 Baseeaction <Sorder> {public String addSorder () {// 1. Product.Id Products Product = ProductService.get (Model.GetProduct (). getId ())에 따라 해당 제품 데이터를 얻습니다. // 2. 현재 세션에서 쇼핑 카트가 있는지 확인하십시오. 그렇지 않은 경우 if (session.get ( "forder") == null) {// 새 쇼핑 카트를 만들고 세션 세션에 저장 ( "Forder", New Forder (New Hashset <소더> ())); } // 3. 제품 정보를 SOORDER로 변환하여 쇼핑 카트 (쇼핑 품목이 복제되었는지 판단) Forder Forder = (Forder) Session.get ( "Forder"); Forder = soorderservice.addsorder (Forder, Product); // 4. 쇼핑 포더의 총 가격을 계산합니다. // 5. 세션 세션에 새 쇼핑 카트를 저장합니다 .PUT ( "Forder", Forder); "쇼카트"를 반환합니다. }} struts.xml 파일을 구성하십시오.
<action name = "sorder_*"method = "{1}"> <결과 이름 = "showcart">/showcart.jsp </result> </action>그런 다음 쇼핑 카트 디스플레이 페이지 showcart.jsp로 이동하십시오. showcart.jsp의 쇼핑 카트 부품에 대한 프론트 엔드 프로그램은 다음과 같습니다.
3. 프론트 데스크 링크의 점프
모든 배경 부분이 완료되었습니다. 그런 다음 쇼핑 카트의 링크 주소에 프론트 데스크 세부 사항을 추가하여 SorderAction에 액세스 할 수 있습니다.
이것은 올바르게 점프 할 것입니다. 쇼핑 카트 디스플레이 페이지의 특정 효과를 살펴 보겠습니다.
이런 식으로, 쇼핑 카트의 기본 기능이 완료되며 나중에 개선 할 것입니다.
원본 주소 : http://blog.csdn.net/eson_15/article/details/51418350
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.