웹 프로젝트의 기본구조
- 브라우저 혹은 클라이언트 프로그램
- 서버에서 전송한 결과를 화면에 보여주고(렌더링) 사용자의 화면 조작을 이용해서 서버에 원하는 데이터를 보내고(요청) 받는(응답) 프로그램
- 관련 기술 : 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)
- 정적(static)데이터
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 |