Spring/SpringMVC

컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 클라이언트 검증 & 서버 검증 클라이언트 검증 : 자바스크립트를 활용한 검증 서버 검증 : 요청이 넘어와 컨트롤러나 서버의 다른 부분에서 검증 클라이언트 검증은 조작이 가능하여 보안에 취약하다. 서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다. 따라서, 이 둘을 적절히 사용하되, 서버 검증은 필수이다. API 방식을 사용하면 API 스펙을 잘 정의해서 검증 오류를 API 응답 결과에 잘 남겨주어야 한다. BindingResult 스프링이 제공하는 검증 오류를 보관하는 객체 검증 오류가 발생하면 BindingResult 객체에 보관하면 된다. *주의!! - BindingResult 는 검증할 대상 바로 다음에 와야한다. =..
메시지 만약, 프로젝트를 진행하던 중 기획자가 화면에 보이는 문구를 바꿔달라는 요청이 들어왔는데 이를 고치려면 어떻게 해야할까? 개발자 입장에서는 하드코딩으로 되어있는 문구를 일일히 바꾸려면 매우 번거로운 일이 아닐 수 없다. 여러 화면에 보이는 문구를 다 찾아가면서 변경해야 하기 때문이다. 스프링은 이러한 다양한 메시지를 관리하도록 하는 기능을 제공하는 데 이를 '메시지 기능'이라 한다. 예를 들어서 messages.properties라는 메시지 관리용 파일을 만들고 ==messages.properties== sports=스포츠 sportsId=스포츠 ID sports.sportName=스포츠명 sports.type=스포츠 유형 {0} 각 HTML들은 다음과 같이 해당 데이터를 key값으로 불러서 사용..
HTTP 응답 스프링(서버)에서 응답 데이터를 만드는 방법은 크게 정적 리소스, 뷰 템플릿, HTTP메시지 3가지 이다. 정적 리소스 HTML, CSS, JS 파일 그대로를 전달하는 것 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static , /public , /resources , /META-INF/resources [ src/main/resources ] : 리소스를 보관하는 곳, 클래스 패스의 시작 경로 정적 리소스 경로 src/main/resources/static 위 경로 하위에 정적 리소스 파일들을 담고 웹브라우저에서 url 요청으로 정적 리소스를 불러올 수 있다. 예) 브라우저 요청 : http://localhost:8080/basic/hello-form.h..
로깅 알아보기 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. 로깅 라이브러리 스프링 부트 로깅 라이브러리는 기본으로 다음 로깅 라이브러리를 사용한다. SLF4J(인터페이스) - http://www.slf4j.org SLF4J Simple Logging Facade for Java (SLF4J) The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing t..
SpringMVC 구조 직접 만든 프레임워크 스프링 MVC 비교 FrontController => DispatcherServlet handlerMappingMap => HandlerMapping MyHandlerAdapter => HandlerAdapter ModelView => ModelAndView viewResolver => ViewResolver MyView => View DispatcherServlet 스프링 MVC의 프론트 컨트롤러가 바로 디스패처 서블릿(DispatcherServlet)이다. (스프링 MVC의 핵심) 그림과 같이 DispatcherServlet은 부모 클래스에서 HttpServlet 을 상속 받아서 사용하고, 서블릿으로 동작한다. DispatcherServlet => Fram..
본 게시글은 김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의를 구매 후 정리하기 위한 포스팅입니다. 프론트 컨트롤러 그림과 같이 공통인 부분을 모아서 그것을 통해 접근하는 방식이 프론트 컨트롤러 프론트 컨트롤러도 Servlet이다. 프론트 컨트롤러와 서블릿 요청을 다 받아서 프론트 컨트롤러에서 공통으로 처리해야 하는 부분을 처리하고 요청이 어느 컨트롤러에 필요한지 확인하고 해당 컨트롤러를 호출한다. 공통 처리가 가능하다. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. => 프론트 컨트롤러가 요청에 대한 처리를 대신 해주기 때문. 스프링 웹 MVC의 핵심도 바로 FrontController이다. 스프링 웹 MVC의 DispatcherServlet이 Fro..
서버가 실행되면 스프링 부트에서 먼저 해당 컨트롤러가 있는지를 체크해서 있으면 그 해당 컨트롤러의 html을 불러온다. 만약, 컨트롤러가 없으면 static에 저장되어있는 정적 컨텐츠를 불러오게 된다. 따라서 서버를 동작 시켰을 때 스프링 부트에 HomController가 존재하기 때문에 그 해당 컨트롤러로 동작하는 "home.html"이 실행되게 된다. (index.html은 실행X) 회원 관리 화면 및 컨트롤러 회원관리 화면 (home.html) Hello Spring 회원 기능 회원 가입 회원 목록 컨트롤러(HomeController.java) package hello.hellospring.controller; import org.springframework.stereotype.Controller;..
멤버 컨트롤러 - 멤버 서비스를 통해 회원가입, 데이터 조회가 이루어질 수 있도록 제어하는 역할 => "멤버 컨트롤러가 멤버서비스를 의존한다." 즉, 서로 의존 관계가 있다. 스프링 빈을 등록하는 방법 컴포넌트 스캔과 자동 의존관계 설정 => (@Service, @Controller, @Repository...) == "컴포넌트 스캔" / @AutoWired == "자동 의존관계 설정" 예시 import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @Controller publ..
*본 내용은 인프런 김영한님의 스프링 강의를 기반으로 작성되었습니다. 회원 서비스 더보기 package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import java.util.List; import java.util.Optional; public class MemberService { private final MemberRepository memberRepository; public MemberService(MemberRepo..
*본 내용은 인프런 김영한님의 스프링 강의를 기반으로 작성되었습니다. 비지니스 요구사항 데이터 : 회원ID, 이름 기능 : 회원 등록, 조회 데이터 저장소는 선정되지 않음. 클래스 의존 관계 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현클래스를 변경할 수 있도록 설계 가벼운 메모리 기반의 데이터 저장소 사용 회원 도메인(DTO)과 레포지토리 만들기 회원 도메인 더보기 package hello.hellospring.domain; public class Member { private Long id; // 데이터들을 구분해주는 식별 정보 private String name; //회원이름 public Long getId() { return id; } public void setId(Long id) {..
thk_dev
'Spring/SpringMVC' 카테고리의 글 목록 (2 Page)