폼 데이터 전달 -> DTO를 엔티티로 변환 -> DB 갱신 -> 리다이렉트
HTTP메서드
POST - 데이터 생성 요청
GET - 데이터 조회 요청
PATCH(PUT) - 데이터 수정 요청
DELETE - 데이터 삭제 요청
<form>태그 GET과 POST메서드만 지원
action속성 - 폼 데이터를 어디로 보낼 지 url을 지정
method속성 - 어떻게 보낼지 방식을 지정
폼 데이터 전달 -> DTO를 엔티티로 변환 -> DB 갱신 -> 리다이렉트
HTTP메서드
POST - 데이터 생성 요청
GET - 데이터 조회 요청
PATCH(PUT) - 데이터 수정 요청
DELETE - 데이터 삭제 요청
<form>태그 GET과 POST메서드만 지원
action속성 - 폼 데이터를 어디로 보낼 지 url을 지정
method속성 - 어떻게 보낼지 방식을 지정
6장 게시판 내 페이지 이동하기
<a>태그
특정 페이지로 이동하는 HTML태그, 클릭시 href속성에 적힌 URL 주소로 요청을 보냄
<a href="URL주소 링크">링크를 걸 대상</a>
https://ofcourse.kr/html-course/a-%ED%83%9C%EA%B7%B8
HTML <a> 태그 - ofcourse
개요 태그는 하이퍼링크를 걸어주는 태그입니다. 속성 href: 클릭시 이동 할 링크 target: 링크를 여는 방법 _self: 현재 페이지 (기본값) _blank: 새 탭 _parent: 부모 페이지로, iframe 등이 사용된 환경에
ofcourse.kr
redirect
컨트롤러의 특정 메서드 수행을 종료한 후 계속해서 처리할 다음 요청 주소를 지시하는 것.
분리된 기능을 연속적인 하나의 흐름으로 연결할 수 있습니다.
return "redirect:URL주소";
자바를 더 공부하고 싶었는데 마침 학습단과 함께 운영한다는 걸 알고 교재를 구매하였다.
자바로 백엔드만 해봤지 프론트엔드는 다뤄본 적이 없어서 이 참에 한 번 해보자라고 마음먹었다.
이 책에서 주로 다루는 내용이 프론트엔드가 아니기 때문에 bootstrap사이트에서 가져오는 방식을 하고 있다.
이게 생각보다 편한게 사이트에서 완성된 ui를 보여주고 있어 전체적인 틀을 가져와서 필요한 부분만을 수정하면 되는 부분이 편했다.
책에서는 intellij를 사용하는데 이 툴도 처음 써봐서 신선했다. 의외로 편한부분이 많아서 eclipse보다 자주 사용할 것 같다.
내용도 자세하게 나와있어서 천천히 따라하면서 진행하면 결과가 잘 나와서 재미있다.
실습하고 혼자 문제를 풀 수 있게 단원 마무리에 나와있는데 이거 푸는 게 실습보다 오래 걸렸다.
따라할 때 머리에 힘 주고 하는 걸로!
이번 달 목표는 이 책을 완독하는 걸로 정했다.
데이터 조회 과정
1. 사용자가 데이터를 조회해 달라고 웹 페이지에서 URL 요청을 보냅니다.
2. 서버의 컨트롤러가 요청을 받아 해당 URL에서 찾으려는 데이터 정보를 리파지터리에 전달합니다.
3. 리파지터리는 정보를 가지고 DB에 데이터 조회를 요청합니다.
4. DB는 해당 데이터를 찾아 이를 엔티티로 변환합니다.
5. 변환된 엔티티는 모델을 통해 뷰 템플릿으로 전달됩니다.
6. 최종적으로 결과 뷰 페이지가 완성돼 사용자의 화면에 출력됩니다
@PathVariable
url요청으로 들어온 전달값을 컨트롤러의 매개변수로 가져오는 어노테이션
findById()
JPA의 CrudRepository가 제공하는 메서드,
특정 엔티티의 id값을 기준으로 데이터를 찾아 Optional 타입으로 반환
Optional관련해서 공부할 때 꽤나 머리 아팠었는데 다시 제대로 봐야겠다.
finaAll()
JPA의 CrudRepository가 제공하는 메서드,
특정 엔티티를 모두 가져와 Iterator타입으로 반환
{{#articles}}{{/articles}}
Controller.java에서 attributeName을 사용함.
뷰 페이지에서 모델에 등록된 article의 사용 범위를 지정할 때 사용하는 머스테치 문법
범위 내에서 article 데이터를 사용할 수 있습니다.
등록된 데이터가 복수이면 해당 범위 코드가 반복됩니다.
롬복
코드를 간소화해주는 라이브러리
이거
@AllArgsConstructor - 생성자 추가
@ToString - ToString()추가
@Slf4j - 로그기록 남기기
println()은 출력용이라 기록이 남지 않음. 따라서 로그 기록을 남겨야 함.
이게 좀 이상한게 log에 빨간줄떠서 실행이 안되야 하는데 정상적으로 작동한다.
알 수 없는 intellij의 세계
컨트롤러 : 사용자의 요청을 처리한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 한다.
@Controller
Controller의 역할을 수행한다고 명시
@Autowired
스프링부트에서 제공하는 어노테이션, 객체 생성해서 가져와 줌
Annotation은 주석이라는 의미, 특별한 의미, 기능을 수행하도록 하는 기술
프로그램에게 추가적인 정보를 제공해주는 메타데이터.
어노테이션을 잘 정리해둔 블로그
[Spring Boot] 어노테이션 정리
SpringBoot란? Spring에서는 이러한 설정들을 자동화해주는 SpringBoot라는 프로젝트를 만들었다. Spring에서 SpringBoot라는 프레임워크를 내놓기 시작하면서 SpringBoot의 AutoConfigure(자동 구성) 기능을 통해
sddev.tistory.com
@GetMapping("/login")
서버의 리소르를 조회
@PostMapping("/)
서버에 리소스를 등록(저장)
Get/Post 알기
Get
url에 데이터를 포함시켜 요청
데이터를 헤더에 포함하여 전송
url에 데이터가 노출되어 보안에 취약
캐싱할 수 있음.
조회할 때만 사용
Post
url에 데이터를 노출하지 않고 요청
데이터를 바디에 포함
url에 데이터가 노출되지 않아 Get 방식보다 보안이 높음
캐싱할 수 없음.
노출되면 안되는 데이터를 저장할 때 사용
DTO (Data Transfer Object)
프로세스 간에 데이터를 던달하는 용도의 객체,
비즈니스 로직을 포함하지 않는 데이터를 전달하기 위한 단순한 객체.
컨트롤러에서 폼 데이터를 받을 때 DTO에 담는다.
저는 Data 클래스라고 생각하고 사용중입니다
변수, 생성자,toString()을 기본으로 추가
자바 객체를 DB가 이해할 수 있게 만든 것으로, 이를 기반으로 테이블이 만들어집니다.
@Entity
테이블과 링크될 클래스
@Id
해당 테이블의 PK(Primary Key, 기본키) 필드
@GeneratedValue
PK의 생성 규칙 표시
@Column
테이블의 칼럼임을 표시
필수x, 기본값 외에 변경이 필요한 옵션이 존재할 경우 사용
엔티티가 DB속 테이블에 저장 및 관리될 수 있게 하는 인터페이스
extends CRUDRepository<Member, Long>
CRUD : 테이블 생성, 조회, 수정, 삭제
뷰 템플릿을 이용해서 시작페이지와 마무리페이지를 구성했다.
부트스트랩사이트에 코드가 잘 나와있어서 구성하기 편하다.
네비게이션 바는 사이트에서 제공하는 걸로 가져왔고
cloudStudying 앞에 카피라이트 문자를 추가해야되는데 못 찾아서 보류~
웹은 바로바로 반영되서 생각보다 재밌었다.
웹 디자인 공부도 시작해볼까?
1장 완료!
😎한 일
iintellj 다운받기
jdk17 다운받기
웹에 Hello world출력해보기
localhost : 내 컴퓨터 127.0.0.1
스프링 부트는 8080에서 기본 실행
스프링부트가 서버역할
웹이 클라이언트 역할로 요청과 응답을 주고 받아 사이트가 작동한다.