전체 글

스프링의 정석/Ch. 02 Spring MVC

21. @GetMapping, @PostMapping (2)

1. @GetMapping, @PostMapping @RequestMapping(value="/register/add", method=RequestMethod.GET)은 @GetMapping("/register/add")로 POST 요청은 @PostMapping으로 간단히 쓸 수 있다. URL이 같으면 충돌이 나지만 method가 다르면 충돌이 발생하지 않는다. 2. 클래스에 붙이는 @RequestMapping URL이 "/register/add"로 같으면 공통으로 @RequestMapping("/register")로 빼낼 수 있다. 클래스 안의 모든 메서드의 URL에 "/register"가 붙는다. spring은 mapping을 클래스 단위가 아니라 메서드 단위로 하는데 하나의 클래스에 모든 메서드를 ..

스프링의 정석/Ch. 02 Spring MVC

20. @GetMapping, @PostMapping (1)

입력을 POST로 설정했지만 위처럼 URL에 직접 입력해서 회원가입을 할 수 있다. 이렇게 되면 회원가입을 자동으로 할 수 있는 위험이 있어서 GET요청을 막아야한다. 위처럼 코드를 수정한다. @PostMapping을 써서 간략하게 작성할 수 있는데, PostMapping은 spring 4.3부터 적용되었다. Maven Dependencies의 spring 버전을 보면 3.1.1이다. pom.xml의 org.springframework-version을 5.0.7로 바꾼다. 바꾼 후에 Maven 업데이트를 해야 한다. 버전이 바뀐 것을 확인할 수 있다. @PostMapping 어노테이션이 추가된다. @RequestMapping("/register/add")을 @RequestMapping(value="/re..

스프링의 정석/Ch. 02 Spring MVC

19. 회원가입 화면 작성하기

1. 회원가입 - HTML, jsp registerForm.html : https://github.com/castello/spring_basic/blob/main/ch2/registerForm.html 정적 파일은 webapp-resources에 만든다. URL의 resources를 지우자. webapp->WEB-INF->spring 경로에 2개의 xml파일이 있다. root-contet.xml은 non-web관련 설정 파일이고 servlet-context.xml은 web관련 설정 파일이다. servlet-context파일에서 mapping에 있는 "/resources"를 지운다. URL에 resources 붙이지 않아도 출력된다. Form을 입력을 하고 우클릭으로 소스 보기를 하면 위와 같이 나온다. ..

스프링의 정석/Ch. 02 Spring MVC

18. @RequestMapping

2. @ModelAttribute ModelAttribute 어노테이션은 Model에 data를 자동으로 저장한다. 매개변수, 반환 타입에 적용할 수 있다. mian 메서드의 매개변수에 @ModelAttribute MyDate date를 적으면 m.addAttribute("myDate", date);를 적지 않아도 된다. 자동으로 Model 객체에 key, value인 map 형태로 key값인 "myDate"에 value로 date의 주소가 들어간다. @ModelAttribute("myDate") MyDate date에 key값을 적지 않으면 변수 타입의 첫 글자를 소문자로 바꿔서 key로 사용한다. 즉 @ModelAttribute MyDate date에서 Mydate의 첫 글자를 소문자로 바꾼 myDa..

스프링의 정석/Ch. 02 Spring MVC

17. @RequestParam과 @ModelAttribute

1. @RequestParam 1-1. 매개 변수 String @RequestParam은 요청한 parameter와 매개변수를 연결하는 애너테이션이다. main2 메서드에 매개변수 String year만 썼는데 @RequestParam(name="year", required=false)이 생략됐다. name="year"는 parameter이고 required=false는 필수여부이다. false이므로 필수가 아니다. url에 parameter, parameter 값을 쓰지 않아도 된다. 요청에 parameter이 없다면 null이 들어가고 parameter는 있지만 값이 없다면 빈 문자열("")이 들어간다. @RequestParam String year는 required=true와 같다. 요청에 para..

스프링의 정석/Ch. 02 Spring MVC

16. 서블릿과 JSP (4)

11. JSTL(JSP Standard Tag Libaray) c는 접두사로 jstl/core 라이브러리를 쓰는 것이다. fmt는 formatting으로 형식화 라이브러리 jstl/fmt를 사용하겠다는 것이다. 기본적으로 두 줄은 넣는다. 접두사가 있어야 c가 붙어있는 jstl tag(태그는 를 말한다.)를 사용할 수 있다. , 등 이 정의돼있는 JSTL이 Tag Libaray이다. 만약 JSP문서에서 if문을 쓰려면 위와 같이 써야한다. if문은 Java이고, msg=${param.msg}, "메세지가 없습니다." 는 HTML이다. 두 가지를 섞어 쓰려면 으로 나눠서 코드가 쪼개진다. 작업하다 보면 괄호는 빼먹기 쉬워 코드가 망가질 수 있다. 이를 보완하기 위해 생겨난 것이 JSTL이다. 을 간편히 한..

스프링의 정석/Ch. 02 Spring MVC

15. 서블릿과 JSP (3)

9. URL 패턴 @WebServlet에 URL 패턴을 등록하고, 배열로 여러개 등록할 수 있다. servlet은 lazy init이 기본이다. 늦은 초기화를 쓴다. 하지만 loadOnStartup를 사용하면 servlet을 호출하기도 전에 미리 만든다. 뒤에 붙는 숫자는 초기화 하는 우선순위이고 겹쳐도 상관 없다. servlet의 패턴 종류가 4가지가 있고 숫자는 우선순위이다. exact mapping은 정확히 일치해야 한다. 주소창에 입력한 URL이 패턴과 정확히 일치해야한다. 배열로 URL을 여러개 등록했을 때 exact mapping이 당연히 우선순위가 높다. 만약 /login/hello.do를 입력했는데 이와 일치하는 패턴이 없으면 우선 순위가 2인 path mapping으로 넘어간다. path..

스프링의 정석/Ch. 02 Spring MVC

14. 서블릿과 JSP (2)

8. 유효 범위(scope)와 속성(attribute) HTTP 특징 중에 상태 정보를 저장하지 않는다는 것을 'stateless'라 하고 반대되는 개념은 'stateful'이라 한다. 'stateful'은 상태 정보를 저장한다는 뜻이된다. HTTP의 'stateless'특징 때문에 저장소가 필요하고 유효 범위(scope)에 따라 4개가 있다. 4개의 저장소를 구분 짓는 특징은 접근 범위, 생존 기간이 있다. 접근 범위와 생존 기간이 다른 4개의 저장소가 있다. 저장소는 Map의 형태로 data를 저장한다. 저장소 1. pageContext pageContext안에 Map이 있다. 이 저장소는 lv 지역변수를 저장한다. 기본 객체(request, response)가 lv이기 때문에 pageContext안..

스프링의 정석/Ch. 02 Spring MVC

13. 서블릿과 JSP (1)

1. 서블릿과 컨트롤러의 비교 JSP(Java Server Page) ≒ Servlet 이고, 이를 발전시킨 것이 Spring이다. MVC 패턴에서 DispatcherServlet이 Servlet이다. Spring이 Servlet을 이용해서 동작하므로 알아야 한다. TwoDice Controller를 Servlet으로 바꾼 것이다. 차이점은 (servlet에서 해당되는 내용이다.) 1. main이 아니고 service이다. 2. @WebServlet = @Controller + @RequestMapping 이다. servlet에서는 @WebServlet에 mapping할 URL을 적는다. 3. HttpServlet을 상속받아야 한다. Controller는 상속받지 않는다. 자바는 단일상속(부모 1개만 상..

스프링의 정석/Ch. 02 Spring MVC

12. 관심사의 분리와 MVC패턴 - 원리(2) -> 다시 듣기

1. MethodCall2 실습 https://github.com/castello/spring_basic/blob/main/ch2/MethodCall2.java에서 MethodCall2 가져오기. Class.forName을 사용해서 "com.fastcampus.ch2.YoilTellerMVC"의 객체를 생성한다. 생성한 객체의 main메서드 정보를 가져온다. 이름이 main인 메서드가 오버로드 되어있을 수 있으므로 변수를 모두 적어줘야 한다. 암튼 Model생성해야 한다. String viewName = (String)main.invoke(obj, new Object[] { 2021, 10, 1, model });는 invoke에서 obj라는 객체에 main 메서드를 호출한다. Object[] { 202..

돌맹이떼굴떼굴
떼굴떼굴개발자