-
TIL 21일차(11.11)TIL(Today I Learned) 2021. 11. 11. 15:17
정적 컨텐츠 실행 순서
-> 처음 클라이언트에 요청이 오게되면 내장 톰켓을 지나간다
-> 그리고, 컨트롤러에 요청이 있는지 확인한다(있다면 출력하고 정적 컨텐츠가 있다면 무시함.)@Controller public class HomeController{ @GetMapping("/") public String home() { return "home"; } }
-> 컨트롤러에 아무런 요청이 없다면 정적
static
.html을 출력한다.<!DOCTYPE HTML> <html> <head> <title>Hello</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> Hello <a href="/hello">hello</a> </body> </html>
MVC
//createMemberForm.html file <input type="text" id="name" name="name" placeholder="이름을 입력하세요">
-> name="name"은 key역할
//Memcontroller.java file @PostMapping("/members/new") public String create(MemberForm form){ Member member = new Member(); member.setName(form.getName()); memberService.join(member); return "redirect:/"; }
-> client에서 전달받은 name key 값은 PostMapping으로 넘어온다.
-> 'post'는 주로 form에 값을 넣어서 서버에 전달할 때 사용.(리소스 생성)
-> 'get'은 주로 조회할 때 사용(해당 리소스 조회, 해당 문서에 대한 자세한 정보 조회)//MemberForm.java public class MemberForm { private String name; public String getName(){ return name; } public void setName(String name){ this.name = name; } }
-> MemberController.java에서
public String create(MemberForm form){
-> 선언으로 인해 MemberForm에 입력된 setName()을 통해 name값이 저장된다.
-> getName()을 통해 name 값을 꺼낼 수 있다.@GetMapping("/members") public String list(Model model){ List<Member> members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; }
-> model.addAttribute("members", members); //members 값들은 저장하고 반환
post/redirect/get
-> 웹에서 어떤 값을 post했을 때, redirect를 통해 get url로 이동시키지 않으면
-> 새로고침했을 때, 중복으로 값이 저장되는 상황이 발생할 수 있다.(쇼핑몰에서 중복구매 발생 가능)
-> 때문에 post/redirect/get 방식으로 이러한 문제를 해결한다.
-> (redirect의 필요성)//memberList.html <tr th:each="member : ${members}">
-> members list에 대한 루프를 돈다.(for each와 맥락이 비슷.)
thead, tbody
-> thead와 tbody는 데이터를 그룹으로 묶어주는것에 용이하다.
-> 그룹화의 장점은 css 및 jQuery로 이벤트를 줄 때 구분하기 편하다.
-> 제어도 편하다.
-> 의미 구조를 만들어준다조건.
-> table 태그 자식이어야한다.
-> tbody 태그는 thead 자식이어야한다.
-> 하나의 tr태그와 td 태그가 있어야 한다.<table> <thead> <tr> <th>#</th> <th>이름</th> </tr> </thead> <tbody> <tr th:each="member : ${members}"> <td th:text="${member.id}"></td> <td th:text="${member.name}"></td> </tr> </tbody> </table>
table, td, tr 태그
-> td태그 : table data의 약자로 셀을 만드는 역할
-> tr태그 : table row의 약자로 가로줄을 만드는 역할cmd 명령어
dir/b -> file list 출력.
프로그램 실행 종료 -> ctrl + c
폴더 만들기 -> mkdir +foldername
h2 database
-> DB 공부 및 테스트용으로 적합한 프로그램
-> 기본적으로 h2를 실행하게되면, 열리는 웹사이트는 어드민 세션을 가지고 열리기 때문에, localhost:키값으로 변경해줘야힘
-> 윈도우는 h2.bat을 실행해야함
-> shift +enter
로 실행
-> 자바에서 'LONG'은 DB에서 'BIGINT'타입drop table if exists member CASCADE; create table member ( id bigint generated by default as identity, name varchar(255), primary key (id) );
-> generated by default as identify: 값을 세팅하지 않았을 때, DB가 자동으로 id 값을 세팅해줌.
insert into member(name) values('kimsungsu')
-> 형식 insert into 테이블명(
column_name
) values(anything
)'TIL(Today I Learned)' 카테고리의 다른 글
TIL(23일차)(2021.11.13) (0) 2021.11.13 TIL(22일차)(2021.11.12) (0) 2021.11.12 TIL 20일차 (2021.11.10) (0) 2021.11.10 TIL 19일차(2021.11.09), 단축키 TIP 모음, intellij create git (0) 2021.11.09 TIL 18일차(2021.11.8) (0) 2021.11.08