본문 바로가기
Spring/study

spring 7강 상품테이블 만들기, File Upload 테스트

by avvin 2019. 6. 11.

spring 7강 상품테이블 만들기, File Upload 테스트


쇼핑몰 페이지


자바파일


Controller


HomeController 

: home.jsp를 실행하기 위해 경유하는 컨트롤러 / 시간 정보 담아서 home.jsp  실행

MemberController

 : 로그인, 로그인 체크, 로그아웃, 

UploadController

 : 업로드폼으로 포워딩, 폼데이터 업로드, 업로드 함수

CartController

 : cart테이블 저장, cart 리스트 반환, 품목 삭제, 전체 삭제, 업데이트??<<

ProductController

 : 상품 목록, 상품 상세보기, 상품 등록 페이지로 포워딩, 등록시 상품목록페이지로 포워

AdminController

 : 관리자 로그인창으로 포워딩, 로그인 체크,  

   관리자 로그아웃처리하고 관리자로그인페이지로 포워딩  



Model


MemberDAO + Impl

MemberDTO

 : userid / passwd / name / email / join_date


CartDAO +Impl

CartDTO

 : cart_id / userid / name / product_id / product_name / price / money / amount 


ProductDAO + Impl

ProductDTO

 : product_idproduct_nameprice / description / picture_url / file1



Service


MemberService + Impl

CartService + Impl
ProductService + Impl

AdminService + Impl




설정파일


Mapper ( namespace로 구분 ) ★


memberMapper.xml 

 : 로그인 체크 쿼리

adminMapper.xml

 :  관리자 로그인 체크 쿼리  

cartMapper.xml

 : 장바구니 담기, 장바구니 리스트, 개별상품 삭제, 전체 삭제 쿼리  

productMapper.xml

 : 상품 리스트, 상품 상세, 상품 추가 쿼리  



기본 설정 파일  


web.xml 

 : root-context.xml, servlet-context.xml 로딩


root-context.xml

 : mybatis 객체 빈으로 등록시 Mappers.xml 스캔


servlet-context.xml

 : include나 image폴더 리소스 매핑 설정 / 업로드 경로 리소스 빈으로 등록 /

   파일 업로드에 필요한 클래스 빈으로 등록 / 컴포넌트 스캔 / 뷰로 포워딩시 pre,suffix 설정


pom.xml



//mybatis mapper 코드는 어디에?<<


views 파일 ( .jsp )


include 파일 : header / menu / admin_menu / style.css 

memberLogin / cart_list / product_detail / product_list / product_write / uploadForm / uploadResult

admin / a
dminLogin





product 테이블 생성


merchandise.sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
create table product(
product_id number,
product_name varchar2(50),
price number default 0,
description clob,
picture_url varchar2(500),
primary key(product_id)
);
 
insert into product values
(1'레몬'1500'레몬 설명''lemon.jpg');
 
insert into product values
(2'오렌지'2000'오렌지 설명''orange.jpg');
 
insert into product values
(3'키위'3000'키위 설명''kiwi.jpg');
 
insert into product values
(4'포도'5000'포도 설명''grape.jpg');
 
insert into product values
(5'딸기'8000'딸기 설명''strawberry.jpg');
 
insert into product values
(6'귤'7000'귤 설명''tangerine.jpg');
 
select * from product;
 
commit;
 
create sequence seq_product
start with 10
increment by 1;
 
insert into product values
(seq_product.nextval, '사과'1500'맛있는 사과''apple.jpg');
 
select * from product;
 
commit;
cs




pom.xml에 파일 라이브러리(파일업로드, 썸네일) 추가


commons-fileupload ( groupId )  >> commons-fileupload ( artifactId


pom.xml

파일업로드 라이브러리

1
2
3
4
5
6
        <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>
cs


이미지 썸네일 만들어주는 라이브러리 

1
2
3
4
5
6
        <!-- https://mvnrepository.com/artifact/org.imgscalr/imgscalr-lib -->
        <dependency>
            <groupId>org.imgscalr</groupId>
            <artifactId>imgscalr-lib</artifactId>
            <version>4.2</version>
        </dependency>
cs



servlet-context에 등록할 내용 : mapper, beans



이미지 파일 적당한 위치에 넣고 매퍼 리소스 파일 스캔할 수 있도록 servlet-context에 리소스 등록


servlet-context.xml

1
2
    <resources location="/WEB-INF/views/images/"
        mapping="/images/**" />
cs


파일 업로드에 필요한 클래스를 빈으로 직접 등록
1
2
3
4
5
6
7
8
9
10
    <beans:bean id="multipartResolver"
    class=
    "org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <beans:property name="maxUploadSize" value="10485760" />
    </beans:bean>
    <beans:bean id="uploadPath" class="java.lang.String">
        <beans:constructor-arg value="d:/upload" />
    </beans:bean>
 
</beans:beans>
cs


xml에 설정된 리소스 참조 (bean의 id 가 uploadPath인 태그를 참조)하려면

UploadController.java
1
2
    @Resource(name = "uploadPath")
    String uploadPath;
cs