스프링/스프링 MVC 패턴
-
특정 조건 매핑스프링/스프링 MVC 패턴 2023. 2. 14. 12:34
저번에 @GetMapping, @PostMapping 등의 요청사항을 알아보았는데 이번에는 이런 요청들을 사용할 때 추가적으로 필요한 기능들을 공부할 것이다. @PathVaribale의 사용 @GetMapping("/mapping/{userId}") public String mappingPath(@PathVariable("userId") String data) { log.info("mappingPath userId={}", data); return "ok"; } 위와 같이 url에 파라미터를 넣을 수 있다. userId라는 변수를 만들어서 url에 userId 변수 값이 넘어오면 로그에 출력해주는 방식이다. @PathVariable을 사용한 경로변수를 통해서 원하는 리소스 경로에 식별자를 넣어주는 방식을..
-
로그 출력스프링/스프링 MVC 패턴 2023. 2. 13. 11:51
자바 공부를 할 때 지금까지 System.out.println()을 사용했다. 하지만 위와 같은 출력 방법은 괄호 안에 있는 모든 데이터를 일방적으로 출력하기 때문에 실무에서는 거의 사용하지 않는다고 한다. System.out.println()보다는 로그를 이용해서 출력하는 방법을 사용한다고 한다. @Slf4j // 로그 출력을 사용하게 해주는 애노테이션 @RestController // 그냥 컨트롤러는 view 이름이 반환되지만 RestController는 문자를 반환할 수 있다. public class LogTestController { // private final Logger log = LoggerFactory.getLogger(LogTestController.class); // @Slf4j로 대..
-
스프링 MVC스프링/스프링 MVC 패턴 2023. 2. 12. 18:28
스프링 MVC를 이용하면 이전까지 웹 페이지를 구축해서 회원 가입, 회원 저장, 회원 목록 조회했던 것들을 하나의 클래스에서 작성할 수 있다. 또한 코드가 간결하여 파악하기도 쉽다는 장점이 있다. 클래스 선언과 컨트롤러, 매핑 애노테이션 @Controller @RequestMapping("/springmvc/v3/members") public class SpringMemberControllerV3 { private MemberRepository memberRepository = MemberRepository.getInstance(); 클래스 위에 @Controller, @RequestMapping 애노테이션이 들어갔다. @Controller는 이 클래스를 컨트롤러로 사용한다는 의미를 가지고 있는 애노테이..
-
view resolver스프링/스프링 MVC 패턴 2023. 2. 12. 15:14
회원가입, 회원저장, 회원 목록 웹 사이트를 구축할 때 hocalhost:8080 뒤에 회원가입 WEB-INF/view/new-form.jsp 회원저장 WEB-INF/view/save-result 회원목록 WEB-INF/view/members 라는 url을 설정한다고 예를 들어보자. WEB-INF/view는 겹치는 것이기 때문에 웹 페이지를 만들때마다 입력해주는 것은 효율적이지 않다. 코드의 가독성도 떨어질 뿐만 아니라 반복작업이기에 지양해야한다. @Component("/springmvc/old-controller") // 스프링 빈의 이름 public class OldController implements Controller { @Override public ModelAndView handleReque..
-
핸들러 어댑터스프링/스프링 MVC 패턴 2023. 2. 12. 13:46
핸들러 어댑터란 여러 핸들러를 설정하고 그 중 하나를 선택해야 할 상황이 있을 때 핸들러를 매핑해줄 수 있는 장치이다. public interface MyHandlerAdapter { boolean supports(Object handler); ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException; } 핸들러 어댑터 인터페이스를 만들어서 하나의 어댑터로 여러 사이트에 매핑 될 수 있다. public FrontControllerServletV5() { initHandlerMappingMap(); initHandlerAdapters()..
-
프론트 컨트롤러 패턴스프링/스프링 MVC 패턴 2023. 2. 10. 21:19
프론트 컨트롤러가 있기 전까지는 컨트롤러에 공통된 과정이 있더라도 클라이언트가 요청할 때마다 계속해서 반복해야만 했다. 하지만 프론트 컨트롤러를 도입한다면 공통된 컨트롤러는 프론트 컨트롤러에서 처리하고 이후에 각각의 컨트롤러로 넘어가서 반복작업을 하지 않아도 된다는 장점이 있다. 프론트 컨트롤러 - 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 - 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 - 이전에는 고객의 요청이 오면 서블릿 매칭으로 각각 연결이 됐는데, 모든 요청이 프론트 컨트롤러로 가고 그 프론트 컨트롤러에서 이후 컨트롤러로 가게된다. - 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 인터페이스 생성 public interface Controller..
-
MVC 패턴스프링/스프링 MVC 패턴 2023. 2. 10. 18:03
Model View Controller MVC 패턴은 서로 영역을 분리해서 따로 고유의 역할을 부여하는 것이다. 만약에 단순히 UI만 수정해야할 일이 있더라도 서블릿과 JSP는 모든 것이 들어있는 코드를 변경해야한다. MVC 패턴은 View와 Controller가 분리되어 있기 때문에 해당 코드만 고치면 되고 나머지는 손을 안대도 된다. 한 마디로 서로 영향을 주지 않는다는 것이다. 컨트롤러 : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행. 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다. 모델 : 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 화면에 렌더링 할 수 있다. 뷰 : 모델에 담겨있..
-
JSP를 이용한 회원가입스프링/스프링 MVC 패턴 2023. 2. 10. 16:43
jsp는 html파일에 코드를 입력해서 웹 사이트를 구축하는 방식이다. 여기도 서블릿을 사용했을 때의 과정과 동일하게 가입, 저장, 목록 보여주기 순으로 진행하겠다. 서블릿을 사용할 때와 웹 사이트 구조나 결과가 완전 동일하다. 방식만 다르기 때문에 결과 캡쳐 사진은 생략 new-form.jsp username: age: 전송 처음에는 가입하기 위한 파일이다. localhost:8080/new-form.jsp 경로를 통해 웹 사이트를 등록하면 회원가입을 할 수 있는 파일이다. save.jsp 성공 id= username= age= 메인