이론 ContextLoaderListener와 DispatcherServlet의 관계 Tomcat Server는 WebApp을 시작할 때 ServletContextListener를 구현한 ContextLoaderListener를 클래스를 실행한다. ContextLoaderListener는 ApplicationContext를 구현한 IoC Conta...
DEVIL: 게시글 검색 시 태그 정보가 사라지는 문제
문제 다음과 같이 sql문을 작성하면 검색하는 태그 이외의 태그들은 걸러지고 검색 태그에 해당하는 레코드 한 줄만 들고 오는 문제가 있었다. select a.arno, a.title, a.content, a.cdt, a.cano, a.vw_cnt, a.st...
DEVIL: UserDao의 책임을 분산: 유저 팔로잉 정보 select
문제 현재 User Model(service, dao)에서 팔로우 추가 및 삭제 기능을 처리하고 있다. 이 경우 loginUser 객체가 너무 비대해질 뿐만 아니라, 한 모델에 너무 많은 기능이 집중되어 유지보수가 어렵다는 문제점을 가지고 있다. 해결방법 Follow Model을 추가 생성하여 팔로우 관련 기능은 여기서 처리하도록 만든다. 특히 ...
DEVIL: UserDao의 책임을 분산: 유저 팔로잉 정보 select
문제 현재 로그인한 유저가 팔로우하고 있는 태그 목록을 가져오는 일을 UserDao에서 조인해서 가져오고 있다. 태그 목록을 가져오는 일은 TagDao이 할 수 있도록 책임을 위임해야 할 필요가 있다. 그렇지 않으면 팔로우하고 있는 태그 여부만 태그 번호로 판단하면 되는 TagListServlet에서 이를 위해 tagNoList를 따로 생성해 use...
DEVIL: 태그 언팔로우 시 /tag/list로 redirect하는 문제
문제 /auth/loginUser/페이지에서 태그를 언팔로우했을 때, UserUnfollowTagServlet에서 /tag/list로 리다이렉트하고 있다. /user/unfollow를 호출한 페이지로 리다이렉트되도록 만들어야 한다. 해결방법 이전에는 UserUnfollowTagServlet에서 다음과 같이 고정된 URL 값을 주었다. 따라서 어떤...
학원 #93일차: Http 쿠키(Cookie), 세션(Session), MVC 아키텍처
HTML 렌더러와 JavaScript 엔진 HTML와 CSS 형식에 따라 화면으로 렌더링해주는 HTML 렌더러와 자바스크립트를 실행하는 JavaScript 엔진이라는 두 개의 핵심 부품이 있다. 쿠키 쿠키는 웹 서버가 웹 브라우저에게 맡기는 데이터이다. 응답할 때 응답 헤더에 포함시켜 보낸다. 웹브라우저는 응답헤더로 받은 쿠키 데이터를 보관하...
HTML5 CSS3 웹 표준의 정석 #8장: CSS 박스모델
CSS 박스모델 CSS와 박스 모델 블록 레벨 요소와 인라인 레벨 요소 블록레벨 요소는 태그를 사용해 요소를 삽입했을 때 혼자 한 줄을 차지하는 요소이다. 즉 해당 요소의 너비가 100%라는 의미이다. 너비나 마진, 패딩 등을 이용해 크기나 위치를 지정하려면 블록 레벨 요소여야 한다. 인라인 레벨 요소는 줄을 차지하지 않는요소이다. 즉 화면에 ...
HTML5 CSS3 웹 표준의 정석 #7장: 색상과 배경을 위한 스타일
7-1. 웹에서 색상 표현하기 16진수 표기법 6자리의 16진수로 표시한다. 6자리는 #RRGGBB 형식으로 표시한다. rgb와 rbga 표기법 0부터 255까지의 숫자로 표기한다. rgba에서 a(alpha)는 불투명도 값을 나타내는 것으로 0부터 1까지의 값 중에서 사용할 수 있다. 0은 투명한 것이고 1은 완전히 불투명한 것이다. hsl...
학원 #89일차: 로그인과 사진 업로드 구현
PMS 프로젝트 이전 버전: 로그인 기능 구현 복습 이전에는handler 패키지의 LoginCommand에서 로그인 기능을 구현했다. 로그인을 구현하기 위해서는 세션을 다뤄야 한다. 세션은 클라이언트 전용 정보를 다루는 클라이언트 전용 보관소이다. 로그인 기능을 구현하기 전에는 모든 정보를 context 맵에 저장하였지만 context는 모든 클라...
학원 #88일차: 서블릿 프로그래밍
com.eomcs.web.ex04 클라이언트가 보낸 데이터 읽기 GET 요청 데이터 읽기 웹 브라우저에 URL을 입력한 후 엔터를 치면 GET 요청이다. 웹 페이지에서 링크를 클릭하면(자바스크립트 처리하지 않은 상태) GET 요청을 보낸다. 웹 페이지의 폼(method=’GET’일 때)에서 전송 버튼을 클릭하면 GET 요청을...