

톰캣서버가 > 카탈리나 베이스 관리
모듈이름은 바꾸면 안되요 (자동)
Conntext path 는 배치가 어디있는지 root 찾아갑니다.


classes 폴더로 들어갑니다.
build > classes > controller 등등
(원래는) WEB-INF > 들어있어요

안에 있을필요가 없어서 밖으로 빼서 관리합니다.

클라이언트가 서버에게 요청 방식
몇 번 데이터 등록(update), 삭제, 해주세요
오픈API는 5개로 만듭니다.
Get, Post(Insert) , Put(Update느낌), Delete
Get : All or 1



책등록 누르면 url 날라가는
Get방식입니다.
스프링은 유연성
implement 안씁니다. 유연성관련입니다.
POJO 메서드 이름 여러분 마음입니다.

컨텐츠 딜리버리네트워크
'배달'
웬만하면 부트스트랩 css 거는거 추천
j쿼리 안쓰는 추세입니다. JS로 쓰는 추세 바닐라JS
안쓰면 더 빠릅니다.
https://www.w3schools.com/

Bootstrap 4 Stacked Form
아래 복붙


for email과 id email 이 시각장애인도 쓸 수 있게 하는 기능
Email글자누르면 바로 밑으로 이동

파라미터로 넘어가는것 name=""

패킷
묶음(헤더 / 바디)
httpRequest


Update
Insert 2개가 나옵니다.
이름같고 오버로딩

title 등 book에 받아서 (파라메터 수집) 날려줘야함

id 가 파라메터
bookView 는 id 파라메터를 받아야함

<tbody>
<!-- 게시글 내용 출력 -->
<c:forEach varStatus="i" var="vo" items="${bookList}">
<tr>
<td><c:out value="${i.count}" /></td>
<td><a href="/s01/bookView?id=${vo.id}"><c:out value="${vo.title}" /></td>
<td><c:out value="${vo.price}" /></td>
<td><c:out value="${vo.author}" /></td>
<td><c:out value="${vo.page}" /></td>
</tr>
</c:forEach>
</tbody>

get 방식 이라 보입니다.
공백이 들어가면 안됩니다. 인식해버립니다.
오픈api db줄수 있어요 key 요구 등록 json 받아서 json 빼서 뷰로 만들수 있어요
rest , react 로 뷰만들고 ajax로 json 가져와서 react view 만들어요
서버는 aws나 클라우드로 분산 도커 배포
그 다음 빅데이터, 인공지능
분리개발하면 best입니다.

받을때 PathVariable
@GetMapping("/bookView/{id}") // ?id= 3 > 3 만 보내면
public String bookView(@PathVariable Long id){
2개면
@GetMapping("/bookView/{id}/{aa}") // ?id= 3 > 3 만 보내면
public String bookView(@PathVariable Long id, @PathVariable){
여러개는 잘 없어요
//@Mapper
@Repository
public interface BookRepository {
// 책 전체 목록 가져오기
public List findAll(); // SQL~ no usages
public void save(Book book);
public void findById(Long id);
}
findById 라고 자주 쓰고
By가 where절
메서드 이름만 보고 알아본다.
<select id="findById" parameterType="Long"
resultType="kr.smhrd.entity.Book">
select * from book where id=#{id}
</select>
parameterType="Long"은
하단 사진의 @PathVariable Long id 의 Long 타입이라는거고
select * from book where id=#{id}
id 값 받고
resultType="kr.smhrd.entity.Book">
내보냅니다.


지금은 아무것도 없지만 나중에 서비스가 커지면 여기에 추가로직을 구성합니다

바로 view로 가는게 아니라 컨트롤러 갔다가 가는거.
@GetMapping("/bookView/{id}") // ?id= 3 > 3 만 보내면
public String bookView(@PathVariable Long id, Model model){
Book book = bookService.view(id);
model.addAttribute("book", book);
return "bookView";
"book", book
문자열 번지가 뒤에 book에 저장되어 있다.