본문 바로가기

컴퓨터학원(복습)(수료)

자바(JAVA)기반 안드로이드 웹&앱 개발 63일차(이어서 파일 업로드, 쇼핑몰 관리자 애플리케이션)

[파일업로드]

1. 파일업로드을 위한 라이브러리 파일 cos.jar 를 다운받아 WebContent\WEB-INF\lib 폴더에 복사한다.

1) 구글에 cos.jar를 검색하여 다운받는다.

2. MultipartRequest 클래스를 서블릿(UploadServlet.java)에 구현한다.

1) com.oreilly.servlet 패키지에 있다.

2) 생성자

MultipartRequest(HttpServletRequest request, String saveDirectory, int maxPostSize,

String encdoing, FileRenamePolicy policy)

(1) request : request 객체

(2) saveDirectory : 서버 측에 저장될 경로

(3) maxPostSize : 최대 파일 크기

(4) encoding : 파일의 인코딩 방식(UTF-8)

(5) policy : 파일 중복처리를 위한 매개 변수

ㄱ) new DefaultFileRenamePolicy() : 중복될 경우 (예, b.bmp -> b1.bmp)

MultipartRequest 클래스의 메소드

3. 서버 고려사항

1) 업로드한 파일을 저장할 위치

(1) 프로젝트 폴더 내로 설정할 경우

ㄱ) 상대적 경로를 사용할 수 있으므로 접근이 용이

ㄴ) 프로젝트를 삭제할 경우, 파일도 같이 삭제됨 -> 필요 시 백업/복구

ㄷ) 예, WebContent\upload

ㄹ) 이클립스에서의 실제 저장 위치는 .metadata 밑의 tomcat 폴더 (D:\web\work_spring\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\mvc2\upload)

2) 절대 경로를 사용하여 프로젝트 경로와 무관하게 할 경우

(1) 절대 경로를 사용하므로 파일 경로가 길다.

(2) OS 별로 절대 경로 지정 방식이 다름(윈도우, 리눅스 등)

(3) 프로젝트와 무관하게 파일을 유지 가능(예, D:\upload)

(4) 이미지 표시(display)도 별도의 url 사용하여 처리 필요

01_upload, 경로를 못찾길래 request.getContextPath 를 넣었습니다.

upload.do

[여러 개의 파일 업로드 방법]

이클립스가 본 tomcat에 파일이 전송된 것을 볼 수 있다.

[쇼핑몰 관리자 애플리케이션 작성]

쇼핑몰관리자 구조

쇼핑몰 관리자 jsp 및 servlet 구조

1. studydb 데이터베이스에 product 테이블을 생성한 후, 상품정보를 추가한다.

2. ProductVo.java를 생성하여 관계 데이터베이스의 레코드에 대응되는 자바 클래스를 만든다.

1)VO( Value Object)

https://m.blog.naver.com/ljc8808/220462395989

 

VO, DAO, DTO, CRUD란 무엇인가?

VO( Value Object ) 개념 Value Object는 DTO와 동일한 개념이나 차이점은 read only 속성을 갖는...

m.blog.naver.com

(1) Value Object는 DTO와 동일한 개념이나 차이점은 read only 속성을 갖는다.

(2) 형태는 db 레코드를 구성하는 필드들을 Value Object의 Attribute로 하고 해당 변수에 접근할 수 있는

Getter, Setter 메소드의 조합으로 클래스가 형성되어진 클래스이다.

(3) 특성은 대체로 불변성이고 equlas()로 비교할 때 객체의 모든 값을 비교해야 한다.

(4) 프로그램의 사용자가 화면에서 어떤 데이터를 입력하거나 조회 요청이 왔을 때 입력된 데이터나 조회하는

조건을 VO에 담아서 DAO에 요청하면 DAO는 저장소 (일반적으로 DB) 로부터 데이터를 입력하거나

조회한 후 그 결과를 돌려주게 된다.

(5) VO는 간단한 독립체 (Entity)를 의미하는 작은 객체를 의미한다.

ProductVO

3. ProductDAO.java 클래스를 만든 후 selectAllProducts(), insertProduct(), selectProductByCode(),

updateProduct(), deleteProduct() 함수를 추가한다.

1) DAO (Data Access Object : 데이터 접근 객체)

(1) 데이터 접근을 목적으로 하는 객체이다.

(2) 커넥션 같은 것을 하나만 두고 여러 사용자가 DAO의 인터페이스를 사용하여 필요한 자료에 접근하도록 한다.

(3) DB에 대한 insert, update, delete, select를 처리한다.

(4) 특정 타입의 데이터베이스나 다른 지속적인 메커니즘에 추상 인터페이스를 제공하는 객체이다.

(5) 어플리케이션 호출을 데이터 저장부분에 매핑함으로써 DAO는 DB의 세부 내용을 노출하지 않고

특정 데이터 조작 기능을 제공한다.

ProductDAO, selectAllProducts(), insertProduct()

selectProductByCode(), updateProduct()

deleteProduct()

4. DBCP 를 관리하는 DBManager.java 클래스를 만든다.

util/DBManager.java

5. 상품리스트를 보여주는 ProductListServlet(DB에서 객체를 가져오는) 과 productList.jsp를 만든다.

ProductListServlet

productList.jsp 아직 css를 만들지 않아서 위와같이 뜬다.

1) css 파일을 추가하여준다.

shopping.css

6. 상품을 등록하는 productWrite.jsp(뷰) 와 ProductWriteServlet.java(논리), product.js(유효성)을 만든다.

productWrite.jsp

product.js

ProductWriteServlet

나머지 내용은 내일 올리겠습니다.