[Spring] Thread와 Java / Spring에서의 Multi-Thread 구현
·
Spring
0. 동기 / 비동기 & 블로킹 / 논블록킹동기 / 비동기 : 요청한 작업에 대해 완료 여부를 신경 써서 작업을 순차적으로 수행할지 아닌지 관점블로킹 / 논블록킹 : 현재 작업이 block(차단, 대기) 되느냐 아니냐에 따라 다른 작업을 수행할 수 있는지 관점 0.1. 동기(Synchronous) vs 비동기(Asynchronous)요청한 작업에 대해 완료 여부를 신경 써서 작업을 순차적으로 수행할지 아닌지전체적인 작업에 대한 순차적인 흐름 유무동기 : 요청한 작업에 대해 완료 여부를 따져 순차대로 처리하는 것요청한 작업에 대해 순서가 지켜진다비동기 : 요청한 작업에 대해 완료 여부를 따지지 않기 때문에 자신의 다음 작업을 그대로 수행요청한 작업에 대해 순서가 지켜지지 않을 수 있다느린 작업(like I..
[Spring] 빌드 관리 도구 Maven vs Gradle
·
Spring
재직 중에 Maven만 사용하다가 요즘은 Gradle이 더 간결하고 많이 쓰인다길래 써보면서 차이점을 기록하려고 합니다 1. 빌드 관리 도구 (Build Tool)Maven과 Gradle은 모두 빌드 관리 도구작업종속성 다운로드소스코드를 바이너리 코드로 컴파일바이너리 코드를 패키징테스트 실행프로덕션 시스템에 배포 2. Maven vs Gradle 차이 2.1. Maven vs Gradle 차이 GradleMaven스크립트적은 양의 스크립트로 짧고 간결한 작성 가능프로젝트가 커질수록 길고 가독성 떨어짐동적 빌드동적 빌드는 Groovy 스크립트로 플러그인 호출하거나 직접 코드 작성 가능정적 형태의 XML 기반이라 동적 빌드 적용 어려움멀티 프로젝트설정 주입 방식 사용 → 멀티 프로젝트에 적합멀티 프로..
[Spring] JSP와 Spring에서의 Forward와 Redirect : InternalResourceView / RedirectView
·
Spring
JSP에서 한 서블릿에서 다른 서블릿 / JSP로 요청를 전달할 때 사용하는 방법인 Forward & Redirect에 대해 알아보고, Spring에서 이들을 어떻게 처리하는지 알아보자! 1. Forward "내가 물어보고 알려줄게" - 웹 애플리케이션에서 한 서블릿에서 다른 리소스(Servlet, JSP, HTML)로 요청을 전달 (총 요청 1번) - 클라이언트로 요청을 전달하는 것이 아니라 서버 내 다른 리소스 호출 - 기존 request 정보가 유지되어 조회 가능 1.1. Forward 예시 코드 @Controller public class TestController { @GetMapping("/test") public String test(HttpServletRequest request) { ..
[Spring] URL 매핑 : URL 패턴 Servlet URL Mapping / DispatcherServlet
·
Spring
1. URL 패턴 - URL 패턴 규칙을 생각하고 매핑 설정을 해야, 예상한 Servlet / Controller으로 요청할 수 있다 - Servlet과 Spring 모두 아래 URL 패턴 규칙을 사용 가능하다 (1. 2. ... : 우선순위) 종류 URL pattern 매칭 URL 1. exact mapping /test/hello.do http://localhost/syun/test/hello.do 2. path mapping /test/* http://localhost/syun/test/ http://localhost/syun/test/hello http://localhost/syun/test/hello.do http://localhost/syun/test/cat 3. extension mappin..
[Spring] MVC 패턴이란? Model / View / Controller / 메인 메서드 반환타입
·
Spring
0. 관심사의 분리 - OOP 5대 설계원칙 : SOLID • SRP : 단일 책임의 원칙 (하나의 메서드는 하나의 책임(Concern)) - 좋은 객체지향 설계를 위한 분리 1. 관심사 분리 2. 변하는 것(Common) / 변하지 않는 것(Uncommon) 분리 3. 공통코드 (중복코드) 1. MVC 패턴이란? - 소프트웨어를 Model - View - Controller의 3가지 구성 요소로 구분한 개발 방법론이다 - 사용자가 Controller를 조작 → Controller는 Model을 통해 데이터를 가져옴 → 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달 - Model : 정보 및 데이터 부분. 데이터와 관련한 값과 기능을 가지는 객체 - View : 입력값, 체크박..
[Spring] HttpServletRequest, HttpServletResponse 객체
·
Spring
HttpServletRequest - HTTP 프로토콜의 요청 정보를 서블릿에 전달하기 위해 사용 - 헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어들이는 메서드 포함 - Body의 Stream 읽는 메서드 포함 - 예제 코드 Enumeration enum = request.getParameterNames();// 파라미터 이름들 (iterator) Map paramMap = request.getParameterMap(); // 파라미터 값들 map 형태로 (key-value) String[] yearArr = request.getParameterValues("year"); // name이 "year"인 value 모두 String year = request.getParameter("yea..
[Spring] 웹 개발을 하는 세 가지 방법(3) : API
·
Spring
웹 개발의 세 가지 방법 1. 정적 컨텐츠 2. MVC와 템플릿 엔진 3. API 👈 정적 콘텐츠가 아니라면 HTML로 내리냐 API 방식으로 데이터를 바로 내리느냐 두 가지만 생각하면 된다!! API > 간단한 String API 구현해보기 1. HelloController에 코드 추가 @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name) { return "hello " + name; //"hello spring" } @ResponseBody : HTML의 응답 Body에 직접 데이터를 넣어주겠다 뷰 없이 문자가 그대로 내려간다 2. 실행 localhost:8080/hell..
[Spring] 웹 개발을 하는 세 가지 방법(2) : MVC와 템플릿 엔진
·
Spring
웹 개발의 세 가지 방법 1. 정적 컨텐츠 👈 2. MVC와 템플릿 엔진 👈 3. API MVC와 템플릿 엔진 MVC : Model, View, Controller 과거 JSP 모델 1 방식에서는 View와 Controller가 구분되어 있지 않고, View에서 모든 역할을 다 수행했다 View는 화면을 그리는 데 모든 역량을 집중해야 한다 Controller는 비즈니스 로직, 내부적인 처리를 한 후, 화면에서 필요한 것을 모델에 담아 화면 쪽에 넘겨준다 > 실행해보기 controller 동작에 대해 살펴봅니다 1. HelloController 파일에 다음과 같은 내용을 추가 @GetMapping("hello-mvc") public String helloMVC(@RequestParam("name") St..
[Spring] 웹 개발을 하는 세 가지 방법(1) : 정적 콘텐츠
·
Spring
웹 개발의 세 가지 방법 1. 정적 컨텐츠 👈 2. MVC와 템플릿 엔진 3. API 정적 컨텐츠 - 스프링 부트는 정적 컨텐츠 기능을 기본적으로 제공한다 https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-static-content /static 디렉터리에서 정적 콘텐츠를 불러온다고 합니다 웰컴 페이지 만들기에서 static 폴더에 정적 파일을 넣었었죠! > 실행해보기 hello-static.html 파일을 static에 생성하고 아무 내용이나 입력해보았습니다 프로젝트를 실행하고 다음과 같은 파일명으로 접근합니다 localhost:8080/h..
[Spring] 웹 개발을 하는 세 가지 방법 : 정적 컨텐츠, MVC와 템플릿 엔진, API
·
Spring
웹 개발의 세 가지 방법 자세한 예시 및 동작 설명은 각 게시물에 대한 링크로 달아두었습니다 1. 정적 컨텐츠 서버에서 하는 것 없이 서버에서 웹 브라우저에 파일을 그대로 내려주는 것 👉 Click to Go [Spring] 정적 콘텐츠 웹 개발의 세 가지 방법 1. 정적 컨텐츠 👈 2. MVC와 템플릿 엔진 3. API 정적 컨텐츠 - 스프링 부트는 정적 컨텐츠 기능을 기본적으로 제공한다 https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/referen.. codesyun.tistory.com 2. MVC와 템플릿 엔진 가장 많이 사용하는 방법으로, HTML을 그냥 주는 것이 아니라 서버에서 프로그래밍하여 HTML을 동적으로 바꿔서 내려주는 것 대표적인 템플..