Servlet 서블릿
- 동적 웹어플리케이션 컴포넌트
- 클라이언트의 요청에 동적으로 작동하고 응답은 HTML을 이용
- java 확장자, java thread를 이용하여 동작
- MVC 패턴에서 Controller로 이용됨
서블릿 맵핑
- 지정된 url을 통해 맵핑 처리를 진행
- 맵핑한 url로 요청이 들어왔을 때, 특정 서블릿 객체를 생성해서 컴파일을 진행하고
- 요청에 대한 응답을 보내주는 방식을 사용
- 또한 서버 내부 경로가 노출되어 보안에 위험이 생기는 것을 방지
서블릿 애플리케이션 작성법
- extends HttpServlet
- @WebServlet(”/쿼리스트링”) : 어노테이션, 클래스 선언부 바로 위에 작성
- service 메서드 오버라이딩
- req, resp 로 요청 처리
- PrintWriter, w.write으로 html 코드 직접 작성해서 응답 메시지 작성

HTTP Request 방식의 종류
- HTTP(request)는 다양한 방식(Method)을 지원
- HTTP request 방식은 GET, POST, PUT, DELETE, PATCH 등이 있음
- GET 방식
- 서버에 데이터를 요청하는 용도
- 전송하는 데이터가 URL에 노출됨
- 전송했던 데이터는 브라우저의 히스토리에 접속했던 주소와 함께 남아있어 보안성에 취약함
- 서버의 정보를 가져올 필요성이 있을 때 사용
- 전송 최대 크기는 브라우저별로 다르지만 정해져 있음 (IE=2048byte)
- HTML form 태그가 반드시 필요하지는 않음
- POST 방식
- 서버에 데이터를 전송하는 용도
- 전송되는 데이터는 전송 객체의 메시지 바디를 통해 전달됨
- 브라우저에 전달되는 데이터가 남지 않기 때문에 보안성에 강함
- 비밀번호나 주민번호 등 private한 데이터를 전송할 때 사용
- 반드시 TML form 태그가 필요
- 데이터 양의 제한이 없기 때문에 대량의 데이터를 전송할 수 있음
** 영문이나 숫자는 괜찮지만 한글이나 타 언어를 전송할 때는 인코딩 과정이 필요
JSP Java Server Pages
- 동적 웹어플리케이션 컴포넌트
- 클라이언트의 요청에 동적으로 작동하고 응답은 HTML을 이용
- jsp 확장자, 웹서버와 통신 시 자동으로 Servlet으로 변환됨
- MVC 패턴에서 View로 이용됨
JSP 파일을 실행했을 때 처리 순서
- JSP 파일을 실행하면 웹 서버에서 일단 JSP 파일을 Java 코드로 변환
- 변환 과정에서 작성한 JSP 태그에 따라 코드를 배치
- HTML과 텍스트 등도 전부 자바 코드화
- 그 후 파일을 컴파일 하고 HTML로 응답
EL (표현 언어, Expression Language)
- JSP(JavaServer Pages)에서 사용되는 스크립트 언어로,
변수나 속성에 접근하고 값을 표현하기 위한 간단한 표현 언어 - ${} 형식의 표현식을 사용하여 변수나 속성에 접근하고 값을 표현
<!-- EL을 사용한 예시 -->
<h1>${user.name}님의 정보</h1>
<p>나이: ${user.age}</p>
<p>이메일: ${user.email}</p>
JSTL (JSP Standard Tag Library)
- JSTL은 JSP 페이지에서 자주 사용되는 로직을 태그 형태로 제공하여
JSP 개발을 편리하게 해주는 라이브러리 - JSP 페이지에서 자바 코드를 대체하고 비즈니스 로직과 표현 로직을 분리하여
유지보수성을 향상시킬 수 있는 강력한 기능을 제공
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:out value="출력값">
<c:set var="변수명" value="설정값" scope="범위">
<c:if test="조건식" var="조건 처리 변수명">
<c:forEach items="객체명" begin="시작값" end="끝 값" step="증감식" var="변수명">