정보처리기사 실기 — 08 서버 프로그램 구현 정리
NCS·교재에서 통상 「Ⅵ. 서버 프로그램 구현」 또는 6장 서버 프로그램 구현으로 묶이는 범위입니다. 5장 인터페이스 구현이 연계 모듈·검증·테스트에 가깝다면, 6장은 웹·애플리케이션 서버 위에서 동작하는 비즈니스 로직, 요청·응답 처리, MVC·프레임워크, 세션·보안(서버 측) 등 서버 측 프로그램 자체에 초점이 맞춰집니다. 실기에서는 HTTP·서블릿·JSP·Spring(MVC·DI)·REST가 단답·용어·개념 서술로 자주 나옵니다.
1. 이 단원이 다루는 것
| 소단원(일반적 구성) | 핵심 키워드 |
|---|---|
| 개발 환경·구성 | JDK, WAS(Web Application Server), 톰캣, 배포 구조(WEB-INF, web.xml 개념) |
| HTTP·웹 기초 | 무상태(Stateless), 메서드, 상태 코드, 헤더·바디 |
| 서블릿·JSP | 라이프사이클, HttpServletRequest / Response, forward vs redirect, 스코프 |
| 아키텍처 | MVC, 3계층(3-Tier), DAO·Service·Controller 역할 구분 |
| 프레임워크 | Spring IoC/DI, Spring MVC, @Controller, Spring Boot(내장 서버) |
| API 스타일 | REST, 리소스·URI, JSON 응답, HTTP 메서드와 CRUD 대응 |
| 상태·보안 | 세션 vs 쿠키, 서버 측 검증, CSRF·XSS 개념(교재 수준) |
2. 5장과의 역할 나누기
| 구분 | 인터페이스 구현(5장) | 서버 프로그램 구현(6장) |
|---|---|---|
| 관심사 | 연계 모듈, 송수신 검증, 스텁·드라이버, 통합 테스트 | 웹 요청 처리, 화면·API 흐름 제어, 도메인 로직 위치, 프레임워크 활용 |
| 산출물 예 | 연계 프로그램, 검증 규칙, 테스트 케이스 | 컨트롤러·서비스·DAO, JSP/뷰 템플릿, REST API 설계 |
두 장 모두 “서버에서 돌아가는 코드”이지만, 시험에서는 5장 = 연계·검증·테스트 용어, 6장 = HTTP·서블릿·Spring·MVC·REST로 나누어 묻는 경우가 많습니다.
3. 클라이언트-서버와 멀티티어
| 용어 | 시험용 한 줄 |
|---|---|
| 클라이언트 | 서비스를 요청하는 쪽(브라우저, 모바일 앱, 다른 시스템의 HTTP 클라이언트 등) |
| 서버 | 요청을 받아 처리·응답하는 쪽(WAS, 웹 서버 + 애플리케이션 등) |
| 2-Tier | 클라이언트가 DB 등에 직접 가까이 붙는 구조(단순하나 확장·보안에 한계) |
| 3-Tier(3계층) | 표현(Presentation) — 업무 로직(Application) — 데이터(Data) 로 물리·논리적 분리 |
3계층 예시(교재식): 화면(JSP/프론트) ↔ 비즈니스 로직(Service) ↔ 데이터 접근(DAO + DB). 시험에서는 “화면에 SQL을 직접 넣지 않고 DAO로 분리하는 이유”가 유지보수·재사용·보안으로 서술되는 패턴이 흔합니다.
4. HTTP 핵심
HTTP는 기본적으로 무상태(Stateless): 각 요청이 이전 요청과 연결되지 않음 → 로그인 유지 등은 쿠키·세션·토큰 등으로 보완.
메서드(실기에서 자주 등장)
| 메서드 | 용도(요지) |
|---|---|
| GET | 조회, 캐시 가능, 멱등 — URL에 쿼리스트링 |
| POST | 생성·처리, 요청 본문에 데이터 — 폼 전송·등록 API |
| PUT | 전체 치환 성격의 수정(REST에서 자주) |
| PATCH | 일부 수정 |
| DELETE | 삭제 |
상태 코드(대분류만 암기)
| 구간 | 의미 |
|---|---|
| 2xx | 성공 (200 OK, 201 Created 등) |
| 3xx | 리다이렉션 (302 등) |
| 4xx | 클라이언트 오류 (404 Not Found, 400 Bad Request 등) |
| 5xx | 서버 오류 (500 Internal Server Error 등) |
5. 서블릿(Servlet)
정의: 자바로 작성된 서버 측 프로그램으로, HTTP 요청을 받아 동적 응답을 생성합니다. WAS(톰캣 등) 위에서 동작합니다.
라이프사이클(순서 암기)
- 로딩·인스턴스 생성 — 컨테이너가 클래스 로드 후 객체 생성
init()— 최초 1회 초기화service()→doGet()/doPost()… — 요청마다 호출destroy()— 서블릿 제거 시 정리
멀티스레드 주의(단답·서술)
- 컨테이너는 서블릿 인스턴스를 보통 하나만 두고 요청마다 스레드로
doGet/doPost를 호출합니다. - 따라서 인스턴스 변수에 요청별 데이터를 넣으면 스레드 간 경합이 생깁니다. 요청 단위 데이터는
HttpServletRequest속성 등으로 다루는 것이 안전합니다.
forward vs redirect
| 방식 | 브라우저 URL | 특징 |
|---|---|---|
| forward | 그대로 | 서버 내부 위임 — 같은 요청 범위에서 JSP 등으로 넘김, request 속성 공유 |
| redirect | 변경 | 302 등으로 클라이언트에 새 요청 유도 — 이전 요청 스코프와 분리되는 경우가 많음 |
6. JSP(JavaServer Pages)
역할: HTML에 동적 부분을 끼워 넣어 응답을 만드는 뷰(View) 기술. 최근 교재·시험은 서블릿만으로 응답보다 MVC에서 JSP = 뷰 조합을 많이 설명합니다.
| 요소(이름만) | 요지 |
|---|---|
스크립틀릿 <% %> |
자바 코드 삽입(과도 사용은 유지보수 불리) |
표현식 <%= %> |
값 출력 |
지시자 <%@ %> |
페이지 속성·import 등 |
액션 <jsp:useBean> 등 |
빈 사용·포워드 등(교재별) |
스코프: page, request, session, application — 어느 스코프에 저장했는지에 따라 공유 범위가 달라집니다.
7. MVC 패턴
| 구성요소 | 책임(한 줄) |
|---|---|
| Model | 데이터·비즈니스 규칙(엔티티, 서비스, DAO가 여기에 해당하는 교재도 많음) |
| View | 화면 표현(JSP, Thymeleaf, JSON 응답 바디 등) |
| Controller | 요청 분기·입력 검증 호출·모델 조회 후 뷰 선택 |
장점: 관심사 분리로 유지보수·테스트·재사용에 유리하다는 서술이 빈출입니다.
8. Spring Framework (요약)
IoC / DI
| 용어 | 의미 |
|---|---|
| IoC(Inversion of Control) | 객체 생성·연결의 제어를 개발자가 아니라 컨테이너가 맡음 |
| DI(Dependency Injection) | 필요한 객체를 생성자·세터·필드 등으로 주입 |
효과: 결합도 완화, 단위 테스트 시 Mock 주입 용이 등이 시험용 답변으로 자주 나옵니다.
Spring MVC (웹)
@Controller/@RestController: 웹 요청 처리 클래스 표시(@RestController= 응답 본문에 데이터 직접 — JSON API에 많이 사용)@RequestMapping계열: URL·HTTP 메서드 매핑(@GetMapping,@PostMapping등)- View Resolver: 컨트롤러가 반환한 논리 뷰 이름 → 실제 JSP 경로 등으로 해석
Spring Boot
- 설정 최소화, 내장 톰캣(임베디드 서버) 로 단독 실행 가능한 JAR — “개발·배포 간소화”가 문제 포인트가 될 수 있습니다.
9. RESTful API (서버 구현 관점)
REST: 자원을 URI로 식별하고, HTTP 메서드로 의미를 표현하는 스타일(완전한 REST 논쟁은 시험 범위 밖).
| 연산 | HTTP | URI 예시(개념) |
|---|---|---|
| 목록 조회 | GET | /api/users |
| 단건 조회 | GET | /api/users/{id} |
| 생성 | POST | /api/users |
| 수정 | PUT 또는 PATCH | /api/users/{id} |
| 삭제 | DELETE | /api/users/{id} |
응답 형식: JSON이 일반적 — 직렬화(객체→JSON)는 3·4·5장의 “교환 형식”과 같은 맥락입니다.
10. 세션(Session)과 쿠키(Cookie)
| 구분 | 저장 위치 | 특징(시험용) |
|---|---|---|
| 쿠키 | 클라이언트(브라우저) | 용량·보안 한계, 만료·도메인 설정, 세션 ID 저장 등에 사용 |
| 세션 | 서버(메모리·스토어) | 서버에 상태 저장, 세션 ID로 클라이언트 매핑, 타임아웃 설정 |
보안: 쿠키에 민감정보를 평문으로 넣지 않기, HttpOnly, HTTPS 등은 “개념 인지” 수준으로 교재에 나옵니다.
11. 서버 측 검증·보안(교재 수준)
- 입력 검증: 5장의 검증과 동일하게, 클라이언트 검증만으로는 부족하고 서버에서 반드시 재검증
- XSS: 출력 시 이스케이프, 신뢰할 수 없는 HTML 삽입 주의
- CSRF: 폼 토큰, SameSite 쿠키 등으로 위조 요청 완화(용어·목적 수준)
- SQL Injection: 3장과 연결 — PreparedStatement·바인딩
12. 기타 용어(선택 복습)
| 용어 | 한 줄 |
|---|---|
| WAS | 서블릿·JSP 등 웹 애플리케이션 실행 환경 제공 |
| 웹 서버(Apache, Nginx 등) | 정적 리소스·리버스 프록시; WAS와 분리 또는 연동 구성이 많음 |
| 필터(Filter) | 요청·응답 전후 공통 처리(인코딩, 로깅, 인증 등) — 서블릿 스펙 |
| 리스너(Listener) | 컨텍스트·세션 생성·소멸 이벤트 처리 |
13. 시험 직전 체크리스트
- 3-Tier 각 계층 역할 한 줄씩
- HTTP 무상태 의미, GET vs POST 구분
- 상태 코드 2xx / 4xx / 5xx 대분류
- 서블릿 init → service(doGet/doPost) → destroy 흐름
- 서블릿 멀티스레드·인스턴스 변수 주의
- forward vs redirect (URL·요청 범위)
- JSP 스코프: page / request / session / application
- MVC 각 역할
- IoC / DI 정의
-
@Controllervs@RestController차이(개념) - REST에서 HTTP 메서드와 CRUD 대응
- 세션 vs 쿠키 저장 위치·용도
14. 이 저장소의 관련 자료
info/정보처리기사-실기-03-데이터-입출력-구현-정리.md— JDBC, SQL Injection, JSON·파일 입출력info/정보처리기사-실기-04-통합구현-정리.md— REST·SOAP·HTTP 메서드 개념info/정보처리기사-실기-05-인터페이스-구현-정리.md— 검증·스텁·드라이버(서버 모듈 테스트 맥락)info/정보처리기사-실기-IT용어-100문제-3탄.md— 서블릿, 세션, AJAX, 무상태 프로토콜 등
본 문서는 NCS·일반 교재 구성을 바탕으로 학습용으로 정리한 것이며, 시험 공고·출제 범위는 매년 한국산업인력공단 공식 안내를 확인하세요.
'BackEnd > 정보처리기사' 카테고리의 다른 글
| 정보처리기사 실기 — 10 애플리케이션 테스트 관리 정리 (0) | 2026.04.28 |
|---|---|
| 정보처리기사 실기 — 09 소프트웨어 개발 보안 구축 정리 (1) | 2026.04.27 |
| 정보처리기사 실기 - 07. SQL 응용 정리 (1) | 2026.04.25 |
| 정보처리기사 실기 — 06 프로그래밍 언어 활용 정리 (0) | 2026.04.24 |
| 정보처리기사 실기 — 05 인터페이스 구현 정리 (1) | 2026.04.22 |