자바 기반의 웹 애플리케이션을 개발하기 위한 서버측 프로그램.
클라이언트 요청을 처리하고 동적인 웹 페이지를 생성하는 역할.
HTTP 요청/응답을 직접 다룰 수 있음.
HTML 내에 Java 코드를 삽입할 수 있는 웹 기술.
서블릿보다 코드가 간결하여 유지보수가 용이함.
최종적으로 서블릿으로 변환되어 실행됨.
web.xml에서 서블릿과 URL을 연결하거나 @WebServlet("/url") 어노테이션을 사용하여 매핑 가능.
예시:
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
HttpServletRequest : 클라이언트 요청 정보를 담음.
HttpServletResponse : 서버의 응답을 처리.
ServletContext : 애플리케이션 전체에서 공유되는 정보.
HttpSession : 클라이언트의 세션 정보를 관리.
request, response, session, application, out 등.
예시: request.getParameter("username");
클라이언트가 새로운 요청을 하도록 유도.
예시:
response.sendRedirect("index.jsp");
서버에서 내부적으로 JSP나 서블릿으로 이동 가능.
예시:
RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");
dispatcher.forward(request, response);
클라이언트(브라우저)에 저장되는 작은 데이터 조각.
만료 기간을 설정하여 지속적으로 활용 가능.
예시:
Cookie cookie = new Cookie("user", "John");
cookie.setMaxAge(60 * 60 * 24); // 1일
response.addCookie(cookie);
서버에서 관리하는 클라이언트 정보 저장소.
브라우저가 닫히거나 일정 시간이 지나면 만료.
예시:
HttpSession session = request.getSession();
session.setAttribute("username", "John");
<c:forEach> : 반복문
<c:if> : 조건문
<c:choose> : 다중 조건문
<c:set> : 변수 설정
<c:out> : 값 출력
${param.name} : 요청 파라미터
${sessionScope.username} : 세션 변수
${applicationScope.value} : 애플리케이션 변수
데이터를 URL에 포함하여 요청.
보안에 취약하지만 간단한 데이터 전송에 유용.
예시: GET /products?category=books&price=100
데이터를 본문에 포함하여 전송.
보안이 필요할 때 사용.
예시:
<form action="/submit" method="POST">
<input type="text" name="username">
<button type="submit">Submit</button>
</form>
날짜 관련: NOW(), DATE_ADD(), DATE_SUB()
문자열: CONCAT(), SUBSTRING(), LENGTH()
집계: SUM(), AVG(), COUNT()
WHERE 절에서 다른 쿼리의 결과를 조건으로 사용.
예시:
SELECT name FROM employees WHERE dept_id = (SELECT dept_id FROM departments WHERE name = 'HR');
INNER JOIN: 일치하는 데이터만 결합.
LEFT JOIN: 왼쪽 테이블의 모든 데이터와 일치하는 오른쪽 테이블 데이터 결합.
RIGHT JOIN: 오른쪽 테이블의 모든 데이터와 일치하는 왼쪽 테이블 데이터 결합.
FULL JOIN: 두 테이블의 모든 데이터 결합.
Java에서 DB와 연동할 수 있도록 제공되는 API.
Connection, Statement, PreparedStatement, ResultSet 등의 객체 사용.
DriverManager.getConnection(url, user, password); : DB 연결
stmt.executeQuery(sql); : SELECT 실행
stmt.executeUpdate(sql); : INSERT, UPDATE, DELETE 실행
ERD(Entity Relationship Diagram) 등으로 DB 구조를 설계하는 과정.
정규화(Normalization) 과정을 거쳐 데이터 중복을 최소화.
예시:
1NF: 중복 제거
2NF: 부분 함수 종속 제거
3NF: 이행적 함수 종속 제거
init() : 서블릿 초기화 (한 번 실행)
service() : 요청이 들어올 때마다 실행
doGet() / doPost() : HTTP 요청에 따라 실행
destroy() : 서블릿 종료 시 호출