<웹의 기본 개념>
- 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 (반환값)
}
메소드명, 변수명 규칙 : 영어사용, 소문자시작, 공백없음, 대문자구분
- 컴퓨터에게 명령하기
- 재료 = 파라미터 (없을 수도 있음)
- 명령 = 실행코드
- 결과 = 반환값 (없을 수도 있음)
// 파라미터 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에 접속
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 |