https://imslo.tistory.com/35

 

IntelliJ 디버거 활용 - Exception 조건설정

알고리즘 문제를 푸는데, for문 안에서 정규식을 처리하고 특정한 로직을 수행하는데 정규식의 어떤 케이스에서 에러가 나는지 몰라 함수 여러군데에 print문을 찍어 확인하였다. 코드도 지저분

imslo.tistory.com

 

https://imslo.tistory.com/33

 

[프로그래머스 lv.1 - 12915번] 문자열 내 마음대로 정렬하기 // Java Comparator 활용

https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

imslo.tistory.com

 

https://imslo.tistory.com/34

 

[프로그래머스 lv.1 -42889번] 실패율 // Java Map, Comparator 활용

https://school.programmers.co.kr/learn/courses/30/lessons/42889 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

imslo.tistory.com

 

https://imslo.tistory.com/31

 

 

https://imslo.tistory.com/32

 

Java, Python 알고리즘 cheat sheet

계속 함수나 클래스, 메서드 까먹어서 적는 cheat sheet. 새로운거 배울때마다 업데이트하기 ! === === 내부 : 클래스명 ----- ----- 내부 : 메소드 ===========내장배열========== int[] intArr = {1,2,3,4} char[] charArr

imslo.tistory.com

 

'일기 > TIL' 카테고리의 다른 글

23.04.10 // IntelliJ 디버거 활용 - Exception 조건설정  (0) 2023.04.16
23.04.09 // Java 알고리즘 문제풀이  (0) 2023.04.16
23.04.05 // Java공부 - 3  (0) 2023.04.16
23.04.04 // Java 공부 - 2  (0) 2023.04.16
23.04.03 // Java공부 - 1  (0) 2023.04.16

<MVC> 

Model - View - Controller의 디자인 패턴. 비지니스 로직과 화면을 구분하는 데 중점을 두고있다.

 

https://developer.mozilla.org/ko/docs/Glossary/MVC

Model : 데이터와 비지니스 로직을 관리

View : 레이아웃과 화면을 처리

Controller : 사용자의 요청을 필요에 따라 View, Model에게 전달(라우팅)

 

동적인 화면의 경우, Controller가 View(동적 HTML)와 Model(적용할 정보들)을 템플릿 엔진에 전달하면, 엔진은 이를 그려서 동적 웹 페이지를 클라이언트(브라우저)에게 내려준다.

Spring에서는 template engine으로 Thymeleaf를 사용하는 것을 권장하고 있다.

 

==================================================================================

<Controller> : Response

@RequestMapping("URL")

/response로 들어온 요청들은 이 클래스에서 처리하게 됨. => 이 아래 메서드들은 respone의 하위 URL들이 된다.

 

@Controller ==> 해당 클래스 / 메소드가 MVC 패턴의 Controller에 해당한다는 것을 알려줌

-기본적으로 @Controller는 view를 반환하게 되어있다. 따라서, return "hello"는 String 타입의 hello를 반환하는 것이 아니라, view로서 hello.html을 반환하게 된다.

동적인 html에서 ${count} 등의 변수를 명시해놓으면, controller 안에서 Model.addAttribute("count", 123) 등으로 주입가능

bye.html은 없고 hello.html만 있을 때, @Controller인 함수가 view 형태의 bye.html을 찾을 수 없다고 알려줌.

하지만 모든 요청이 view를 요청하는 것은 아니다. 데이터를 JSON형태로 받아야 할 경우에는 @Controller에 더해

@ResponseBody  annotation을 붙여준다. Controller이긴 하지만, view가 아닌 데이터를 반환하는 메서드임을 알려준다.

JSON처럼 생긴 String으로 반환된 모습.

@RestController 는 @Controller와 @ResponseBody를 합쳐놓은 것.

==> 데이터를 받아오는 클래스일 경우 @RestController를 붙이면 될듯

==> 전통적 MVC에서는 모델이 view를 반환하여 @Controller를 주로 사용하였다.

==> 프론드와 백엔드를 분리하여 백엔드에서 데이터만 보내주는 최근 방식(REST한 아키텍쳐)에서는 @RestController를 많이 사용

 

============================================================================================

@Controller annotation이 모든걸 처리해주기 때문에 개발자 입장에서는 controller가 시작이자 끝처럼 보이겠지만, 사실 Spring 내부적으로 많은 일들이 일어나고 있다.

-Servlet에서 Client의 요청을 받음

-Servlet에서 API를 처리해줄 Controller를 Handler에서 찾아 전달 (Handler에는 API path와 Controller함수가 짝지어져있)

-Controller -> Servlet(ViewResolver) -> Client

 

해당 내용은 추후에 더 깊게 공부해보기

 

============================================================================================

<Controller> : Request 

클라이언트에서 요청 시, controller가 그 데이터를 어떻게 받는지

@PathVariable

@RequestParam

@ModelAttribute

@RequestBody

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

@PathVariable

Path(URL)를 통해서 들어온 값을 받는다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

@RequestParam (GET)

URL의 /form/param 뒤에 ?name=슬로2&age=12332 부분을 쿼리스트링이라고 한다. 

@RequestParam은 Get방식에서 쿼리방식으로 보낸 값을 받아올 수 있다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

@RequestParam (POST)

Payload의 소스보기를 보면, GET방식과 마찬가지로 쿼리스트링에 데이터가 들어있다. 따라서 똑같이 @RequestParam으로 데이터를 받아올 수 있다.

하지만, POST방식으로 데이터를 받아올 때는 URL에 쿼리 내용이 드러나지 않는다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

@ModelAttribute

데이터를 객체로 받는다. 이 때, 객체는 setter가 있어야하며, 변수는 객체의 필드명으로 접근 가능

RequestParam이나, PathVariable은 필드값이 여러개일때 받아오기 어렵기 때문에 이렇게 받을 수 있다.

@ModelAttribute는 생략 가능. 그냥 객체로 받겠다고 쓰면 됨

이 때, 받으려는 객체의 필드이름은 데이터를 보내는 곳의 variable 이름과 일치해야하며, setter가 필요하다

데이터는 마찬가지로 쿼리형식으로 전달되며, POST방식이므로 URL에 드러나지 않는다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

@RequestBody

form태그의 Body를 받아오는 방식이다. Body는 JSON 형태로 전달된다.

받아오는 객체가 있어야하며, PathVariable이나 RequestParam처럼 변수명을 명시해서 받아올 수 없다.

 

https://imslo.tistory.com/26

 

Java문법 (2) - 클래스 // 객체 // 메서드

Java는 대표적인 객체지향 언어. 객체빼면 시체 객체 = Object. 속성과 행위로 구성이 되어있다. 속성 = field // 행위 = method 객체지향 언어에서의 소프트웨어는 객체들의 조립. 객체들의 상호작용을

imslo.tistory.com

https://imslo.tistory.com/27

 

Java 문법 (3) - 생성자 // 제어자 // getter, setter // 상속 // 추상화 //인터페이스 //

Constructor. 객체가 생성(new)될 때 호출되며, 객체를 초기화하는 역할을 하며, 부가적인 역할도 함. 모든 클래스는 반드시 생성자가 있어야함 (안만들어주면 컴파일러가 기본생성자로 만들어줌) 컴

imslo.tistory.com

https://imslo.tistory.com/28

 

Java 문법 (4) - 상속관련 super // override // 다형성 // 추상클래스

부모로부터 상속받은 메서드의 내용을 재정의하는 것 1. 선언부가 부모 클래스의 메서드와 일치해야 함 2. 접근 제어자를 부모 클래스의 메서드보다 좁은 범위로 변경할 수 없음. 3. 예외는 부모

imslo.tistory.com

 

https://imslo.tistory.com/25

 

Java 문법 - 연산자 // 반복문 // 배열 // 컬렉션

산술연산 : +(덧셈) -(뺄셈) *(곱셈) / (나눗셈) > (비트연산자) 비교연산자 : , =, ==, != 논리연산자 : &&(and) , ||(or), !(not) 대입연산자 : =, ++, -- 기타연산자: (type)(형 변환 연산자) // ? : (삼항연산자) // in

imslo.tistory.com

 

https://imslo.tistory.com/24

 

Java 개요 // JVM // 저장공간 // 변수와 상수 // 형변환

A언어 : 입,출력 // 문맥 ==> B언어 : A언어기능 + 기계식 데이터 타입, 연산기능, methods ==> C언어 : B언어기능 + 자료형 데이터 타입, 자료구조(분류통) 이후에 등장한 것이 Java. C언어의 많은 특징들을

imslo.tistory.com

 

'일기 > TIL' 카테고리의 다른 글

23.04.05 // Java공부 - 3  (0) 2023.04.16
23.04.04 // Java 공부 - 2  (0) 2023.04.16
23.04.01 // ajax async, 웹 관련  (0) 2023.04.16
23.03.26 // AWS 사용, 웹 배포해보기  (0) 2023.04.16
23.03.25 // MongoDB, Flask 서버만들기  (0) 2023.04.16

https://imslo.tistory.com/23

 

ajax async // 웹관련 몇가지

========================================================================================== 토이프로젝트 구현 중, 로그인 토큰을 관리하는 쿠키를 저장하고, 특정 조건에서 이 쿠키를 활용하여 로그인 여부를 확인하

imslo.tistory.com

 

'일기 > TIL' 카테고리의 다른 글

23.04.04 // Java 공부 - 2  (0) 2023.04.16
23.04.03 // Java공부 - 1  (0) 2023.04.16
23.03.26 // AWS 사용, 웹 배포해보기  (0) 2023.04.16
23.03.25 // MongoDB, Flask 서버만들기  (0) 2023.04.16
23.03.24 // API 활용, 웹크롤링  (0) 2023.04.16

+ Recent posts