본문 바로가기

교재 실습245

6.2 세션(HttpSession) 요구사항 및 실습 HTTP는 클라이언트와 서버가 연결된 후 상태를 유지할 수 없다. 따라서 HTTP를 무상태 프로토콜이라고 부른다. 하지만 웹 애플리케이션은 로그인과 같이 상태를 유지할 필요가 있는 요구사항이 발생한다. 이와 같이 상태를 유지할 필요가 있을 때 사용할 수 있는 방법이 쿠키(Cookie) 헤더를 사용하는 방법(쿠키 외에 요청을 보낼 때 인자를 통해 전달하는 방법도 있지만 추천할 만한 방법은 아니다. 단, 쿠키를 사용할 수 없는 경우에는 인자를 통해 매번 상태 값을 전달할 수밖에 없다.)이다.일단 "Set-Cookie" 헤더를 통해 쿠키를 생성하면 이후 발생하는 모든 요청에 "Set-Cookie"로 추가한 값을 "Cookie" 헤더로 전달하는 방식이다. 그런데 쿠키를 사용하는데 문제점이 하나 있다. 보안상 취.. 2025. 4. 24.
6.1.5 중복 코드 제거 기본적인 회원관리 기능 구현을 완료했다. 그런데 완료한 JSP 파일을 보니 너무나 많은 중복코드가 있다. 특히 웹 페이지 상단의 메뉴 부분은 모든 페이지가 같다. JSP의 중복 코드를 제거한다. HINT· JSP의 또는 를 사용해 중복을 제거할 수 있다. 지금까지의 실습 과정에 대한 구현 과정은 설명하지 않는다. 위 실습 과정에 대한 구현 코드를 보고 싶다면 https://github.com/slipp/jwp-basic 저장소의 step1-user-completed-no-database 에서 제공하고 있으니 참고한다.참고도서 : https://roadbook.co.kr/169 [신간안내] 자바 웹 프로그래밍 Next Step● 저자: 박재성 ● 페이지: 480 ● 판형: 사륙배변형(172*225) ●.. 2025. 4. 23.
6.1.4 회원 목록 및 개인정보 수정 보안 강화 실습 현재 사용자 목록은 모든 사용자가 볼 수 있으며 수정할 수 있다. 사용자 목록 조회는 로그인 사용자만 가능하며, 개인정보 수정은 자신의 정보만 수정 가능해야 한다. HINT· 세션에 저장된 데이터를 꺼내오고 싶은 경우HttpSession session = req.getSession(); Object value = session.getAttribute("user"); if (value != null) { User user = (User) value; }참고도서 : https://roadbook.co.kr/169 [신간안내] 자바 웹 프로그래밍 Next Step● 저자: 박재성 ● 페이지: 480 ● 판형: 사륙배변형(172*225) ● 도수: 1도 ● 정가: 30,000원 ● 발행일: 2016년 9.. 2025. 4. 22.
6.1.3 로그인/로그아웃 기능 실습 현재 상태가 로그인 상태면 상단 메뉴가 "로그아웃", "개인정보수정"이 나타나야 하며, 로그아웃 상태면 상단 메뉴가 "로그인", "회원가입"이 나타나야 한다. HINT 1단계· 로그인이 성공하는 경우 다음 코드를 참고해 세션에 로그인 정보 추가 HttpSession session = req.getSession(); session.setAttribute("user", user);HINT 2단계· JSP에서 세션 데이터 체크 및 JSTL에서 if/else if/else 분기문 처리 [html 구문] [html 구문] HINT 3단계· Session에 저장된 데이터를 삭제하는 방법 HttpSession session = req.getSessio.. 2025. 4. 21.
6.1.2 개인정보수정 실습 회원가입을 완료하면 사용자 목록 화면을 볼 수 있다. 사용자 목록 화면을 보면 각 사용자 우측에 "개인정보수정" 버튼이 있다. 이 버튼으로부터 수정 기능에 대한 구현을 시작하면 된다. 수정 화면은 회원가입 화면인 /user/form.html 을 재사용한다.해결하는데 어려움이 있을까봐 몇 개의 힌트를 제공한다. HINT 1단계 · 회원가입한 사용자 정보를 수정할 수 있는 수정 화면과 사용자가 수정한 값을 수정하는 기능을 나누어 개발해야 한다. HINT 2단계 · Servlet에서 전달한 값을 JSP에 출력· 변경할 수 없는 사용자 ID 값 전달 참고도서 : https://roadbook.co.kr/169 [신간안내] 자바 웹 프로그래밍 Next Step● 저자: 박재성 ● 페이지: 480 ● 판형: 사.. 2025. 4. 20.
6.1.1 서블릿/JSP 복습 step0-getting-started 브랜치 소스코드를 열어보면 서블릿/JSP 기반으로 회원가입(서블릿)과 사용자 목록(JSP) 기능을 이미 구현해 놓았다. 회원가입(서블릿)과 사용자 목록(JSP) 소스코드를 리뷰하면서 서블릿과 JSP에 대해 간략하게 살펴본다.회원가입 화면은 /user/form.html 을 그대로 사용한다. 사용자가 입력한 데이터를 추출한 후 데이터베이스에 데이터를 추가하는 회원가입 서블릿 코드는 다음과 같다. - src/main/java/next/web/CreateUserServlet.javapackage next.web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annot.. 2025. 4. 15.
6.1 서블릿/JSP로 회원관리 기능 다시 개발하기 회원관리 기능을 개발하기 위한 HTML, CSS, 자바스크립트, DataBase 클래스 등은 3장 ~ 5장 실습에서 사용한 예제 그대로 사용한다.6장부터 12장까지 실습은 https://github.com/slipp/jwp-basic 저장소에서 각 단계별 브랜치를 통해 가능하다. 이 저장소 또한 자신의 계정으로 Fork해서 실습할 것을 추천한다.GitHub 저장소 코드를 이클립스에 가져와 메이븐 빌드하는 과정은 다음 동영상을 참고한다. https://youtu.be/0VpYSAR8x28 : GitHub에 있는 코드를 이클립스로 가져와 메이븐 빌드하기 이 장의 실습은 https://github.com/slipp/jwp-basic 저장소의 step0-getting-started 브랜치에서 시작하면 된다.참고.. 2025. 4. 14.
6장 서블릿/JSP를 활용해 동적인 웹 애플리케이션 개발하기 오랜 기간동안 서블릿(Servlet)과 JSP(Java Server Page)는 자바 진영에서 동적인 웹 애플리케이션을 개발하는데 있어 표준이었다. 하지만 최근에 플레이 프레임워크(https://www.playframework.com 서블릿 표준을 따르지 않으면서 동적인 웹 애플리케이션 개발이 가능하도록 지원하는 프레임워크이다. 플레이는 자바와 스칼라를 지원한다.)와 같이 서블릿 표준을 따르지 않는 기술도 등장하고 있다. 서블릿/JSP는 언제든지 다른 기술로 대체될 수 있다. 따라서 서블릿 사용법을 익혔다면 다음 단계는 서블릿/JSP가 추상화하고 있는 기반 지식을 학습할 필요가 있다. 이미 앞의 실습을 통해 서블릿이 추상화하고 있는 HTTP의 많은 내용을 학습할 수 있었다. 이번 장에서는 4장 실습에서 .. 2025. 4. 12.
5.4.3 템플릿 엔진 최근에는 동적으로 HTML을 생성하기 위해 JSP를 사용하는 대신 템플릿 엔진을 사용하는 것이 일반적이다. JSP와 템플릿 엔진의 역할은 같다. 아직도 많은 곳에서 JSP를 사용하고 있지만 흐름은 템플릿 엔진으로 넘어가고 있다.지금까지 동적인 HTML 생성을 웹 백엔드가 담당했는데 모바일과 같은 다양한 기기의 등장으로 최근 웹 백엔드는 JSON/XML과 같은 데이터만 제공하고 동적인 웹 UI는 클라이언트가 담당하는 방향으로 변해가고 있다. 이 같은 방향으로 발전해 갈수록 JSP에 대한 필요성은 떨어질 수 밖에 없으며, 템플릿 엔진에 대한 필요성은 높아갈 것이다.JSP에 비해 템플릿 엔진이 가지는 장점도 많기 때문에 개발 경험을 쌓는 시작 단계부터 JSP 대신 템플릿 엔진을 활용할 것을 추천한다. 구글에 .. 2025. 4. 11.