Spring
-
[Spring]Welcome Page와 우선순위Spring 2023. 3. 21. 13:32
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] - 도메인만 입력하는 경우 기본으로 호출되는 페이지 - resources/static/index.html @GetMapping("/") //아무것도 없음 == 즉, localhost:8080 입력한 경우에 Home() 메서드 호출 public String Home(){ return "home"; //templates의 home.html 호출 } - 이와 같이 설정하면 static/index.html 대신 templates의 home.html이 호출됨 - 이유 : 스프링은 컨트롤러를 먼저 확인하고 resources/static을 확인하기 때문 - 즉, 우선순위가 index.html보다 home.html이 높으므로 home.html이 호출되고 static..
-
[Spring]스프링 컨테이너와 스프링 빈, DISpring 2023. 3. 20. 20:48
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] - 스프링에서 자바 객체들을 관리하는 공간 - 빈의 생성부터 소멸까지를 개발자 대신 관리해주는 곳 - 자바 객체를 의미 - 의존성 종속 - Dependency == 객체가 다른 객체와 상호작용 하는 것 - 즉, 한 클래스가 다른 클래스의 메서드를 실행하는 것(변경에 의해 다른 클래스에 영향을 받는 것) - ex) 의존하는 클래스의 메서드명이 바뀌면 해당 클래스의 코드도 바뀜 - DI : 의존하는 객체를 직접 생성(new) 하는 대신 의존 객체를 전달받는 방식 - 클래스 간의 의존관계를 스프링 컨테이너가 자동으로 연결해주는 것 - 1. 컴포넌트 스캔과 자동 의존관계 설정(@Controller, @Service, @Repository 등등을 사용하는 방식..
-
[Spring]API 방식Spring 2023. 3. 20. 14:01
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name){ return "hello " + name; } - 템플릿 방식과의 차이는 View 없이 데이터가 그대로 전송됨 - 객체를 json 포맷(key, value로 이루어진 방식)으로 변환하여 데이터를 클라이언트에 반환하는 방식 - 즉 템플릿 방식은 View라는 템플릿이 있고 그것을 조작하는 방식이라면 API 방식은 해당 데이터를 그대로 전송하는 것 - 소스 보기를 해도 소스가 없음 - http의 body부에 해당 데이터를 직접 넣어주겠다는 뜻 @GetMapping("hell..
-
[Spring]ModelSpring 2023. 3. 20. 13:58
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] - key, value로 이루어진 HashMap - 컨트롤러에서 데이터(또는 속성)를 생성해 이를 jsp(== View)에 전달하는 역할 - addAttribute() 통해 View에 전달할 데이터를 지정할 수 있음 - HttpServlet의 setAttribute()에 해당 @GetMapping("hello") public String hello(Model model){ model.addAttribute("data", "hello!!"); return "hello"; } - ${키 값} 통해 불러오기 가능
-
[Spring]@RequestParam으로 값 받아오기Spring 2023. 3. 20. 13:55
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] - HttpServletRequest에서의 getParameter()에 해당 - 메서드의 인자값으로 @RequestParam("가져올 데이터 이름") 데이터 타입 데이터 담을 변수 사용 - 아래에서 Model 객체를 사용하는 이유는 Model 객체를 통해 View로 값을 넘겨주기 위해 - 여기서 @RequestParam(name = "name", required = false) 대신 @RequestParam("name")까지만 입력해줘도 되지만 ?을 통해 name의 value를 넘겨주지 않는 경우 에러가 발생하므로 value가 없더라도 실행될 수 있도록 required 옵션 추가해 줌(required의 디폴트 == true == 값을 반드시 넘겨줘야 ..
-
[Spring]MVC와 템플릿 엔진Spring 2023. 3. 20. 13:48
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] - Movel, View, Controller - 과거에는 View와 Controller가 분리되어 있지 않아서 컨트롤러의 기능까지 View에서 작성 - 화면을 그리는 데에만 집중해야 함 - 비즈니스로직과 관련 있거나 내부적인 것 처리하는 것에 집중해야 함 *참고* hello! empty - 이전 강의를 듣던 중 태그 사이의 hello! empty를 왜 입력하는 것인지 궁금했는데 절대 경로로 접속했을 때 정적으로 표시되는 문자열이라고 함 -> 동적으로 실행되는 경우 text 안의 문자열로 치환 @GetMapping("hello-mvc") public String helloMvc(@RequestParam(name = "name", required = f..
-
[Spring]정적 컨텐츠Spring 2023. 3. 20. 13:22
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] - 1. 정적 컨텐츠 - HTML 파일을 웹 서버에 그대로 전달하는 방식 - 2. MVC와 템플릿 엔진 - 가장 많이 하는 방식 - HTML을 동적으로 바꾸는 것(서버에서 HTML을 바꿈) - 3. API - (json 형태로)클라이언트에게 데이터를 전달하는 방식 - 스프링 부트는 정적 컨텐츠 기능을 자동으로 제공함 - src/resources/static에 들어감 - 실행 과정 - 웹 브라우저로부터 localhost:8080/hello-static.html을 내장 톰캣 서버에 전송 -> 스프링 부트는 컨트롤러에서(컨트롤러가 가장 높은 우선순위 가짐) hello-static과 관련된 컨트롤러 있는지 확인 -> 컨트롤러 없다면 스프링 부트가 resour..