웹과 데이터베이스의 관계
- 사용자는 쇼핑몰 등 웹 환경에서 데이터베이스를 사용하고 있다는 사실조차 인식하지 못함.
- SQL을 몰라도 웹 애플리케이션을 통해 데이터 조회 및 처리가 가능.
- 폼 기반 툴, GUI, 리포트 생성기, 데이터 분석 도구 등을 통해 쉽게 접근 가능.
웹 기반 애플리케이션 개발의 필요성
- 웹은 사실상 표준 사용자 인터페이스(de facto standard).
- 브라우저만 있으면 누구나 어디서든 데이터베이스 접근 가능.
- 따라서 DB 애플리케이션 개발 시 웹 기반 접근이 가장 효율적.
HTML과 웹 문서
- 웹 문서는 HTML(HyperText Markup Language) 기반으로 작성.
- HTML 문서 구성 요소:
- 텍스트 및 서식 (굵게, 기울임 등)
- 하이퍼링크 (문서 간 연결)
- 폼(Form): 사용자 입력을 받아 DB와 상호작용 가능
폼(Form)과 데이터베이스 연동
- 검색창, 입력 박스 등을 통해 사용자가 키워드 입력 → SQL 쿼리 변경 후 DB 조회.
- 결과를 웹 서버를 거쳐 사용자에게 전달.
- 폼 활용이 웹-DB 연동의 핵심 기초.
정적(Static) vs 동적(Dynamic) 웹 문서
- 정적 HTML 문서
- 내용 고정 → 시간이 지나면 무의미.
- 사용자별 맞춤 제공 불가.
- 데이터 업데이트 시 모든 페이지를 수동 수정해야 함.
- 동적 웹 문서
- DB와 연결되어 실시간 데이터 반영.
- 사용자 맞춤(customization) 가능.
- 한 곳(DB)만 수정해도 모든 페이지 자동 갱신.
- 따라서 동적 웹 문서가 현대 웹 애플리케이션의 기본.
데이터 분석과 OLAP
- 단순한 표 생성도 사실은 여러 SQL 쿼리가 필요.
- 고급 SQL 및 OLAP(Online Analytical Processing) 기능 활용 시 한 번의 쿼리로 복잡한 집계 가능.
- 따라서 데이터베이스 고급 기능 이해가 중요.
URL (Uniform Resource Locator)
- 웹에서 모든 자원은 URL로 접근 가능.
- URL 기본 구조:
프로토콜://서버주소/경로/문서?매개변수=값&다른매개변수=값
- 구성 요소:
- 프로토콜: http, https, ftp 등 (어떻게 접근할지)
- 서버 주소: 도메인 이름(www.example.com) 또는 IP 주소
- 경로: 서버 내 특정 문서나 프로그램 위치
- 쿼리스트링(Query String): ? 뒤에 오는 key=value 형식, 여러 개는 &로 구분
📌 예시
http://www.google.com/search?q=database&t=manual
- 프로토콜: http
- 서버: www.google.com
- 프로그램: search
- 매개변수: q=database, t=manual
쿼리스트링 (Arguments in URL)
- ? : 인자(argument) 시작
- & : 여러 인자 구분
- 예:→ q = "database", t = "manual"
http://.../search?q=database&t=manual
📌 함수 호출처럼 생각 가능:
search(q="database", t="manual")
HTML 기본
- 웹페이지는 HTML로 작성됨.
- 주요 태그:
- <table>, <tr>, <td> → 표(table), 행(row), 열(cell)
- <form> → 사용자 입력
- <input> → 입력창, 버튼
- <select>, <option> → 드롭다운
- <i> → 이탤릭
- <center> → 가운데 정렬
HTML Form 동작
- <form>: 사용자 입력을 서버로 전송
- action="bankquery" : 전송할 서버 프로그램
- method="GET" : 전송 방식 (URL 뒤에 붙음)
- 입력 요소:
- 드롭다운 (<select name="type">)
- <option value="account">Account</option>
- <option value="loan">Loan</option>
- 텍스트 입력 (<input type="text" name="id">)
- 제출 버튼 (<input type="submit">)
- 드롭다운 (<select name="type">)
📌 예:
<form action="bankquery" method="GET">
Select account or loan:
<select name="type">
<option value="account">Account</option>
<option value="loan">Loan</option>
</select>
Enter number:
<input type="text" name="id">
<input type="submit" value="Submit">
</form>
사용자가 "Loan" 선택하고 id=102 입력 →
bankquery?type=loan&id=102 가 서버로 전달됨.
HTTP 프로토콜의 특징
- Stateless(비연결성)
- 요청(Request)을 보내고 응답(Response)을 받으면 연결이 끊어짐
- 서버는 이전 요청을 기억하지 않음 → 매번 새로운 사용자처럼 인식
- 장점: 서버 부하 감소, 수많은 사용자 처리 가능
- 단점: 로그인 상태 유지, 사용자 맞춤 정보 제공이 어려움
세션(Session)의 필요성
- 사용자가 여러 번 요청하더라도 같은 사용자임을 식별해야 하는 경우 발생
- 예: 쇼핑몰 로그인 → 장바구니 유지, 결제 진행
- 세션은 여러 요청을 하나의 사용자 활동으로 묶어줌
쿠키(Cookie)의 개념과 역할
- 쿠키란?
- 서버가 브라우저에 저장하는 작은 텍스트 파일
- 사용자 인증 정보(ID, 로그인 여부, 사용자 선호 설정 등) 포함 가능
- 동작 방식
- 서버 → 브라우저: 쿠키 전송
- 브라우저: 쿠키 저장 후 다음 요청 시 쿠키를 함께 전송
- 서버: 쿠키를 확인해 사용자를 식별
- 장점: 사용자의 로그인 상태, 개인화 정보 유지 가능
- 보안 이슈: 쿠키에 민감한 정보가 담길 경우 악용 가능
세션과 쿠키의 관계
- HTTP는 연결을 기억하지 않기 때문에, 세션을 구현하기 위해 쿠키 사용
- 쿠키에 세션 ID 저장 → 서버가 사용자를 추적 가능
- 한 번 로그인하면 세션 ID를 통해 여러 요청에서 동일 사용자로 인식
자바 서블릿(Servlet) 소개
- 서블릿이란?
- 웹 서버에 탑재되어 동작하는 자바 기반 웹 애플리케이션
- 요청을 받고, 처리한 뒤 HTML 결과를 응답으로 돌려줌
- 특징
- 요청이 들어올 때마다 새로운 스레드(Thread)로 실행 → 동시성 처리 가능
- HttpServlet 클래스를 상속받아 doGet(), doPost() 메서드 재정의
서블릿 동작 과정
- 클라이언트가 요청 (ex. 로그인, 계좌 조회)
- request 객체에서 전달된 파라미터 추출 (getParameter())
- 필요 시 DB(JDBC 등)와 연동 → 데이터 조회
- 조회 결과를 HTML 형식으로 작성하여 response 객체를 통해 반환
예시:
Public class BankQueryServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse result) throws ServletException, IOException {
// Client에서 보내는 request 처리 : Parameter 처리
String type = request.getParameter(“type”);
String number = request.getParameter(“number”);
// input받은 정보를 DB에 업데이트
//…code to find the loan amount/account balance …
//…using JDBC to communicate with the database..
//…we assume the value is stored in the variable balance
// Client로 다시 보낼 response 처리
result.setContentType(“text/html”);
PrintWriter out = result.getWriter( );
out.println(“<HEAD><TITLE>Query Result</TITLE></HEAD>”);
out.println(“<BODY>”);
out.println(“Balance on “ + type + number + “=“ + balance);
out.println(“</BODY>”);
out.close ( );
}
}
캐싱(Caching)의 개념
- 캐싱이란?
자주 사용되는 데이터를 임시 저장소(cache)에 저장해두고, 다음에 같은 요청이 오면 서버가 다시 계산하거나 DB 조회하지 않고 빠르게 응답하는 방식 - 웹에서 캐싱은 성능 향상과 서버 부하 감소에 매우 중요
웹에서의 캐싱 방식
- 브라우저 캐시 (Client-side Cache)
- 웹 브라우저가 HTML, CSS, 이미지 같은 정적 리소스를 저장
- 사용자가 같은 페이지를 다시 열면 서버에 요청하지 않고 로컬에서 바로 로드
- 장점: 빠른 속도, 네트워크 비용 절감
- 프록시/중간 캐시 (Proxy Cache)
- 클라이언트와 서버 사이에 위치한 캐시 서버가 데이터를 저장
- 여러 사용자가 같은 데이터를 요청할 경우, 캐시 서버가 대신 응답 → 서버 부담 줄어듦
- 서버 캐시 (Server-side Cache)
- 애플리케이션 서버나 DB 서버에서 결과를 메모리에 저장
- 같은 요청이 오면 DB를 다시 조회하지 않고 캐시된 값을 바로 응답
- 예: 로그인한 사용자 정보, 최근 조회한 계좌 잔액
캐싱과 세션/쿠키의 관계
- 쿠키/세션은 사용자 상태 유지를 위한 것
- 캐싱은 데이터나 결과 재활용을 통한 성능 향상
- 둘 다 웹 성능 최적화에 중요한 역할을 하지만, 목적이 다름
캐싱의 장단점
- 장점
- 응답 속도 향상
- 서버와 DB 부하 감소
- 네트워크 사용량 절감
- 단점/주의점
- 데이터 최신성 문제 (캐시에 오래된 값이 남아있을 수 있음)
- 사용자별 맞춤 데이터에는 사용하기 어려움 (예: 로그인 정보)
- 캐시 무효화 전략 필요 (TTL, 만료시간 설정)
'개발 > 💻 CS 지식' 카테고리의 다른 글
| [ 빅데이터응용 ] Chapter2. PHP (1) | 2025.09.29 |
|---|---|
| [ 소프트웨어공학 ] 소프트웨어 프로세스 : 소프트웨어 프로세스 모델과 소프트웨어 프로세스 활동 (0) | 2025.09.19 |
| [ 컴퓨터구조 ] Chapter1. CPU Performance - Execution Time, CPU Clock, CPI (0) | 2025.09.18 |
| 🍇 [ 컴퓨터 그래픽스 ] Vectors (0) | 2025.09.11 |
| [ 컴퓨터구조 ] Chapter1 : Computer Abstractions and Technology (1) | 2025.09.11 |