Spring
-
요청 매핑, 로그Spring 2022. 4. 19. 02:20
💡 로그 log - 운영 시스템에서 System.out.println()같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해 로그를 출력한다 - 실무에서는 항상 로그를 사용해야 한다 📌 @Slf4j - 롬복을 사용한다 👉 로그 호출 - log.info("hello") - log.info("data={}", data) -> data=--------data내용 💡 요청 매핑 👉 PathVariable(경로 변수) 사용 /** * PathVariable 사용 * 변수명이 같으면 생략 가능 * @PathVariable("userId") String userId -> @PathVariable userId */ @GetMapping("/mapping/{userId}") publ..
-
스프링 MVC 구조, 간단한 애노테이션Spring 2022. 4. 19. 01:48
💡 SpringMVC 구조 - FrontController가 DispatcherServlet이다 컴포넌트 스캔의 대상) - 스프링 MVC에서 컨트롤러로 인식 - 반환 값이 String이면 뷰 이름으로 인식된다 -> 뷰를 찾고 뷰가 랜더링 된다 ❗ @RestController - 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력한다 ex) return "ok"; => HTML 메시지 바디에 ok라는 메시지 출력 👉 @RequestMapping - 요청 정보 매핑한다 - 해당 URL이 호출되면 이 메서드가 호출된다 (메서드의 이름은 임의로 짓는다) - 대부분의 속성을 배열[]로 제공하므로 다중 설정이 가능하다. ex) @RequestMapping{"/save", "/cancel"} 👉 ..
-
FrontController 패턴, 어댑터 패턴Spring 2022. 4. 18. 18:15
💡 FrontController 패턴 - 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받는다 - 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아가 호출한다 - 입구를 하나로! - 공통 처리 가능 - 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다 💡 어댑터 패턴 ❗ 어떤 개발자는 ControllerV3 방식으로 개발하고 싶고, 어떤 개발자는 ControllerV4 방식으로 개발하고 싶다면? => 어댑터 패턴을 사용하자 - 어댑터는 실제 컨트롤러를 호출하고, 그 결과로 ModelView를 반환해야 한다 - 프론트 컨트롤러에서 호출된것과 달리 어댑터를 통해 실제 컨트롤러가 호출된다 👉 핸들러 어댑터 - 어댑터 역할, 덕분에 다양한 종류의 컨트롤러를 호출할 수 있다 👉 핸들러 - ..
-
MVC 패턴Spring 2022. 4. 18. 18:06
🔎 MVC 패턴 등장 - 비즈니스 로직은 서블릿 처럼 다른곳에서 처리하고, JSP는 목적에 맞게 HTML로 화면(View)을 그리는 일에 집중하자 💡 Model View Controller * 웹 애플리케이션은 보통 MVC 패턴을 사용한다 - 하나의 서블릿이나, JSP로 처리하던 것을 컨트롤러(Controller)와 뷰(View)라는 영역으로 서로 역할을 나눈 것을 말한다 👉 컨트롤러 Controller - HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다 - 뷰에 전달할 결과 데이터를 조회해서 모델을 담는다 👉 모델 Model - 뷰에 출력할 데이터를 담아둔다 - 뷰가 필요한 데이터를 모두 모델에 담아 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더..
-
JSPSpring 2022. 4. 18. 17:09
일일이 자바 코드로 HTML을 만들어 내는 것 보다 차라리 HTML 문서에 동적으로 변경해야 하는 부분만 자바 코드를 넣을 수 있다면 더 편리할 것이다 => 템플릿 엔진 이용 🔎 템플릿 엔진을 사용하면 HTML 문서에서 필요한 곳만 코드를 적용해 동적으로 변경할 수 있다 종류) JSP, Thymeleaf, Freemarker 등 💡 JSP - JSP는 자바 코드를 그대로 다 사용할 수 있다 - : 이 부분에 자바 코드를 입력할 수 있다 - : 이 부분에 자바 코드를 출력할 수 있다 - 실행시 .jsp 까지 적어야 한다. 📌 JSP 라이브러리 추가 - build.gradle //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' i..
-
서블릿 ServletSpring 2022. 4. 18. 12:27
💡 서블릿 - 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스 - 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행 후, 웹 브라우저에 결과를 전송한다 - MVC 패턴에서 Controller로 이용된다 - html을 사용해 요청에 응답한다 @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) . . . } * @WebServelt : 서블릿 애노테이션 -..
-
메시지, 국제화Spring 2022. 4. 18. 02:30
❗ 기획자가 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하였다면? -> 단어를 다 찾아가면서 모두 변경해야 한다 => 해당 HTML 파일에 메시지가 하드코딩 되어 있기 때문 ❓ 하드코딩 ex) 상품 등록 폼 => 상품 등록 폼과 같이 박혀 있는 코드를 말한다 💡 메시지 - 다양한 메시지를 한 곳에서 관리하도록 하는 기능 1. messages.properties 메시지 관리용 파일 작성한다 2. HTML에 key 값으로 해당 데이터를 불러 사용한다 => 타임리프 이용 #{ key } 💡 국제화 - 메시지 파일 (messages.properties)을 각 나라별로 별도로 관리하면 서비스를 국제화 할 수 있다 ex) messages_en.properties / messages_ko.properties 💡..
-
웹 시스템 구성, 서블릿, 멀티 쓰레드Spring 2022. 4. 13. 17:32
💡 웹 시스템 구성 - WEB, WAS, DB 🔎 WEB (Web Server) - 정적 리소스 제공 - 정적(파일) HTML, CSS, JS, 이미지, 영상 🔎 WAS (Web Application Server) - 웹 서버 기능 + 프로그램 코드 실행해서 애프리케이션 로직 수행 - 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC * 정적 리소스는 웹 서버가 처리 -> 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청 * WAS는 중요한 애플리케이션 로직 처리 담당 * 정적 리소스가 많이 사용되면 Web 서버 증설 애플리케이션 리소스가 많이 사용되면 WAS 증설 => 효율적인 리소스 관리 * WAS,DB 장애시 WEB 서버가 오류 화면 제공 💡 서블릿 @WebSer..