Burninghering's Blog
article thumbnail
Published 2021. 11. 25. 22:37
211125TIL_자바 완전 기초! Today I Learned

<웹의 기본 개념>

- API : 은행 창구와 같은, 하나의 "약속". 정해진대로 요구 -> 정해진 결과물을 돌려줌

 

1) 웹 동작 개념(HTML을 받는 경우) : 웹페이지는 모두 서버에서 미리 준비해두었던 것을 "받아서" -> "그려주는" 것

 

- 브라우저가 하는 일

1. 요청 보내기(서버가 만들어 놓은 "API"라는 창구에 미리 정해진 약속대로 요청을 보내는 것)

2. 받은 HTML 그려주기

2) 웹 동작 개념 (데이터만 받는 경우) : 

HTML도 줄글로 쓰면 데이터!

하지만, 공연 예매시 계속 페이지가 refresh되면 곤란하기 때문에 데이터만 받아서 받아 끼우기

 

- 데이터만 내려올 경우 : JSON 형식

여기서 "스프링"은 "서버"를 담당합니다!

스프링(서버)가 요청에 따라 눈에 보이는 것들/데이터를 제공


  • 스프링에서 주석 달기 :

  • 스프링에서 정렬 하기 : 

 

❓ course1 이라는 이름의 변수에 값을 "웹개발 종합반", course2 라는 이름의 변수에 값을 "앱개발 종합반", 넣고, course1 과 course2 를 courseList 라는 배열에 순서대로 넣으려면?

// 선언
String course1 = "웹개발 종합반";
String course2 = "앱개발 종합반";
List<String> courseList = new ArrayList<>();

// 삽입
courseList.add(course1);
courseList.add(course2);

// 확인
System.out.println(courseList);

  • 메소드 구조 
public (반환타입) 메소드명(파라미터) {
	// 명령 내용
	return (반환값)
}

메소드명, 변수명 규칙 : 영어사용, 소문자시작, 공백없음, 대문자구분

 

  • 컴퓨터에게 명령하기
  1. 재료 = 파라미터 (없을 수도 있음)
  2. 명령 = 실행코드
  3. 결과 = 반환값 (없을 수도 있음)
// 파라미터 X, 반환값 X
public void simplePrint() {
	System.out.println("파라미터도 없고, 반환값도 없어요!");
}

// 파라미터 O, 반환값 X
public void simpleSum(int num1, int num2) {
	System.out.println("num1 :" + num1 + ", num2: " + num2);
}

// 파라미터 X, 반환값 O
public int simpleReturn() {
	return 3;
}

// 파라미터 O, 반환값 O
public 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) {
	int result = sub(1, 2);
	System.out.println(result);
}

  • 메소드 반복문
for (int i=0; i<13; i++) {
    String fruit = fruits.get(i);
    System.out.println(fruit);
}

for (시작조건; 계속하는조건; 더하기) {
	명령
}

연습퀴즈 : ❓ 주어진 과일의 개수를 세고 그 수를 반환하는 메소드

public static int countFruit(String given) {
	List<String> fruits = new ArrayList<>();
	fruits.add("수박");
	fruits.add("메론");
	fruits.add("수박");
	fruits.add("딸기");
	
	int count = 0;
	for (int i=0; i<fruits.size(); i++) {
		String fruit = fruits.get(i);
		if (given == fruit) {
			count += 1;
		}
	}
	return count;
}

  • 클래스 : 정보를 묶는 것
  • 객체지향 프로그래밍 : 프로그래밍을 현실 세계에 빗대어 체계적으로 하는 것, 현실과 비슷한 개념(객체)을 나타내기 위한 자바의 도구를 "클래스"
  • 클래스 내 정보를 멤버 변수

변수 course 는 실제 빵, Course 클래스는 빵틀

public class Course {
		// title, tutor, days 가 Course 라는 맥락 아래에서 의도가 분명히 드러나죠!
    public String title;
    public String tutor;
    public int days;
}
Course course = new Course();
course.title = "웹개발의 봄, Spring";
System.out.println(course.title);
System.out.println(course.tutor);

 

  • 생성자

빵틀(Course)과 빵(course)의 관계 

우리가 바꾸고 싶은 건 빵틀의 값이 아니라 실제 빵의 값

this 라고 표시 -> 빵틀 전체의 값을 바꾸는게 아니라 빵 하나의 값만 바꾸는 것


정보를 가져오는 메소드를 Getter

정보를 바꾸는 메소드를 Setter

// Getter
public String getTitle() {
    return this.title;
}

// Setter
public void setTitle(String title) {
    this.title = title;
}


Course course = new Course();

System.out.println(course.getTitle());

course.setTitle("웹개발의 봄 스프링");

System.out.println(course.getTitle());

연습퀴즈 :

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
  • Rest : 서버의 응답이 JSON 형식임을 나타내며, HTML, CSS 등을 주고받을 때는 Rest를 붙이지 않음
  • Conroller : 누군가 말을 걸면 응답하는 자동응답기~

클라이언트의 요청(Request)을 전달받는 코드Controller

JSON 만을 돌려주는 것RestController

 

src > main > com.sparta.week01 > controller 패키지 > CourseController.java 

@RestController
public class CourseController {

    @GetMapping("/courses")
    public Course getCourses() {
        Course course = new Course();
        course.setTitle("웹개발의 봄 스프링");
        return course;
    }
}

@GetMapping

브라우저에서 주소를 치는 행위를 GET 방식으로 정보를 요청한다고 함.

스프링 주소(http://localhost:8080) 뒤의 주소가 /courses일 경우, getCourse 메소드를 실행


서버 : 클라이언트가 요청하는 것을 내어주는 것

(아래 코드가 서버 역할을 한다!)

public class Person {
    private String name;
    private String job;
    private int age;
    private String address;

    public String getName() {
        return this.name;
    }

    public String getJob() {
        return this.job;
    }

    public int getAge() {
        return this.age;
    }

    public String getAddress() {
        return this.address;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

 

컨트롤러 : 배달의 민족 느낌? -> 클라이언트가 요청한 것을 서버에 요청해 클라이언트에게 내어줌 

PersonController.java

@RestController
public class PersonController {

    @GetMapping("/myinfo")
    public Person getPerson() {
        Person person = new Person();
        person.setName("손흥민");
        person.setAddress("런던");
        person.setAge(28);
        person.setJob("대한민국 축구선수");
        return person;
    }
}

그레이들(Gradle) : 다른 사람들이 만들어둔 도구를 내려받는 것을 도와주는 녀석! 

(스프링 프로젝트를 배포할 때 빌드를 도와주기도 함)

 

언어별 다른 사람들이 만들어둔 도구를 내려받기

  • Javascript - NPM
  • Python - pip
  • Java - mavenCentral, jcenter 

Maven Repository에 접속

사람들이 제일 많이 쓰는 버전 클릭!
프로젝트 시작할 때, 우리는 gradle을 선택했으므로 코드를 복사해서

build.gradle 에 dependencies에 붙여준다.

남이 만든 코드에 의존하겠다는 의미이다.

'Today I Learned' 카테고리의 다른 글

211130TIL_API  (0) 2021.12.02
211129TIL_Lombok, DTO  (0) 2021.12.01
211123TIL_JPA  (0) 2021.11.25
4 Ls: 반복되는 TIL 회고를 바꿔보자!  (0) 2021.11.23
21116TIL_쿠버네티스 1  (0) 2021.11.16
profile

Burninghering's Blog

@개발자 김혜린

안녕하세요! 반갑습니다.