분류 전체보기 1341

Ch03. 서블릿, JSP, MVC 패턴 - MVC 패턴(적용)

서블릿을 컨트롤러로 사용하고, JSP를 뷰로 사용해서 MVC 패턴을 적용해보자. Model은 HttpServletRequest 객체를 사용한다. request는 내부에 데이터 저장소를 가지고 있는데, request.setAttribute() , request.getAttribute()를 사용하면 데이터를 보관하고, 조회할 수 있다. 등록 Form으로 이동하는 Servlet/JSP 만들기 등록 Form으로 이동하는 Servlet(Controller) Servlet에게 제어권을 전달받은 JSP username: age: 전송 dispatcher.forward() : 다른 서블릿이나 JSP로 이동할 수 있는 기능이다. 서버 내부에서 다시 호출이 발생한다 클라이언트에 응답이 갔다 오는 redirect가 아닌 서..

Ch03. 서블릿, JSP, MVC 패턴 - MVC 패턴(개요)

너무 많은 역할 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게 되고, 결과적으로 유지보수가 어려워진다. 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야 한다. HTML 코드 하나 수정해야 하는데, 수백줄의 자바 코드가 함께 있다고 상상해보라! 또는 비즈니스 로직을 하나 수정해야 하는데 수백 수천 줄의 HTML 코드가 함께 있다고 상상해보라. 변경의 라이프 사이클 사실 이게 정말 중요한데, 진짜 문제는 둘 사이에 변경의 라이프 사이클이 다르다는 점이다. 예를 들어서 UI 를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 각각 다르게 발생할 가능..

Ch03. 서블릿, JSP, MVC 패턴 - JSP로 회원 관리 웹 애플리케이션 만들기

등록 Form으로 이동하는 Servlet 만들기 username: age: 전송 username과 age를 입력하는 form으로 이동한다. jsp를 사용하기 위에 맨 위에 TAG를 넣어준다 JSP는 자바 코드를 그대로 다 사용할 수 있다. 자바의 import 문과 같다. 이 부분에는 자바 코드를 입력할 수 있다. 이 부분에는 자바 코드를 출력할 수 있다 저장, 등록 내역 보여주는 Servlet 만들기 성공 id= username= age= 메인 HTML에 내 실제 Application 로직을 넣어준다. Member를 생성후 등록한 뒤, 등록한 내역을 보여준다. 전체 Member 내역 보여주는 Servlet 만들기 메인 id username age 등록된 모든 Member를 조회하는 Form을 보여준다. ..

Ch03. 서블릿, JSP, MVC 패턴 - 서블릿으로 회원 관리 웹 애플리케이션 만들기

등록 Form으로 이동하는 Servlet 만들기 @WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text..

Ch03. 서블릿, JSP, MVC 패턴 - 회원 관리 웹 애플리케이션 요구사항

회원 정보 이름: username 나이: age 기능 요구사항 회원 저장 회원 목록 조회 도메인 만들기(Member) MemberRepositroy 생성 Test class MemberRepositoryTest { MemberRepository memberRepository = MemberRepository.getInstance(); @AfterEach public void afterEach(){ memberRepository.clearStore(); } @Test public void save() throws Exception{ //given Member member = new Member("hello", 20); //when Member saveMember = memberRepository.save(..

Ch02. 서블릿 - HTTP 응답 데이터

단순 텍스트 응답 앞에서 살펴봄 ( writer.println("ok"); ) HTML 응답 HTTP API - MessageBody JSON 응답 단순 텍스트, HTML HTTP 응답으로 HTML을 반환할 때는 content-type을 text/html로 지정해야 한다. HTTP 응답 데이터 - API JSON HTTP 응답으로 JSON을 반환할 때는 content-type을 application/json 로 지정해야 한다. Jackson 라이브러리가 제공하는 objectMapper.writeValueAsString()를 사용하면 객체를 JSON 문자로 변경할 수 있다. 참고 application/json 은 스펙상 utf-8 형식을 사용하도록 정의되어 있다. 그래서 스펙에서 charset=utf-8 ..

Ch02. 서블릿 - HttpServletResponse(기본 사용법)

HTTP 응답 메시지 생성 HTTP 응답 코드 지정 헤더 생성 바디 생성 편의 기능 제공 Content-Type, 쿠키, Redirect response.setHeader를 통해 ResponseHeader에 원하는 데이터와 상태 코드를 넣을 수 있다. Content(response) 좀 더 편하게 ContentType과 Encoding을 Header에 세팅할 수 있다. Cookie(response) 쿠키 객체를 생성해서 response 객체에 addCookie를 하게 되면 header에 쿠키가 세팅된다 redirect(response) response header에 302 코드오 Location을 채워서 반환해야 하지만, 편하게 sendRedirect 기능을 사용하면 된다.

Ch02. 서블릿 - HTTP 요청 데이터

주로 3가지 방법을 사용하여 HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달한다 GET - 쿼리 파라미터 /url?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 예) 검색, 필터, 페이징 등에서 많이 사용하는 방식 POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20 예) 회원 가입, 상품 주문, HTML Form 사용 HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POST, P..

Ch02. 서블릿 - HttpServletRequest(기본 사용법)

printStartLine(request) Method, protocol, Schema, URL/URI, QueryString, Secure(Http인지 Https인지)를 알 수 있다. printHeaders(request) Request Header 의 정보를 출력할 수 있다 예전 방식 : Enumeration 사용 최신 방식 : Iterater 변경 후, foreach printHeaserUtils(request) Request Header의 편의 기능을 사용할 수 있다. printEtc(request) 서블릿이 생성된 네트워크 정보나, port 정보 사용이 가능하다.

Ch02. 서블릿 - HttpServletRequest(개요)

HttpServletRequest 역할 HTTP 요청 메시지를 개발자가 직접 파싱 해서 사용해도 되지만, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱 한다. 그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다 HttpServletRequest를 사용하면 다음과 같은 HTTP 요청 메시지를 편리하게 조회할 수 있다. HTTP 요청 메시지 START LINE HTTP 메소드 URL 쿼리 스트링 스키마, 프로토콜 헤더 헤더 조회 바디 form 파라미터 형식 조회 message body 데이터 직접 조회 HttpServletRequest 객체는 추가로 여러 가지 부가기능도 함께 제공한다. 임시 저장소 ..