목록프로그래밍/JSP & Servlet (7)
쌓고 쌓다
기존의 MVC 패턴에서 공통 로직이 필요하면 공통 로직을 실행하고 별도의 로직을 수행하게 해야한다. 공통된 입구가 없기에 모든 입구마다 공통 로직을 깔아줬음. 프론트 컨트롤러 패턴 프론트 컨트롤러 패턴으로 입구를 하나로 만들어 공통 로직을 수행할 수 있다. 또한 프론트 컨트롤러의 뒤에 있는 나머지 컨트롤러는 요청에 맞는 컨트롤러를 서블릿을 사용하지 않고 호출할 수 있다. 스프링 웹 MVC의 핵심 "DispatcherServlet"도 FrontController 패턴으로 만들어져 있다고 한다. 프론트 컨트롤러 V1 만들어볼 프론트 컨트롤러 구조는 위와 같다. 프론트 컨트롤러로 들어온 요청 URL에 따라 컨트롤러를 호출하여 응답한다. Controller 인터페이스 public interface Control..
서블릿은 Controller로, JSP는 View로 사용한다. Model은 HttpServletRequest 객체를 사용한다. 회원 저장 formController @WebServlet(name="mvcMemberFormServlet", urlPatterns = "/servlet-mvc/members/new-form") public class MvcMemberFormServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String viewPath = "/WEB-INF/view..
JSP 의존성 추가 //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'jakarta.servlet:jakarta.servlet-api' //스프링부트 3.0 이상 implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' // 스프링부트 3.0 이상 implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl' //스프링부트 3.0 이상 //JSP 추가 끝 new-form.jsp (회원 입력) username: age: 전송 JSP 문서라는 의미를 포함한 문장이다. JSP 문서는 이렇게..
Member (회원 도메인) @Getter @Setter public class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; } } 생성자로 이름, 나이를 받는다. 기본 생성자도 존재. id는 저장소에서 할당함. MemberRepository public class MemberRepository { private static Map store = new HashMap(); private static long sequence = 0L; privat..
Response 구조 HTTP/1.1 200 OK status line Date: Sun, 2 June Server: Apache Content-Length: 1 Content-Type: text/html headers blank line hello body HTTP 응답 메시지 생성 1. HTTP 응답 코드 지정 // [status-line] response.setStatus(HttpServletResponse.SC_OK); SC_OK는 200으로 매핑되어 있어 메소드 호출시 200을 넣어줘도 동일하다. 2. 헤더 생성 //[response-headers] response.setHeader("Content-Type", "text/plain;charset=utf-8"); response.setHeader..
HTTP 요청 데이터 HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 3가지 방식이 있다. GET - 쿼리 파라미터 /url?username=LSM&age=1 메시지 바디 없이, 쿼리 파라미터에 데이터를 담아 전달 POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파라미터 형식으로 전달 HTTP message Body에 직접 데이터를 담아서 요청 HTTP API에서 주로 사용 (JSON, TEXT) JSON 주로 사용하며 POST, PUT, PATCH 1. GET 쿼리 파라미터 username=LEE, age=1 데이터를 아래의 URL로 전달한다. http://localhost:8080/reques..
서블릿 자바를 사용하여 웹 페이지를 동적으로 생성해주는 프로그램. HTTP 요청시 WAS(웹 애플리케이션 서버)는 Request, Response 객체를 새로 만들어서 서블릿 객체(helloServlet)를 호출한다. 개발자는 HTTP 요청 응답 정보를 Request, Response로 편하게 다룰 수 있다. Response를 바탕으로 HTTP 응답 메시지를 만들어 웹 브라우저에 전달한다. => 서블릿 객체는 싱글톤으로 관리되므로 공유 변수 사용 주의하자. 서블릿 환경 설정 스프링 부트는 서블릿을 직접 등록하여 사용할 수 있도록 @ServletComponentScan을 지원한다. @ServletComponentScan // 서블릿 자동 등록 @SpringBootApplication public clas..