프로그래밍/Spring
-
[Spring] Servlet/JSP Scope에 대해 알아보자프로그래밍/Spring 2021. 12. 30. 20:16
HTTP 프로토콜의 특징 상태 정보를 저장하지 않는다. (stateless) Scope의 필요성 상태 정보를 저정하기 위한 저장소를 범위에 따라서 나눠놓은 것이 scope이다. Scope의 종류 웹 애플리케이션에는 4개의 저장소가 존재한다. HttpServletRequest를 통해 받은 변수 혹은 지역 변수를 유효 범위 내에서 사용하기 위해서는 Scope를 알아야 한다. 저장소는 Map형태 (key, value)로 되어있으며 이 곳에 data를 저장해서 사용하면 된다. pageContext 접근 범위 : 하나의 요청 받은 페이지 (다른 페이지에서는 접근 불가) 지역변수를 저장한다. - 기본객체도 포함(response, request 등) 접근가능하다는 것은 읽기과 쓰기가 가능하다는 것 forward가 ..
-
[Spring] Servlet에 대해 간단히 알아보자프로그래밍/Spring 2021. 12. 30. 14:37
Spring Framework는 Servlet이 발전된 형태이기 때문에 Servlet과 닮은 부분이 많다. 또한 브라우저에서 요청을 받을 때도 Servlet인 DispatcherServlet을 사용하기 때문에 간단하게 알아보고자 한다. Servlet과 Controller 비교 - TestServlet 작성 (Servlet) @WebServlet("/testServlet") public class TestServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { String name = r..
-
[Spring] 관심사의 분리와 MVC 패턴에 대해 알아보자프로그래밍/Spring 2021. 12. 29. 15:14
관심사의 분리 하나의 메서드에서 여러 기능을 하는 로직이 많아지면 유지보수 측면에서 어려움을 겪을 수 있다. 아래 코드는 main 메서드에 입력, 작업, 출력 이라는 기능(관심사)이 3개가 있는 것을 볼 수 있다. 이 코드는 단순하지만, 복잡한 기능이 하나의 메서드에 여러개 있다면 그것을 찾는 일은 어려울 것이다. 그래서 우리는 관심사를 분리해야 한다. 앞으로 배울 MVC 패턴도 관심사의 분리라는 개념에서 시작된다. @Controller public class UserInfo { @RequestMapping("/userInfo") public void main(HttpServletRequest request, HttpServletResponse response) throws Exception { // 1..
-
[Spring] Tomcat의 내부 구조, 설정 파일에 대해 알아보자프로그래밍/Spring 2021. 12. 28. 12:09
웹 서버 구조 톰캣의 내부 구조와 처리과정 1. 클라이언트가 브라우저에서 URL을 요청 (8080포트) - ex) http://www.naver.com/event/list 2. 톰캣의 Thread Pool에서 해당 요청을 받아서 Connector를 통해 HTTP버전에 맞는 요청을 연결해준다. 3. Engine에서 URL에 해당하는 Host로 접근 - ex) www.naver.com 4. 호스트의 각 Context(Spring Project) 로 접근 - ex) /event 5. Context 내부에는 각각의 서블릿이 들어있으며 url에 맞는 서블릿에 접근한다. - ex) /list 6. 해당 서블릿이 실행되고 그 결과를 브라우저에 전송한다. 브라우저 요청 -> 톰캣서버 -> Host -> Context ..
-
[Spring] 클라이언트와 서버에 대해 알아보자프로그래밍/Spring 2021. 12. 28. 11:29
클라이언트와 서버 역할에 따라 클라이언트와 서버를 구분할 수 있다. 클라이언트(client): 서비스를 요청하는 애플리케이션(or 컴퓨터, 브라우저) 서버(server): 서비스를 제공하는 애플리케이션(or 컴퓨터) 서버의 종류 어떤 서비스를 제공하느냐에 따라 종류가 나눠질 수 있다. ex) Email server, file server, Web server WebServer? 브라우저를 통해서 받을 수 있는 모든 서비스를 칭한다. css, html, 이미지 등 정적인 데이터를 처리해준다. 예를 들어 브라우저에서 byungmin.tistory.com/59 라는 주소를 요청하면 웹서버는 그 요청에 해당하는 화면을 html파일로 뿌려준다. html과 동시에 css, 이미지 파일 등을 같이 뿌려준다. 정적인 ..
-
[Spring] HTTP 요청과 응답에 대해 알아보자프로그래밍/Spring 2021. 12. 28. 10:24
HTTP 프로토콜 HTTP는 Hyper Text Transfer Protocol의 약자로, 인터넷 상에서 데이터를 주고 받기 위한 약속, 규칙이다. 웹에서는 클라이언트(브라우저)와 서버간에 데이터를 주고 받기 위한 방식으로 HTTP프로토콜을 사용한다. 이렇게 규칙을 정해두었기 때문에, 모든 프로그램이 이 규칙에 맞춰 개발함으로써 서로 정보를 교환할 수 있게 된다. HTTP로 보낼 수 있는 데이터는 HTML문서, 이미지, 동영상, 오디오, 텍스트 문서, JSON형식 등 여러종류가 있으며 브라우저에서 요청하면 서버는 요청에 대한 내용을 처리하여 브라우저에 다시 응답해준다. HTTP 프로토콜의 특징 단순하고 읽기 쉽다. - 텍스트 기반의 프로토콜 상태를 유지하지 않는다. (stateless) - 클라이언트의 ..
-
[Spring] 원격 프로그램 실행방법에 대해 알아보자프로그래밍/Spring 2021. 12. 27. 23:32
Spring 프로젝트를 생성 후 브라우저에서 원격으로 우리가 만든 프로젝트를 실행하는 방법을 알아보자 Controller 생성 1. 프로그램 등록 2. URL과 프로그램을 연결 @Controller // 원격 호출 가능한 프로그램으로 등록 public class Hello { @RequestMapping("/hello") // URL과 프로그램을 연결 public void hello() { System.out.println("hello"); } } 3. 브라우저에서 해당 URL로 호출 실행결과 hello 인스턴스 메서드가 실행될 수 있는 이유 메서드가 static이 아닌 인스턴스 메서드임에 주목하자. 인스턴스 메서드는 객체가 생성된 후에 사용할 수 있는데 우리 코드에는 객체를 생성한 흔적이 없다. 이는 ..
-
[Spring] Maven Lifecycle에 대해 알아보자프로그래밍/Spring 2020. 9. 2. 20:37
Youtube 뉴렉처 강사님의 메이븐 강의를 듣고 정리한 글입니다. #1. Maven Lifecycle 앞서 우리는 cmd에서 컴파일을 할 때, 패키지를 만들 때 그에 해당하는 명령어를 사용했다. (mvn compile, mvn package...등) 이 명령어는 Maven이 가지고 있는 빌드 단계에 해당되는 명령어 들이다. 1. 특징 - Maven에서는 미리 정의하고 있는 빌드 순서가 있다. 이 순서를 라이프 사이클(LifeCycle)이라고 한다. - 라이프 사이클의 각 빌드 단계를 phase라 하며 각각의 phase는 의존관계를 가지고 있어 해당 phase가 수행되려면 이전 단계의 phase가 모두 수행되어야 한다. - 만약 compile이 실행되려면 그 전 단계들이 실행되어야 한다는 뜻이다. - 모..