본문 바로가기

분류 전체보기116

Tiles를 이용한 컴포지트 뷰 구현 웹 어플리케이션의 상당수의 페이지는 헤더, 좌측 메뉴, 푸터가 동일한 페이지가 많으며 페이지의 구조도 거의 동일하다. 동일한 구조를 갖는 페이지들을 개발할 때 구조를 구성하는 코드가 중복될 수 있는데 Tiles를 통해 페이지를 구성하는데 사용되는 코드의 중복을 없애고 구조를 효율적으로 관리할 수 있다. 1. 컴포지트 뷰(Composite View) 패턴 컴포지트 뷰(Composite View) 패턴을 적용하면 웹 어플리케이션 개발에서 페이지 구조를 위한 코드를 매번 입력해야 하는 불편함을 줄이고 페이지의 레이아웃 구성을 위한 중복된 코드를 제거할 수 있다. 컴포지트 뷰 패턴의 핵심은 레이아웃 구성 정보를 담고 있는 템플릿을 생성하는 것이다. [헤더 조각 삽입 코드] [메뉴 조각 삽입 코드] [메뉴 조각 .. 2022. 9. 30.
synchronized 동기화 메소드와 동기화 블록 멀티 스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우가 있다. 이 경우, 스레드 A를 사용하던 객체가 스레드 B에 의해 상태가 변경될 수 있기 때문에 스레드 A가 의도 했던 것과는 다른 결과를 산출 할 수도 있다. 스레드가 사용중인 객체를 다른 스레드가 변경 할 수 없도록 하려면 스레드 작업이 끝날 때까지 객체에 잠금을 걸어서 다른 스레드가 사용할 수 없도록 해야 한다. 멀티 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역을 임계 영역 (critical section) 이라고 하는데, 자바는 임계 영역을 지정하기 위해 동기화(synchronized) 메소드와 동기화 블록을 제공한다. 스레드가 객체 부의 동기화 메소드 또는 블록에 들어가면 즉시 객체에 잠금을 걸어 다른.. 2022. 9. 29.
response 기본 객체 response 기본 객체는 웹 브라우저에 보내는 응답 정보를 담는다. 응답 정보와 관련해서 두 가지 기능을 제공 하는데, 헤더 정보 입력과 리다이렉트 기능을 제공한다. 1. 웹 브라우저에 헤더 정보 전송 response 기본 객체가 제공하는 헤더 추가 메소드 메소드 설명 addDateHeader(String name, long date) name 헤더에 date를 추가 date는 1970년 1월 1일 이후 흘러간 시간을 1/1000초 단위로 나타냄 addHeader(String name, String value) name 헤더에 value를 값으로 추가 addIntHeader(String name, int value) name 헤더에 정수값 value를 추가 setDateHeader(String nam.. 2022. 9. 29.
(JSP2.1) 답변형 게시판 구현 - 목록 구현하기 1. ArticleListModel 클래스 구현 (게시글 목록 화면 구성에 필요한 정보 제공) package board2; //게시글 목록 화면 구성에 필요한 정보를 저장 import java.util.ArrayList; import java.util.List; public class ArticleListModel { private List articleList; //게시판에 보여줄 데이터 리스트 private int requestPage; //요청 페이지 private int totalPageCount; //전체 페이지 수 private int startRow; //시작 행 private int endRow; //마지막 행 //생성자1 public ArticleListModel() { this(new .. 2022. 9. 28.
FileUpload API를 이용한 파일 업로드 구현 FileUpload API를 이용하기 위해선 FileUpload API를 다운로드 해 WEB_INF/lib 폴더에 jar 파일 복사 해준다. * FileUpload API를 이용한 multpart/form-data 처리 예제 1) 폼 작성 text1: file1: file2: 2) FileUpload API를 이용해 multpart/form-data로 전송된 데이터 화면에 출력하기 요청 파라미터: = 파일: , , multipart/form 요청이 아님 업로드한 파일명의 한글이 깨져서 upload.setHeaderEncoding("EUC-KR"); 코드를 추가해주었다. ※ FileItem 클래스는 multpart/form-data로 전송된 파라미터 또는 파일 정보를 저장하고 있는 클래스로서 위 코드 속 .. 2022. 9. 27.
파일 전송을 위한 multipart/form-data 1. 파일 전송을 위한 FORM 설정 태그의 method 속성 값을 post로, enctype 속성 값을 multipart/form-data로 설정하고 type 속성이 file인 태그를 통해 파일을 선택한다. 예제 1) 입력 폼 생성 text1: file1: file2: *파일 선택 폼은 웹 브라우저에 따라서 다르다. 예제 1-2) multipart_data.jsp 작성 웹 브라우저가 전송한 데이터를 그대로 출력 try { is = request.getInputStream(); int data = -1; while((data = is.read()) != -1) { out.print((char)data); } } finally { if(is != null) try { is.close(); } catch(I.. 2022. 9. 27.