스프링 347

7강 회원관리 예제

순서 비즈니스 요구사항 저일 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트케이스 작성 회원 서비스 개발 회원 서비스 테스트 비즈니스 요구사항. 데이터: 회원ID, 이름 기능: 회원 등록,조회 ※현재 DB를 뭘 쓸지 선정되지 않음(가상 시나리오) 개발부터 하는 상황 컨트롤러:웹MVC 컨트롤러 서비스: 핵심 비즈니스 로직 구현, 회원 중복 방지 로직 등, 도메인 객체를 가지고 핵심 비즈니스 로직 구현. 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등 데이터베이스에 저장되고 관리됨. 리포지토리: DB에 접근, 도메인 객체를 DB에 저장하고 관리. 도메인 객체란 여러 데이터와 동작을 갖고 있는.. 그러니까 만약 사용자를 나타내는 도메인이 있을 경우 이름, 이메일, 나이와 같은 데이터와 가입..

6강 API 방식으로 데이터 주기

앞서 정적 MVC API 방식이 있다고 했다. 정적은 html에 손 안댄거고, MVC는 html을 좀 바꿔서 웹브라우저에 주는거고, API는 특별한 형식의 데이터를 주는 방법이다. 그래서 사실 이거는 클라이언트와의 소통보다는 서버끼리의 소통이 알맞다. @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name){ return "hello " + name; } GetMapping은 누누히 설명 했고, @ResponseBody 이 부분이 좀 특별하다. 잘은 모르겠지만, 아마 나중에 배울건데 http에는 header부와 body부가 있는데, 그 body에 직접 넣어주는 거라고 한다. re..

5강 템플릿 엔진

G:\spring\hello-spring\src\main\resources\templates\hello-template.html 에 넣는 html로써, 템플릿이란 템플릿 프로세서를 사용하여 웹 템플릿을 결합하여 완성된 웹페이지. 라고 하는데 서버가 뭔가 html을 뭔가 바꾸어서 보내준다고 하니 spring에서 서버와 연동해서 뭔가 html을 바꾼다는 그런 뜻인거 같다. hello! empty hello! empty 여기 이 부분에서 hello! empty가 name을 받을 경우 'hello ' + ${name}" 로 대체된다. 일단, 기본적으로 Spring은 MVC 방식을 씀. @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") S..

4. 웹개발 기초

종류 웹개발은 크게 3가지 방식 정적 컨텐츠 : 파일 그대로 전달 MVC, 템플릿 엔진 (가장 많이 함) : 서버에서 html을 좀 변형해서 보내주는 형식 API : 특정 데이터 포맷으로 전달 정적 기본적으로 스프링에서 제공 G:\spring\hello-spring\src\main\resources\static 똑같이 localhost:8080/index.html 근데 이게 순서가 있는데, 먼저 2장인가에서 했던 컨트롤러에서 찾아보고, 없으면 static 찾아보는거임 index.html 이라도 Controller에서 먼저 찾고 그제야 없으면 이거 찾는거임.

3. 빌드

그냥 spring 프로젝트 경로 cmd 들어가서 mac : gradlew windows : gradlew.bat gradlew build gradlew clean gradlew clean build 빌드 후 실행시키는 방법 정상적으로 빌드가 되었다면, spring 폴더의 build/libs/hello-spring-0.0.1-SNAPSHOT.jar 라는 파일이 생긴다. java -jar hello-spring-0.0.1-SNAPSHOT.jar 하면 실행된다. 서버 배포 시 hello-spring-0.0.1-SNAPSHOT.jar 복사해서 서버에 넣어주고, java -jar hello-spring-0.0.1-SNAPSHOT.jar 해서 서버에서 실행하면 서버에서도 spring이 동작 하게된다.

2장 thymeleaf

@Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data", "hello!!"); return "hello"; } } @GetMapping("hello") 가 hello라는 명령이 들어올 경우, localhost:8080/hello 저 아래 함수를 실행. Model이란 것으로 다루고, return "hello"인데, hello.html을 찾는거임. 거기에 model까지 같이 넘겨주는거임. ( resources:templates/ +{ViewName 안녕하세요. 손님 th가 thymeleaf라는 뜻이고, data (키)에 넘긴 hello!! 안녕..

1장. 환경설정

java, 인텔리제이 설치 start.spring.io gradle, java, spring boot 버전 맞추기 spring web, thymeleaf 라이브러리 추가. 인텔리제이로 폴더 염. java sdk 버전 등등은 알아서.. setting에서 gradle 들어간다음, build and run using run tests using 인텔리제이로 바꿈 이러면 gradle을 통하지 않고 빠르게 빌드되고 실행 됨. 아마 나중에 직접 서비스 할땐 바꾸지 않을까.. 무슨 println? 이런거 안하고 log한다는데, 아마 아무래도 웹서버다 보니 그런 걸 log로 기록으로 남겨서 추적하는 용도로 쓰려는 것 일듯.