@Controller
public class HelloController {
@GetMapping("hello")
public String hello(){
return "hello";
}
}
@Controller // 컨트롤러임을 명시해주는 의미
@GetMapping // 이는 localhost:8080/hello 요청이 들어오면 아래의 함수를 실행하라고 해석하면됨 (버튼을 눌러서 이동하는건 다 이것이다 라고 생각하면됨)
@ResponsBody // 이 함수의 리턴값을 그대로 브라우저에 출력하라는 의미 (없으면 함수는 실행이되지만 리턴이 실행이안된다)
@RequsetParam // 요청 파라미터를 매핑하여 호출시 값을 넣어주는 어노테이션 변수앞에 작성하며 사용할 속성 값과 매개변수의 이름이 다른경우
@RequsetParam("name")으로 설정 어노테이션은 생략 가능 하지만 명시적으로 작성하는 것이 의미 파악에 쉬움
@GetMapping(/calc3)
@ResponseBody
String showCalc3(
@RequseParam(defaultValue = "0") int a,
@RequseParam(defaultValue = "0") int b,
) {
return "계산 결과 : %d".formatted(a+b);
}
입력 값 없이 넘어오게 되면 "" 와 같은 빈 문자열이 넘어오게 되어 parsing 관련 에러가 발생할 수 있음 (400- 잘못 된 요청)
값이 넘어오지 않는 경우 defaultValue를 이용하여 기본 값 설정 가능
메소드 ( @RequseParam(defaultValue = "0") 변수 )
정수는 int %d / 정수,실수까지는 double %f / 모든형태는 String %s
@AllArgsConstructor // 어노테이션은 클래스의 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성한다. 이 어노테이션을 사용하면, 클래스의 모든 필드를 한 번에 초기화할 수 있다.
@AllArgsConstructor 어노테이션은 클래스의 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성한다. 이 어노테이션을 사용하면, 클래스의 모든 필드를 한 번에 초기화할 수 있다.
@AllArgsConstructor
public class Person {
private String name;
private int age;
// getters and setters
}
AllArgsConstructor 사용하면 Java 코드는 다음과 같아진다.
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
@NoArgsConstructor // 어노테이션은 파라미터가 없는 디폴트 생성자를 자동으로 생성한다. 이 어노테이션을 사용하면, 클래스에 명시적으로 선언된 생성자가 없더라도 인스턴스를 생성할 수 있다.
@NoArgsConstructor 어노테이션은 파라미터가 없는 디폴트 생성자를 자동으로 생성한다. 이 어노테이션을 사용하면, 클래스에 명시적으로 선언된 생성자가 없더라도 인스턴스를 생성할 수 있다.
@NoArgsConstructor
public class Person {
private String name;
private int age;
// getters and setters
}
NoArgsConstructor 사용하면 Java 코드는 다음과 같아진다.
public class Person {
private String name;
private int age;
public Person(){}
}
private만 할땐 막혔는데 @getter 를 사용하게 되면 접근이 가능하게 된다
public을 쓰면 @getter안쓰고 접근가능
json 표현법에 자바 객체랑 맵을 구분하는 방법이 없다