웹 프로젝트

웹 프로젝트의 기본구조

 

  • 브라우저 혹은 클라이언트 프로그램
    • 서버에서 전송한 결과를 화면에 보여주고(렌더링) 사용자의 화면 조작을 이용해서 서버에 원하는 데이터를 보내고(요청) 받는(응답) 프로그램
    • 관련 기술 : HTML/CSS/자바스크립트 등
  • 웹 서버( Web Server ) 혹은 WAS( Web Application Server )
    • 이미지와 같은 고정된 데이터를 제공 하거나(웹 서버) 동적으로 매번 새로운 데이터를 만들어 낼 수 있는 WAS
    • 관련 기술 : 서블릿 / JSP, 각종 프레임워크와 언어들 
  • 데이터베이스
    • 영구적으로 데이터를 보관하고 운영하기 위한 프로그램
    • 기본적으로 관계형(relation)패러다임을 이용한 관계형 데이터베이스를 사용
    • 관련 기술 : SQL, 데이터베이스 설계 / 구현

Request(요청) / Response(응답)

 

  • 요청에는 GET과 POST방식이 있음.
  • GET방식 
    • 주소창에 직접 원하는 데이터를 적거나 링크를 클릭해서 호출
    • 주소와 필요한 데이터를 한번에 같이 보내기 때문에 단순 링크로 처리됨
    • 메신저나 SNS에 쉽게 공유가 가능
    • 주로 특정한 정보를 조회하는 용도로 사용
  • POST방식
    • 입력 화면에서 필요한 내용을 작성한 후에 '전송'과 같은 버튼 등을 클릭해서 호출
    • 주소와 데이터를 따로 보내는 방식임.
    • 웹 화면을 통해서 실제 처리가 필요한 작업을 하기 위해서 사용
  • 요청 
    • 브라우저에서 서버에 앞선 방식으로 데이터를 요구하는 것.
  • 응답
    • 서버는 요청에 대한 데이터를 만들어서 브라우저로 보내는 것.
  • 서버에서는 브라우저로 응답을 보내는 데 서버에서는 이를 정적인 데이터인지 동적인 데이터인지에 따라서 다르게 처리함.
    • 정적(static)데이터
      • 항상 동일하게 고정된 데이터를 전송하는 방식
      • 웹 서버(Web Server)
    • 동적(dynamic)데이터
      • 매번 필요할 때마다 다른 데이터를 동적으로 구성해서 전송하는 방식
      • 웹 어플리케이션 서버(Web Application Server)

HTTP

 

  • 브라우저의 요청과 서버의 응답 사이의 데이터 교환  약속을 프로토콜(protocol)이라고 한다.
  • 웹에서는 HTTP(Hyper Text Transfer Protocol) 방식으로 데이터를 주고 받음.
  • HTTPS 는 HTTP에 비해 보안이 좀 더 강화된 프로토콜이다. 
  • Header와 Body로 구성되어져 있다. 
  • 비연결성(Connectionless)
    • 하나의 요청과 응답을 처리한 후에 연결을 종료한다는 것을 의미
    • 서버에서는 하나의 요청을 빨리 처리하고 연결을 종료해서 다음 요청을 받을 수 있게 한것. 

자바 서버 사이드 프로그래밍

 

  • 서버 쪽에서 프로그래밍을 통해 데이터를 처리할 수 있도록 구성하는 것을 의미
  • 서블릿(Servlet)기술
    • 서버에서 동적으로 요청과 응답을 처리할 수 있는 API들을 정의한 것.
  • JSP
    • 서블릿과 같은 원리지만 좀 더 HTML을 쉽게 이용할 수 있는 방식으로 코드 작성
  • 서블릿으로는 코드를 이용한 처리, JSP로는 화면 개발

 

 

  • 서블릿 컨테이너 (Servlet Container)
    • 서블릿의 실행은 톰캣과 같은 서블릿을 실행할 수 있는 환경에서 실행이 가능한데 이것을 서블릿  컨테이너라고함.
    • 지금은 톰캣이 서블릿 컨테이너 역할을 한다.
    • 일반 자바 프로그램과 비교했을 때 차이점
      • 객체를 생성하거나 호출하는 주체는 사용자가 아닌 서블릿 컨테이너가 함.
      • 서블릿 클래스에서 생성하는 객체의 관리 자체가 서블릿 컨테이너가 함.
      • 서블릿/JSP의 코드 개발은 기본적인 자바 API와 더불어 서블릿 API도 같이 사용해야 함.
    • 서블릿의 라이프 사이클(life cycle)
      • init() , doGet(), destory()의 호출 주체는 개발자가 아닌 서블릿 컨테이너가 관리하면서 호출함. 
  • .JSP기술
    • Java Server Page의 약자로 서블릿과 동일하게 서버에서 동적으로 데이터를 구성하는 기술
    • JSP기술은 서블릿과 달리 HTML 코드를 그대로 이용함. 
    • JSP코드는 자바 코드가 아님에도 서블릿과 동일하게 처리되는 데 이것은 사실 JSP 파일도 서블릿 코드로 변환되어서 컴파일되고 실행되기 때문.
    • JSP는 서블릿 기술과 같은 목적이지만, 브라우저에 보내는 HTML 데이터를 만드는데 좀 더 특화된 기술.

JSP를 이용해서 GET/POST 처리

 

  • GET방식은 입력과 조회
    • <form>태그는 단어의 뜻 그대로 '입력 양식'을 의미함.
    • 사용자가 입력하는 내용들을 전송하는 용도로 이용
    • <intput>태그는 문자나 숫자 등을 입력하는 용도로 사용
    • type이라는 속성을 이용하여 숫자 혹은 문자, 시간등을 입력가능
    • <button> 화면에 전송버튼을 보여주고 <form>태그의 전송을 목적으로 submit 타입 지정.
  • 쿼리 스트링(query string)과 파라미터(parameter)
    • 웹에서 주소장 뒤에 ?로 시작하는 내용물을 쿼리 스트링이라고 함.
    • 질의 문자열이라는 의미로, 말 그대로 무언가를 요구하거나 물어보는 용도로 데이터를 전달하기 위해서 사용
    • '키=값' 의 형태로 데이터를 전달하는데 여러 개의 데이터가 필요한 경우 '&'를 이용해서 연결함.
    • '키=값'의 형태를 흔히 파라미터 이름과 값이라고 함.
  • POST 방식은 처리를 위한 용도
    • <form>태그에는 action과 method라는 속성이 있다.(action은 어디에 method 어떤 방식으로)
    • POST방식은 주소와 전달하고자 하는 데이터를 분리해서 전송하는 방식이므로 브라우저를 통해 확인 할 수 없다. (개발자도구를 이용해야함.)

 

  GET POST
주용도 조회 등록/수정/삭제와 같은 처리
구성 URL뒤의 "?"와 쿼리 스트링 URL 전달 후 HTTP 몸체로 쿼리 스트링
효과 사용자가 손쉽게 사용할 수 있는 링크 제공 단순 조회가 아닌 원하는 작업을 처리할 수 있음
한계 - 브라우저에 따라 길이 제한
- URL 위의 쿼리 스트링으로 모든 정보가 전달되는 단점
- 쿼리 스트링 길이에 대한 제한
- GET 방식에 비해 만은 양의 데이터 전송
- 주소창만으로는 테스트가 어려움

 

  • 웹의 파라미터는 모두 문자열
    • 숫자를 받아서 Integer type으로 형변환을 시켜야 함. 
  • JSP에서 쿼리 스트링이나 파라미터를 처리하지 않는다. - JSP대신에 서블릿을 통해서  처리
  • JSP는 입력 화면을 구성하거나 처리 결과를 보여주는 용도로만 사용
  • 브라우저는 직접 JSP 경로를 호출하지 않고 서블릿 경로를 통해서 JSP를 보는 방식으로 사용

'Backend > Spring' 카테고리의 다른 글

@Autowired @Quelifier @Component @Value  (0) 2023.01.07
Bean을 .xml 통해 만들어 보기  (0) 2023.01.07
Spring이란? (DI 와 IOC)  (0) 2023.01.04
모델(Model)  (0) 2022.11.29
HttpServlet  (0) 2022.11.29