본문 바로가기

SpringBoot

(32)
ch2 15. forward와 redirect - 실습 -header.html에 login링크 걸어주기 Home Board Book FAQ Login - LoginController에서 Model 대신에 RedirectAttribute 사용 (redirect 기능을 쓰고, Model의 자손이라 Model의 기능을 다 물려받고 있다. ) @PostMapping("/login") public String login(String id, String pwd, RedirectAttributes model) throws Exception{ // 1. id, pwd를 확인 if(loginCheck(id,pwd)) { // 2. 일치하면, userInfo.html model.addAttribute("id", id); model.addAttribute("pwd", pwd);..
ch2 14. forward와 redirect - 이론 1. redirect와 forward의 처리 과정 비교 * redirect 1) 브라우저를 통해 클라이언트가 /ch2/write.jsp라는 요청을 했을 때 그 요청이 담긴 request 객체가 생성된다. -> '수동요청, GET or POST 원하는 방식' 2) 객체가 전달이 되었는데 write.jsp가 봤더니 로그인을 안한 상태! -> login.jsp로 요청하라고 응답해주게 된다. (3xx 은 redirect - 다른 곳으로 재요청) 3) 브라우저가 해당 응답을 받고 /ch2/login.jsp로 다시 요청을 수행한다. 새로운 요청이 담긴 request 객체가 만들어지고, 이게 login.jsp로 전달된다. (1번의 request 객체와는 서로 다른 객체) -> '브라우저가 자동 요청, GET방식' 4..
ch2 13. filter와 interceptor 1. Filter - 공통적인 요청 전처리와 응답 후처리에 사용. 로깅, 인코딩 등 서블릿이 있을 때 공통적으로 똑같이 전처리 작업, 후처리 작업이 들어간다면 이는 '중복'이다. 이렇게 중복 코드들이 여러 서블릿에 공통적으로 들어갈 때 중복을 제거해야한다. -> 어떻게 제거? 서블릿들 앞에 Filter를 두면 된다! (서블릿은 컨트롤러라고 생각하기) Filter가 발전한게 Interceptor이듯이 서블릿이 발전한게 컨트롤러이다. 요청이 왔을 때 요청을 필터가 먼저 받아서 전처리를 수행하고 서블릿을 호출한다. (3개 중 두 번째 서블릿으로 간다고 가정) 호출한 서블릿으로 요청이 가고 해당 서블릿이 처리를 하고 처리가 끝나면 다시 돌아와서 후처리 작업을 수행하고 응답하게 된다. (DispatcherServ..
ch2 12. Thymeleaf로 레이아웃 적용하기 https://codepen.io/ CodePen An online code editor, learning environment, and community for front-end web development using HTML, CSS and JavaScript code snippets, projects, and web applications. codepen.io - 작성한 코드의 결과를 바로 확인할 수 있다. 간단하게 코드를 작성한 후 thymeleaf 템플릿 파일들에 적용해보자. 템플릿의 레이아웃에 적용하기 위해서는 먼저 라이브러리를 다운받아야 한다. pom.xml 파일에서 dependency를 우클릭 한 후 생성을 누른다. 다음과 같이 추가한 후 pom.xml을 업데이트 해준다. - templat..
ch2 11. @RequestMapping과 URL인코딩 1. @RequestMapping대신 @GetMapping, @PostMapping 사용 가능 @Controller public class LoginController { // @RequestMapping(value = "/login/login", method = RequestMethod.GET) // 아래와 같다. 기본은 GET // @RequestMapping("/login/login") // 더 짧게 아래 문장과 같이 사용 가능 @GetMapping("/login/login") public String showLogin() { return "login"; // login.html } // 하나의 메소드로 GET, POST 둘 다 처리하는 경우 // @RequestMapping(value = "/lo..
ch2 10. 로그인화면 만들기 - index.html 메인 화면 여기서 Login 클릭하면 Login 화면이 나타난다. - login.html id, pwd입력 후 로그인을 클릭하면 이걸 Login 컨트롤러가 받는다. 받아서 id와 pwd가 맞는지 판단한다. 맞으면 userInfo.html -> id와 pwd가 보여지게함 안맞으면 다시 로그인 화면으로 * 프로그램을 짜기 전에 흐름을 그려보는게 중요하다 !! * package com.fastcampus.ch2; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annota..
ch2 08. @RequestParam과 @ModelAttribute - 이론 1. WebDataBinder @RequestMapping("/getYoilMVC5") public String main(@ModelAttribute MyDate date, BindingResult result) { http://localhost:8080/requestParam5?year=2023&month=1&day=2 name value "year" "2023" "month" "1" "day" "2" 이런식으로 map으로 저장된다. 값이 여러 개 들어갈수 있기 때문에 '배열'로 저장된다. 대부분은 하나만 들어온다. URL은 문자열 -> map도 타입으로 저장된다. 현재 main메소드의 매개변수 타입은 Mydate이다. DispatcherServlet이 이 매개변수 타입을 보고 MyDate의 객체를 만..
ch2 08. @RequestParam과 @ModelAttribute - 실습 1. @ModelAttrubute - year, month, day 매개변수를 하나의 객체로 묶어서 사용해보자. -> 매개변수 부분에 MyDate클래스를 생성 2020년 1월 1일은 수요일 package com.fastcampus.ch2; public class MyDate { private int year; private int month; private int day; public int getYear() {return year;} public void setYear(int year) {this.year = year;} public int getMonth() {return month;} public void setMonth(int month) {this.month = month;} public int..