ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.