본문 바로가기

Dev82

MVC - 커맨드 패턴을 이용한 명령어 처리 분리 https://tavi.tistory.com/50?category=1086720 MVC 패턴 정의 0. 모델 1 구조 모델 1 구조는 JSP를 이용한 단순한 모델이다. (기존에 했던 모든 것들..) JSP에서 요청 처리 및 뷰 생성을 처리해서 구현이 쉽지만 요청 처리 및 뷰 생성 코드가 뒤섞여 코드가 복잡 tavi.tistory.com 컨트롤러가 알맞은 로직을 수행하려면 클라이언트가 어떤 기능을 요청하는 지 구분할 수 있어야 하는데 웹 브라우저를 통해 명령어를 전달하는 방법에는 두 가지가 있다. 특정 이름의 파라미터에 명령어 정보를 전달 (ex. url에 ?type=date 를 입력) 요청 URI 자체를 명령어로 사용 특정 파라미터에 명령어 정보를 전달하는 방법은 컨트롤러 서블릿이 명렁어에 알맞은 로직 .. 2022. 10. 4.
MVC 패턴 정의 0. 모델 1 구조 모델 1 구조는 JSP를 이용한 단순한 모델이다. (기존에 했던 모든 것들..) JSP에서 요청 처리 및 뷰 생성을 처리해서 구현이 쉽지만 요청 처리 및 뷰 생성 코드가 뒤섞여 코드가 복잡하다. 💡. 모델 2 구조 모든 요청을 서블릿이 처리하고 JSP가 뷰를 생성한다. 웹 브라우저의 모든 요청을 단일 서블릿에서 처리하고 요청 처리 후 결과를 보여줄 JSP로 포워딩한다. 포워딩을 통해서 요청 으름을 받은 JSP는 결과 화면을 클라이언트에게 전송한다. 즉, 서블릿이 로직 부분을 처리하게 되는 것이다. 모델 2의 이러한 특징 때문에 MVC 패턴에 기반을 두어 웹 어플리케이션을 구현할 때는 모델 2 구조를 주로 사용하게 된다. 💡✨. MVC 패턴 MVC는 Model-View-Controlle.. 2022. 10. 4.
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.