본문 바로가기

Dev/Java35

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.
게시판 작업시 싱글톤 패턴을 이용하는 이유 https://tavi.tistory.com/29 싱글톤 (Singleton) 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우가 있는데, 단 하나만 생성된 이 객체를 싱글톤이라고 한다. 싱글톤을 이용하는 이유는 최초 한번의 new 연산자를 통해서 고정 tavi.tistory.com 서비스 클래스를 개발 했다면 서비스 클래스를 이용해서 객체를 생성한 뒤 실행한 메소드를 호출하도록 코드를 작성하게 된다. 그런데 대다수의 서비스 클래스는 객체를 여러번 만들더라도 실제로 수행하는 기능은 동일한 경우가 많다. ReadArticleService service1 = new ReadArticleService(); ReadArticleService service2 = new ReadArticleServi.. 2022. 9. 27.