[javaStudy]7.22

김시원·2022년 7월 22일
0

JavaStudy

목록 보기
1/4

[웹개발의 봄 Spring 1주차]

웹서비스를 할 건데, JAVA라는 언어로 Spring을 만들어 볼 거다.

💡 "해봤다"는 경험을 손에 남기자, 모든 지식을 완벽히 머리에 남길 필요가 없다!

(X) 상속, 추상화, 인터페이스에 대해 달달 암기하고, 세세한 부분까지 신경쓴다.
(O) 꼭 필요한 클래스, 메소드의 핵심만 기억한다. 뭘 모르는지만 기억해둔다.

(X) 스프링/자바를 다루다가 아주 조금이라도 모르는게 나오면 복잡한 개념을 파고든다.
(O) 만드는 재미, 오류를 해결하는 재미에 집중하고, 나중에 공백을 채워나간다.


<인텔리제이>
Group : 우리가 쓸 주소를 거꾸로 쓴다.
Artifact : 프로젝트 이름
src : source의 약자.


API : 정해진대로 요구를 하면 그에 따른 응답을 돌려주는 것.
Html : 뼈대.


💡 스프링은 "서버"를 담당합니다. 요청에 따라 눈에 보이는 것들 또는 데이터를 제공해주는 것이지요.
그리고 스프링은 자바 언어 바탕으로 만드는 것

System.out.println() : sout + tab키(enter키)

String name = "김시원" //(큰따옴표)

boolean = true, false (소문자)

⭐배열 선언⭐

public class Prac {
	public static void main(String[] args) {
		List<String> myList = new ArrayList<>();
        String course1 = "웹개발의 봄 Spring";
        String course2 = "프론트엔드의 꽃 React";
        myList.add(course1);
        myList.add(course2);
        System.out.println(myList);
        System.out.println(myList.get(1)); //인덱스값. 배열 꺼내주기=get
        myList.remove(1);
        System.out.println(myList);

import : 미리 작성된 코드를 불러오는 것 (Alt+Enter)
정렬 : ctrl + alt + L

메소드 : 반복적인 행동을 줄여서 어디든 갖다쓸 수 있는 명령 모음
return 값 없어도 됨.

public 반환타입 메소드명(재료){
	명령 모음
    return 결과값;
}

반환타입 : void(return값 없을때) : 아무것도 안돌려준다. 비었다.
return값 있을 때는 반환형 (ex)int, String
파라미터(재료) : 자료형(int) 써줘야함.

메소드를 main함수에서 실행하려면 메소드의 public 다음에 static 이라는 걸 써줘야 한다.

// public, static void 에 대해서는 곧 배웁니다! 우선은 넘어갈게요.
public static void printInfo() {
	String title = "웹개발의 봄 Spring";
	String tutor = "김시원";
	int weeks = 5;
	float ratings = 5.0f;
	
	System.out.println("제목: " + title);
	System.out.println("튜터: " + tutor);
	System.out.println("주차: " + weeks);
	System.out.println("별점: " + ratings);
}

public static void main(String[] args) {
	printInfo();

👉 메소드명은 변수명과 규칙(영어사용, 소문자시작, 공백없음, 대문자구분)이 같습니다.

자바 클래스

public class Course {
		// title, tutor, days 가 Course 라는 맥락 아래에서 의도가 분명히 드러나죠!
    public String title;
    public String tutor;
    public int days;
    
    //기본 생성자
    public Course() {
    
    }
    
    // 생성자
    public Course(String title, String tutor, int days) {
    
    }
}

클래스 이름은 항상 대문자. 클래스는 폴더에서 new class 만들어주는거야. 아예 다른창. 메소드는 그냥 함수같은것.
클래스 이름과 파일명은 항상 일치해야한다.

기본생성자는 자동으로 만들어진다. 하지만 생성자가 하나라도 더 만들어지면 기본생성자 안적어주면 오류남.
생성자를 추가로 만든다면 기본생성자를 같이 넣어줘야한다.

public static void main(String[] args) {

      Course course = new Course();
      course.title = "웹개발의 봄, Spring";
      System.out.println(course.title);
      System.out.println(course.tutor);
      
      Course course2 = new Course();
      course2.title = "웹개발의 봄, Spring";
      System.out.println(course2.title);
      System.out.println(course2.tutor);
}

main함수 안에서.
클래스명 변수명 = new 클래스명();

실제 빵에 새겨주는거. 생성자 이용

public class Course {
    public String title;
    public String tutor;
    public int days;
    
    //기본 생성자
    public Course() {
    
    }
    
    // 생성자
    public Course(String title, String tutor, int days) {
    	this.title = title;
        this.tutor = tutor;
        this.days = days;
        //this를 꼭 써줘야해. 그래야 바로 입력될수 있음.
    }
}

public static void main(String[] args) {
	String title = "웹개발의 꽃, Spring";
    String tutor = "김시원";
    int days = 35;
    Course course = new Course(title, tutor, days); //생성할때 이렇게 변수를 넣어주고 싶은것. 그래서 만들면 바로 입력되게.
    //이럴려면 클래스의 생성자 안에 뭔가 해줘야한다.

<public, private>

public은 쉽게 바꿀 수 있음
private는 쉽게 바꿀 수 없음. setter를 이용해서 바꿔줘야함. 메소드를 통해 바꿀거야. 메소드는 밖에서 호출이 되어야 하는 거니까

public 리턴타입 메소드명(재료) {
    	명령
    } //setter는 딱히 돌려주는거 없어. 그래서 void

private로 선언된 멤버변수를 바꿀 수 있는 방법 : Setter

    public void setTitle(String title) {
    	this.title = title;
    }// Setter는 클래스 안에 선언해주면 됨.
public static void main(String[] args) {
	String title = "웹개발의 꽃, Spring";
    String tutor = "김시원";
    int days = 35;
    Course course = new Course();
    course.setTitle(title); //setTitle 메소드 안만들어주면 오류생김.
    course.setTutor(tutor);
    System.out.println(course.getTitle); 이것도 private 변수니까 오류생김. Getter를 또 만들어줘야해. 조회할때도 private은 뭔가를 만들어줘야한다.
}

public 반환타입 메소드명(재료) {
	명령
    return 반환값; //Getter는 Setter와 달리 반환값이 존재.
    			  // 가져오는거니까 재료는 필요없음.
}

public String getTitle() {
	return this.title; //this.title기억하자.
}

❓ 1) Tutor 클래스를 만들고, 이름(name)과, 경력(bio) 멤버 변수를 추가하세요. 2) 그리고 각 변수를 private 으로 선언하고, Getter와 Setter 를 만들어보세요. 3) 마지막으로, 기본 생성자와, name/bio 입력받는 생성자 두 개를 만들어보세요.
public class Tutor {
    private String name;
    private String bio;

    public Tutor() {
        //기본 생성자. 생성자는 클래스 이름하고 완전 똑같이 만들어줘야 함.
    }

    public Tutor(String name, String bio){
        this.name = name;
        this.bio = bio;
    }

    //Getter
    public String getName() {
        return this.name;
    }
    public String getBio() {
        return this.bio;
    }
    
    //Setter
    public void setName(String name){
        this.name = name;
    }
    public void setBio(String bio) {
        this.bio = bio;
    }
}

못생긴 데이터 : JSON

💡 데이터로 응답하려면, RestController 를 사용해야 합니다. - Rest ? - 서버의 응답이 JSON 형식임을 나타냅니다. - HTML, CSS 등을 주고받을 때는 Rest 를 붙이지 않습니다.
  • Conroller ? 👉 자동 응답기! 누군가 말을 걸면 응답하는 녀석이에요. - 클라이언트의 요청(Request)을 전달받는 코드를 Controller 라고 부릅니다. → JSON 만을 돌려주는 것은 RestController 라고 부릅니다.

RestController : JSON으로 응답하는 자동응답기

package com.sparta.week01.controller;

import org.springframework.web.bind.annotation.RestController;
// 이건 @RestController 입력하면 자동으로 생김.

@RestController
public class CourseController {
}

이 @ 붙인거는 전에 Tutor 이거랑 완전 다른 빵틀. 이건 응답하는데 최적화된 빵틀.


브라우저에서 naver.com 치면 네이버 주소 가져옴.
이렇게 클라이언트가 서버의 주소창에 쳐서 요청을 하는 것을 GET방식. 요청을 하는 방식이 되게 다양한데 브라우저에 치는것을 GET 방식으로 요청한다고 함.

package com.sparta.week01.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CourseController {

    @RestController
    public class CourseController {

        @GetMapping("/courses") //localhost 앞에 붙는거는 spring이 자동으로 잡아주는거고 그 뒤에 
        // /courses를 붙여서 브라우저에서 쳐서 요청이 오면 밑에처럼 응답해줄거야 라는 메소드를 만들어주는것.
        public Course getCourses() {
            Course course = new Course();
            course.setTitle("웹개발의 봄 스프링");
            course.setDays(35);
            course.setTutor("남병관");
            return course;

            //메소드 이름 : getCourses
            //return타입은 Course
            //course 변수를 반환한 값을 JSON으로 변환해서 브라우저한테 돌려주는 것을 spring이 다 한다. 그니까 우리는 메소드만 작성하면 됨.
        }
    }
}

http://www.bloter.net/archives/253447

Gradle(그레이들) : 다른사람이 쓴 코드 가져오는거 도와주는것.

**그레이들 설치 안됨.. json 복붙했는데 json안뜸. ㅜㅜ

profile
IT 개발자 시원

0개의 댓글