스프링 1

Mango·2022년 3월 14일
0

Spring

목록 보기
1/7

스프링
1. 유지보수가 쉽다
2. 생산성이 높다


개발도구
-자바 개발도구 : Java11
- 통합개발 환경 : STS, IntelliJ
- 웹 서버 : Tomcat9
- 웹 브라우저 : chrome
- 데이터 베이스 : MySQL 5.7
- 기타 : VS code, Git, AWS, Maven


[2-1] 원격 프로그램의 실행

  1. 로컬 프로그램 실행
    - java.exe 인터프리터가 main메서드를 호출하고 메서드 안에 있는 문장들이 실행됨
    - main메서드가 static이기 때문에 객체생성 없이 호출 가능
  2. 원격 프로그램 실행
    ① 클래스를 원격 호출 가능한 프로그램으로 등록 -> @Controller
    ② URL과 메서드를 연결 -> @RequestMapping("/")
    - Reflection API : 클래스 정보를 얻고 다룰 수 있는 기능을 제공한다.
    - private method를 호출 가능한 이유는 스프링 프레임워크가 Reflection API를 이용해서 객체를 만들기 때문

[2-3] HTTP요청과 응답

  1. HttpServeltRequest
    - 원격 프로그램을 브라우저로 URL을 입력해서 호출하면 톰캣이 HttpServletRequest객체를 만들어서 요청한 정보를 담는다. 그리고 이것을 메인 메서드의 매개변수(HttpServletRequest request)로 넘겨준다.
    	...
    @Controller
    public class RequestInfo {
    	@RequestMapping("/requestInfo")
       public void main (HttpServletRequest request) {
       ...
  2. HttpServletRequest의 메서드

[2-4] HTTP요청과 응답

서버가 제공하는 리소스
① 실행시마다 결과가 변하는 동적 리소스
② 결과가 고정되어 있는 정적 리소스

client : 서비스를 요청하는 애플리케이션
server : 서비스를 제공하는 애플리케이션

⛔ @Controller

⛔ @RequestMapping("/")

[2-5] 클라이언트와 서버

  1. 클라이언트와 서버
    - 요청에 대한 정보가 필요할 때는 매개변수로 HttpServeltRequest를 적어주기만 하면 된다.
    -> 그러면 메서드 내에서 객체를 이용해 원하는 정보를 얻을 수 있다.
  2. 서버의 종류
  3. 서버의 포트
  4. 웹 어플리케이션 서버(WAS)
    - 웹 애플리케이션 서버(WAS) : 웹 애플리케이션을 서비스하는 서버. 서버에 프로그램을 설치하고 클라이언트가 이용가능하게 하는 것
  5. Tomcat의 내부 구조
    - 서블릿(Servlet) : 작은 서버 프로그램

⛔ Dispatcher Servlet

[2-6] 클라이언트와 서버

  1. Tomcat의 설정파일 - server.xml, web.xml
    톰캣 설치경로/conf/server.xml : Tomcat 서버 설정파일
    톰캣 설치경로/conf/web.xml : Tomcat의 모든 web app의 공통 설정
    웹앱이름/WEB-INF/web.xml : web app의 개별 설정

- 기존의 방법은 web.xml에서 설정하는 것이었으나 어노테이션으로 바뀌는 중
① 서블릿 등록 -> @Controller
② URL 연결 -> @RequestMapping

[2-7] HTTP 요청과 응답

  1. 프로토콜(protocol)이란?
    - 서로간의 통신을 위한 약속, 규칙
    - 주고 받을 데이터에 대한 형식을 정의한 것

  2. HTTP(Hyper Text Transfer Protocol)이란?
    - 단순하고 읽기 쉽다. 텍스트 기반의 프로토콜
    - 상태를 유지하지 않는다. 클라이언트 정보를 저장x
    - 확장 가능하다. 커스텀 헤더(Header) 추가 가능

  3. HTTP 메시지

  4. HTTP 메시지 - 응답 메시지

    상태코드와 의미
    - 1xx : Information
    - 2xx : Success
    - 3xx : Redirect(다른 URL 요청)
    - 4xx : Client Error
    - 5xx : Server Error

  5. HTTP 메시지 - 요청 메시지

  6. HTTP 메서드 - GET, POST

    GET
    - 서버의 리소스를 가져오기 위해 설계
    - QUERY STRING을 통해 데이터를 전달(소용량)
    - URL에 데이터 노출되므로 보안에 취약
    - 데이터 공유에 유리
    EX) 검색엔진에서 검색단어 전송에 이용


    POST
    - 서버에 데이터를 올리기 위해 설계됨
    - 전송 데이터 크기의 제한이 없음(대용량)
    - 데이터를 요청 메시지의 body에 담아 전공
    - 보안에 유리, 데이터 공유에는 불리
    EX) 게시판에 글쓰기, 로그인, 회원가입

    https:// = HTTP + TLS(암호화. 과거에는SSL이었음)

[2-8] 텍스트와 바이너리, MIME, Base64

- 바이너리 파일 : 문자와 숫자가 저장되어 있는 파일. 데이터를 있는 그대로 읽고 쓴다.
- 텍스트 파일 : 문자만 저장되어 있는 파일. 숫자를 문자로 변환 후 쓴다.
- MIME(Multipurpose Internet Mail Extensions) : 텍스트 기반 프로토콜에 바이너리 데이터 전송하기 위해 고안. HTTP의 Content-Type헤더에 사용. 데이터의 타입을 명시.
- Base64(64진법) 인코딩 : 바이너리 데이터를 텍스트 데이터로 변환할 때 사용
=> 받는쪽과 주는쪽의 데이터 형식이 다를 수 있기에 가장 안전하고 공통적인 64개의 문자로 인코딩 하는 것

[2-9] 관심사의 분리와 MVC패턴

  1. 관심사의 분리 Separation of Concerns
  2. 공통 코드의 분리 - 입력의 분리
  3. 출력(view)의 분리 - 변하는 것과 변하지 않는 것의 분리

MVC패턴 : 처리가 출력과 같은 메서드에 있을 때는 바로 접근가능했지만 분리됐을 경우 중간 객체(Model)가 필요하다. 그리고 결과를 출력하는데 필요한 값들을 Model객체에 저장한다. 출력은 Model객체에 있는 내용을 읽어서 출력한다.
=> 코드를 분리했기 때문에 분리된 코드간에 데이터를 전달하기 위해 Model이 필요한것!
=> 처리하는 부분 : Controller, 보여주는 부분 : View, 둘 사이 데이터를 주고받을 수 있는 객체 : Model


(1) 클라이언트가 요청을 하면
(2) DispatcherServlet이 입력과 변환을 자동으로 처리 -> 모델 생성해 Controller에게 전달
(3) Controller는 작업결과를 Key, Value형태로 Model에 담아서 다시 DispatcherServlet에 돌려준다.
(4) DispatcherServlet은 Model을 View에 전달. Controller는 어떤 View를 통해서 결과를 보여줄지를 지정

[2-10] 관심사의 분리와 MVC패턴

  1. ModelAndView : 매개변수에서 Model을 선언하지 않고 Controller에서 직접 Model을 만들어 쓸 수 있다. 반환타입도 ModelAndView (잘안씀)
  2. 컨트롤러 메서드의 반환타입
    - String : 뷰 이름을 반환
    - void : 맵핑된 url의 끝단어가 뷰 이름
    - ModelAndView : Model과 뷰 이름을 반환

[2-11] 관심사의 분리와 MVC패턴

스프링이 매개변수 이름을 얻는 방법
① Reflecion API 이용
② Class file을 직접 읽기

[2-13] Servlet과 JSP

  1. 서블릿와 컨트롤러의 비교
    - @WebServlet = @Controller + @RequestMapping
    - Servlet은 클래스 단위로 매핑해야해서 클래스를 많이 만들어야 하지만 Controller는 메서드 단위로 매핑가능
  2. 서블릿의 생명주기
    - init(), service(), destroy() : 서블릿이 가진 기본 3가지 메서드
    - 싱글톤 Singleton. 1개의 객체(인스턴스)만 생성
  3. JSP(Java Server Pages)란?
    - HTML안에 Java코드가 있는 것
  4. JSP와 서블릿의 비교
  5. JSP의 호출 과정
    - 싱글톤(하나의 객체를 반복적으로 재사용)
  6. JSP와 서블릿으로 변환된 JSP의 비교
  7. JSP의 기본객체
    - 생성 없이 사용할 수 있는 객체를 가지고 있다.

    - request : 요청 정보가 담겨있는 객체
    - response : 요청에 응답을 작성할 때 사용
    - session : HTTP session을 구현한 객체. 세션 정보 저장에 사용
    - out : 응답에 포함될 내용을 출력할 때 사용

[2-14] Servlet과 JSP

  1. 유효범위(scope)와 속성(attribute)
    - HTTP의 특징 : 상태정보를 저장하지 않는다(stateless)
    - 유효범위(scope)에 따라 4개의 저장소가 Map의 형태로 존재
    - Map에 저장할 때 사용하는 setAttribute() / 읽어올 때 사용하는 getAttribute()
    - 저장소(Map)의 key값을 속성(attribute)라고 한다.

    저장소 ① : pageContext - 범위는 하나의 JSP. 해당 JSP 내부에서만 접근가능. EL때문에 사용
    저장소 ② : application - WebApp 전체에서 접근가능한 공통저장소. 1개만 존재. Web Application의 시작부터 종료까지 존재한다. context 내부 어디서나 접근 가능. 모든 클라이언트가 공유.
    저장소 ③ : session - 클라이언트마다 가지고 있는 개별저장소 (ex. id, 장바구니). 사용자 수 만큼 필요하기 때문에 서버부담이 가장 크다 -> 최소한의 data만 저장
    저장소 ④ : request - request 객체가 Map을 가지고 있음. 요청이 처리되는 동안만 존재하기 때문에 가장 부담이 적다. 다른 JSP로 전달 가능(forward).

    " 웹 프로그래밍은 결국 페이지들 간의 이동과 정보전달 "

[2-15] Servlet과 JSP

  1. URL 패턴
    - @WebServlet으로 서블릿을 URL에 맵핑할 때 사용
  2. EL(Expression Language) : <%=값%> => ${값}. 간단하고 편리. EL에서는 lv사용x

[2-16] Servlet과 JSP

  1. JSTL(JSP Standard Tag Library) : <%=값%>을 사용하지 않기 위해 나옴
  2. Filter : 공통적인 요청 전처리와 응답 후처리에 사용. 로깅, 인코딩 등
    - @WebFilter(urlPatterns="/*") : 필터를 등록하는 애너테이션

⚓ OOP 5대 설계원칙 - SOLID
① SRP : 단일 책임의 원칙 "하나의 메서드는 하나의 책임만"


profile
How u do that

0개의 댓글

관련 채용 정보