스프링의 정석

스프링의 정석/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..

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

11. 관심사의 분리와 MVC패턴 - 원리(1)

1. MethodInfo 예제 Spring에 매개 변수만 적어주면 어떻게 페이지가 생성되는지 원리를 알아보자. https://github.com/castello/spring_basic/blob/main/ch2/MethodInfo.java에 있는 MethodInfo 코드를 가져온다. StringJoiner는 구분자 " , " // 접두사 " ( " // 접미사 " ) " 를 붙이고 add 메서드를 사용하면 console과 같이 깔끔하게 출력 가능하다. YoilTeller의 매개 변수는 request, response인데 console에 출력된 것의 매개 변수는 arg0, arg1이다. 컴파일러에게 매개 변수의 type은 중요하지만 이름은 중요하지 않다. 컴파일 된 상태에는 매개 변수의 이름은 저장하지 않는..

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

ch2_10. 관심사의 분리와 MVC패턴 - 실습(2)

yoil이라는 view의 이름이 어떻게 "/WEB_INF/views/yoil.jsp"로 바뀌는지 알아보자. spring폴더의 servlet-contect.xml은 웹설정 파일이다. 위 부분이 view를 설정하는 부분이고, 접두사 prefix로 경로 "/WEB-INF/views/"를 붙이고 접미사 suffix로 ".jsp"를 붙이라는 코드이다. 이 설정은 수정할 수 있다. 만약 반환 타입이 void로 view의 이름을 반환하지 않으면 어떻게 될까? view의 이름이 mapping된 URL의 이름으로 결정된다. getYoilMVC.jsp파일을 만들고, 톰캣을 실행한다. 반환된는 view가 mapping된 주소의 이름과 같은 jsp파일이 실행된다. 보통 이런 식으로 사용하지는 않지만 URL이름과 view의 이..

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

ch2_10. 관심사의 분리와 MVC패턴 - 실습(1)

YoilTeller 복사해서 YoilTellerMVC 만든다. 입력을 분리하면 HttpServletRequest request 매개변수를 String으로 year, month, day 각 각 받게 된다. 따라서 request 메서드인 request.getParmeter를 사용하지 않아도 된다. Spring은 문자를 숫자로 자동 형변환 하므로 매개 변수를 int형으로 바꿔주고, 작업의 parseInt 메서드를 쓰지 않아도 된다. 코드의 수가 줄어든다. 이 상태로 실행시키면 500 Error가 발생한다. 당황하지 말고 Error 메시지를 읽어보자. "Ambiguous mapping found."은 @Controller에서 @RequestMapping이 잘못되었을 때 발생하는 오류이다. YoilTeller의 ..

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

ch2_09. 관심사의 분리와 MVC패턴 - 이론

1. 관심사의 분리 Separation of Concerns YoilTeller 프로그램을 보면 으로 나눌 수 있다. "입력", "처리", "출력"을 Concern(관심사)라 한다. 관심사는 처리할 작업단위라 생각하자. YoilTeller의 main 메서드는 3개의 Concern이 있다. OOP의 5가지 설계원칙이 있고, 5가지의 앞 글자만 따서 SOLID라 한다. 한 가지가 단일책임의 원칙(SRP, Single Responsibility Principle)이다. 하나의 메서드는 하나의 책임만 가져야 한다는 뜻이다. 여기서 책임은 Concern이고 YoilTeller의 main 메서드는 3개의 Concern이 있어 분리하는 것이 맞다. 객체지향적으로 코딩을 잘하려면 코드 분리를 잘해야 한다. 분리의 종류..

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

ch2_08. 텍스트와 바이너리, MIME, Base64

텍스트와 바이너리, MIME, Base64 MIME(Multipurpose Internet Mail Expressions) Base64 7. 텍스트와 바이너리, MIME, Base64 data는 크게 문자, 숫자로 되어 있다. 위 그림은 image.jpg를 메모장으로 읽은 것이다. 메모장은 text editor이므로 image.jpg를 text로 인식해서 보여준다. 파일이 text 파일인지 binary 파일인지 구분하는 방법은 메모장으로 열었을 때 읽을 수 있으면 text 파일이고 못 읽으면 binary 파일이다. 위 그림에서 문자 외에 깨진 것은 숫자라 보면 된다. binary 파일은 문자는 문자, 숫자는 숫자로 쓰고 읽는다. text 파일은 문자는 문자, 숫자는 문자로 변환해서 쓴다. 읽을 때는 전부..

돌맹이떼굴떼굴
'스프링의 정석' 카테고리의 글 목록 (3 Page)