Spring 1週目

74968 ワード

💡 学習内容
1.Webの基本概念
2.Java基本構文
3.クラス、メソッド、メンバー
4.スプリングの働き方
5.コントローラ
6.グレー(Gradle)

開始前


Webサービス?


クライアントとサーバを区別します.クライアントに必要なデータがあるたびに、サーバに要求を発行し、応答データを受信してユーザーに表示します.
クライアント-ユーザーが表示する画面
≪サーバー|Server|ldap≫:データが必要な場所で、データが必要なときにリクエストに応答します.

Javaとは?


プログラミング言語、JavaはほとんどWeb開発サーバにのみ使用されます.
Webサーバでの使用量が非常に多い

スプリングとは?


Java言語でサーバを作成するのに必要なもの、すでに必要なものを作成して、私たちは必要なものを満たすだけです!

IntelliJとは?

  • MS Wordがドキュメントを処理する際に使用する特殊なメモ帳のように、Javaを使用してコードを記述する際に使用する特殊なメモ帳です.
  • プロジェクトの作成

    スプリングが始まる前にいつもダウンロードしてから始まるもの!

    Webの基本概念


    API


    一つの承諾は、規定の要求に従って要求を提出すれば、規定の結果に戻る.
    データをリクエストして受信し、表示します!

    Web上の動作概念


    HTML受信時:


    スケルトン対応はHTML
    CSSスケルトンのシェーディング
    動的作成ページと動的作成ページのJavaScript
    =>クライアントが要求を発行すると、3つの要求が同時に受信されます.

    データのみ受信


    データのみを受信する場合が多い.
    JSON形式でデータを受信します.

    Springが担当する部分は?


    Springは「サーバ」を担当します.
    必要に応じて直感的なコンテンツまたはデータを提供
    スプリングはJava言語に基づいて作成されました!

    Javaベース構文


    System.out.println

    package com.sparta.week01.prac;
    
    public class Prac {
    
        public static void main(String[] args) {
            System.out.println(); // 'sout' + Enter ot Tab
            System.out.println("hello, sparta!");
    
        }
    }
    

    へんすう

    package com.sparta.week01.prac;
    
    import org.aspectj.weaver.ast.Test;
    
    import java.awt.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Prac {
    
        public static void main(String[] args) {
            // 1. 화면에 나타내기
            System.out.println(); // 'sout' + Enter ot Tab
            System.out.println("hello, sparta!");
    
            // 2. 변수
            String myName = ""; // 변수 표기법 CamelCase
    
            // 숫자
            int a = 7; // 정수
            int b = 3; // 싷수
            System.out.println(a + b);
    
            float c = 3.7f;
            System.out.println(c);
    
            int n = 1000000000;
            Long d = 10000000000L;
            System.out.println(d);
    
            // 문자열
            String name = "김소영"; // 변수 표기법 CamelCase
            String name2 = "김도영";
            System.out.println(name + name2);
    
            // boolean
            int myAge = 20;
            boolean isAdult = myAge > 20;
            boolean isKid = myAge > 20;
            System.out.println(isAdult);
            System.out.println(isKid);
            System.out.println(myAge == 20); // true
            System.out.println(myAge != 20); // false
            boolean isTest = true;
    
            // 배열 List
            // 1) 순서가 중요
            // 2) 같은 자료형만 넣을 수 있음
            // 3) 넣을 때는 add, 조회할 때는 get, 제거할 때는 remove 사용
            List<String> myList = new ArrayList<>(); // List 선언
            String course1 = "Spring";
            String course2 = "React";
            myList.add(course1);
            myList.add(course2);
            System.out.println(myList);
            System.out.println(myList.get(1));
            myList.remove(1);
            System.out.println(myList);
    
            // 3. import
            // List 처럼 미리 작성된 코드를 불러오는 것
            
            // 4. 주석 Ctrl + /
    
            // 5. 정렬 Ctrl + Alt + L
    
            // Example
            String co1 = "Web";
            String co2 = "App";
            List<String> coList = new ArrayList<>();
            coList.add(co1);
            coList.add(co2);
            System.out.println(coList);
            
        }
    }
    

    方法


    任意の場所で使用できるコマンドのセットで、重複操作を減らすことができます.
    ackage com.sparta.week01.prac;
    
    public class Prac {
    
        public static void printInfo() {
            String title = "Hello";
            String name = "Soyeong";
            int weeks = 1;
            float ratings = 5.0f;
    
            System.out.println("title: " + title);
            System.out.println("name: " + tutor);
            System.out.println("weeks: " + weeks);
            System.out.println("ratings: " + ratings);
        }
    
        public static void main(String[] args) {
            printInfo();
        }
    }
    
    メソッドの構造
    public (return type) methodName(parameters) {
    	// ...
        return (return value)
    }
    
    package com.sparta.week01.prac;
    
    public class Prac {
    
        // 파라미터 X, 반환값 X
        public static void simplePrint() {
            System.out.println("파라미터도 없고, 반환값도 없어요!");
        }
    
        // 파라미터 O, 반환값 X
        public static void simpleSum(int num1, int num2) {
            System.out.println("num1 :" + num1 + ", num2: " + num2);
        }
    
        // 파라미터 X, 반환값 O
        public static int simpleReturn() {
            return 3;
        }
    
        // 파라미터 O, 반환값 O
        public static int sum(int num1, int num2) {
            return num1 + num2;
        }
        
        public static int sub(int num1, int num2) {
            return num1 - num2;
        }
    
        public static void main(String[] args) {
            simplePrint();
            simpleSum(2,3);
            System.out.println(simpleReturn());
            System.out.println(sum(2, 3));
            System.out.println(sub(5, 2));
        }
    }
    
    メソッド名はルール(英語、小文字で始まる、空白なし、大文字を区別する)と同じです.

    条件文


    複文
    package com.sparta.week01.prac;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Prac {
    
        public static void main(String[] args) {
            List<String> fruits = new ArrayList<>();
            fruits.add("감");
            fruits.add("배");
            fruits.add("감");
            fruits.add("딸기");
            fruits.add("수박");
            fruits.add("메론");
            fruits.add("수박");
            fruits.add("딸기");
            fruits.add("메론");
            fruits.add("수박");
            fruits.add("메론");
            fruits.add("수박");
            fruits.add("감");
            System.out.println(fruits);
    
            for (int i=0; i<fruits.size(); i++) {
                String fruit = fruits.get(i);
                System.out.println(fruit);
            }
    
        }
    }
    条件文
    package com.sparta.week01.prac;
    
    public class Prac {
    
        public static void main(String[] args) {
            int age = 20;
    
            if (age > 19) {
                System.out.println("Adult.");
            } else {
                System.out.println("Nope.");
            }
        }
    }

    条件文&繰り返し文

    package com.sparta.week01.prac;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Prac {
    
        public static int countFruit(String fruit, List<String> fruits) {
            int count = 0;
            for (int i = 0; i < fruits.size(); i++) {
                if (fruits.get(i).equals(fruit)) {
                    count += 1;
                }
            }
            return count;
        }
    
        public static void main(String[] args) {
            List<String> fruits = new ArrayList<>();
    
            fruits.add("감");
            fruits.add("배");
            fruits.add("감");
            fruits.add("딸기");
            fruits.add("수박");
            fruits.add("메론");
            fruits.add("수박");
            fruits.add("딸기");
            fruits.add("메론");
            fruits.add("수박");
            fruits.add("메론");
            fruits.add("수박");
            fruits.add("감");
    
            System.out.println(countFruit("수박", fruits));
    
        }
    }

    Javaクラス


    等級は何ですか。


    情報を縛れ!

    オブジェクト向けプログラミング


    -コードを現実に似た概念として表す.

    カテゴリ


    Prac.java
    package com.sparta.week01.prac;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Prac {
    
        public static void main(String[] args) {
            List<String> fruits = new ArrayList<>();
    
            Course course = new Course();
            course.title = "웹개발의 봄, Spring";
            System.out.println(course.title);
            System.out.println(course.tutor); // null
    
            Course course2 = new Course("React", "James", 20);
            System.out.println(course2.title);
            System.out.println(course2.tutor);
            System.out.println(course2.days);
        }
    }
    
    Course.java
    package com.sparta.week01.prac;
    
    public class Course {
        // title, tutor, days 가 Course 라는 맥락 아래에서 의도가 분명히 드러나죠!
        public String title;
        public String tutor;
        public int days;
        
        // 기본생성자 - Java에서 기본적으로 생성해줌. (생성자를 선언 안한 경우)
        public Course() {
            
        }
        
        // 생성자
        public Course(String title, String tutor, int days) {
            this.title = title;
            this.tutor = tutor;
            this.days = days;
        }
    }

    Getter, Setter


    private, public


    クラス内のすべての情報を簡単に変更することはできません.
    公開できるもの.
    勝手に変えてはいけないもの.
    package com.sparta.week01.prac;
    
    public class Course {
    
        private String title;
        private String tutor;
        private int days;
    
        public Course(String title, String tutor, int days) {
            this.title = title;
            this.tutor = tutor;
            this.days = days;
        }
    }
    privateとして宣言され、値=>setterのみが指定された方法で置換できます.

    Getter / Setter


    Course.java
    package com.sparta.week01.prac;
    
    public class Course {
    
        private String title;
        private String tutor;
        private int days;
        
        public Course() {
            
        }
    
        public Course(String title, String tutor, int days) {
            this.title = title;
            this.tutor = tutor;
            this.days = days;
        }
    
        // Setter
        public void  setTitle(String title) {
            this.title = title;
        }
    
        public void setTutor(String tutor) {
            this.tutor = tutor;
        }
    
        public void setDays(int days) {
            this.days = days;
        }
    
        // Getter
        public String getTitle() {
            return this.title;
        }
    
        public String getTutor() {
            return this.tutor;
        }
    
        public int getDays() {
            return this.days;
        }
    
    }
    Prac.java
    package com.sparta.week01.prac;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Prac {
    
        public static void main(String[] args) {
            List<String> fruits = new ArrayList<>();
    
            Course course = new Course();
            course.setTitle("Spring");
            course.setTutor("Jane");
            course.setDays(10);
            System.out.println(course.getTitle());
            System.out.println(course.getTutor());
            System.out.println(course.getDays());
    
            Course course2 = new Course("React", "James", 20);
            System.out.println(course2.getTitle());
            System.out.println(course2.getTutor());
            System.out.println(course2.getDays());
        }
    }
    Tutor.java
    package com.sparta.week01.prac;
    
    public class Tutor {
        private String name;
        private String bio;
    	
        // 기본 생성자
        public Tutor() {
    
        }
    
    	// 생성자
        public Tutor(String name, String bio) {
            this.name = name;
            this.bio = bio;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setBio(String bio) {
            this.bio = bio;
        }
    
        public String getName() {
            return this.name;
        }
    
        public String getBio() {
            return this.bio;
        }
    }

    ブラウザで表示


    データに応答するにはRestControlを使用する必要があります.

    Rest


    サーバーの応答がJSON形式であることを示します.
    HTML、CSSなどとやり取りする場合はRestを貼り付けません.

    Controller


    話しかけられたら、答えます.
    クライアント要求を受信するコードをコントローラと呼ぶ.
    =>JSONのみを返すことをRESTControllerといいます.
    JSON形式で応答する自動応答器!=>REST Controller

    Rest Controlの作成

    package com.sparta.week01.controller位置
    package com.sparta.week01.controller;
    
    import com.sparta.week01.prac.Course;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class CourseController {
    
        @GetMapping("/courses")
        public Course getCourses() {
            Course course = new Course();
            course.setTitle("Spring");
            course.setDays(35);
            course.setTutor("YoungKim");
            return course;
        }
    }
    
    GET方式でブラウザから情報を要求する

    Gradle

  • Javascript - NPM
  • Python - pip
  • Java - mavenCentral, jcenter
  • •ダウンロードとアプリケーションのシンプル化
    https://mvnrepository.com/
    build.グラデーションで作成
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
        implementation 'org.springframework.boot:spring-boot-starter-web'
        compileOnly 'org.projectlombok:lombok'
        runtimeOnly 'com.h2database:h2'
        runtimeOnly 'mysql:mysql-connector-java'
        annotationProcessor 'org.projectlombok:lombok'
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
        // https://mvnrepository.com/artifact/org.json/json
        implementation group: 'org.json', name: 'json', version: '20160810'
    }
  • ライブラリのインポート時
  • 導入時