본문 바로가기

web 6

Entity, DTO, DAO, VO Entity, DTO, DAO, VO Servlet, Spring 등을 사용하면 로직 구현이나 데이터 교환을 위해 Entity, DTO, DAO, VO를 사용하게 된다. 각각을 한마디로 요약하면 아래와 같다. Entity : 테이블 DTO : Data Transfer Object → 데이터 교환용 DAO : Data Access Object → 데이터 접근용 VO : Value Object → 데이터 교환용 (Read-only 속성의 DTO) Entity Database의 테이블에 해당하며, 주로 하나의 테이블에 하나의 entity를 정의한다. 테이블과 최대한 동일하게 클래스를 생성하고, 주로 테이블에 가지는 column들을 필드로 가진다. 주의할 점 다른 클래스를 상속받거나 구현체여서는 안되며, 데이터.. 2023. 4. 3.
MVC 패턴 (feat. Servlet/JSP) MVC Model + View + Controller의 구조로 이루어진 패턴(동작 방식)을 말한다. Model 데이터와 비즈니스 로직을 관리/처리한다. 즉, 사용자의 요청에 대한 업무를 처리한다. DAO(Data Access Object) 등의 Java class View 사용자가 보게될 결과 화면을 담당한다. (레이아웃, 화면 처리 등) HTML, JSP Controller 사용자의 입력 처리와 흐름을 제어하고, 사용자에게 받은 명령을 model이나 view로 라우팅한다. 사용자로부터의 입력에 대한 응답으로 모델/뷰를 업데이트하는 로직을 포함한다. Servlet 동작 방식 사용자의 action들은 controller가 감지한다. Controller는 사용자의 action을 확인하고 model을 업데이트.. 2023. 4. 3.
PRG 패턴 : Post → Redirect → Get 배경 : 멱등성 동일한 요청을 여러 번 연속해서 보낼 때 한번 보내는 것과 여러 번 연속해서 보내는 것의 결과가 같은 것을 의미한다. GET, HEAD, PUT, DELETE는 멱등성을 가지지만, POST는 멱등성을 가지지 않는다. 예시 GET 메소드를 연달아 호출해도 같은 결과를 나타내지만, 게시글을 등록하는 POST를 연달아 호출하면 호출한 횟수만큼의 게시글이 등록된다. (별도 처리를 하지 않은 상황 기준) 혹은, Servlet에서 게시글 작성이나 주문을 POST로 전송 후 해당 요청에 대한 응답으로 redirect가 아닌 forward로 처리할 경우 새로고침 시 게시글 작성/주문이 중복해서 처리될 수 있다. PRG 패턴의 필요 회원가입, 게시글 등록, 메뉴 주문 등은 대부분 POST를 통해 이루어지.. 2023. 4. 3.
Cookie, Session Connectionless, Stateless Server의 자원은 한정되어있으므로 server-client의 접속을 계속 유지하지는 않는다. 따라서 서버는 클라이언트의 요청에 응답한 후 연결을 지속하지 않고 끊는다. 연결(Connection)을 유지하지 않고 끊기 때문에 connectionless라 한다. 서버는 클라이언트의 정보(state)도 저장하지 않는다. 만약 클라이언트의 정보를 서버에서 관리한다면 무조건 해당 클라이언트는 해당 서버와 통신이 이루어져야 하기 때문이다. 이는 서버의 증설(scale-out)/관리를 어렵게한다. 이러한 특성을 stateless라 한다. Cookie, Session의 필요성 클라이언트의 로그인 정보나 특정 상태를 저장하고 유지해야할 때가 있다. 그런데 서버가 클라이언.. 2023. 3. 31.
[CSS] 선택자 선택자 태그로 선택 특정 태그로 작성된 요소들을 선택한다. 태그종류 {...}로 사용할 수 있다. 예를 들어, div {...}는 div 태그로 작성된 요소들을 선택한다. id로 선택 특정 id를 갖는 요소들만 선택한다. #id이름 {...}으로 사용할 수 있다. 예를 들어, #root {...}는 root라는 id를 가지는 요소를 선택한다. 하나의 id는 하나의 요소에만 해당하고, 하나의 요소는 최대 하나의 id만 갖는 것을 원칙으로 한다. class로 선택 특정 class를 갖는 요소들만 선택한다. .class이름 {...}로 사용할 수 있다. 예를 들어, .parent {...}는 parent라는 클래스에 해당하는 요소들만 선택한다. 복합 선택 여러 속성/특성들을 함께 지니고 있는 요소들을 선택할 .. 2023. 3. 21.