1. JSP와 Servlet의 역할과 차이
JSP (Java Server Pages)
- 역할: 웹 애플리케이션에서 화면 처리(View)를 담당.
- 특징:
- HTML과 자바 코드를 혼합하여 작성.
- WAS(Web Application Server)가 JSP를 서블릿으로 변환하여 실행.
- 비즈니스 로직을 최소화하고 화면 구성에 집중.
- 동적으로 데이터를 HTML에 렌더링.
Servlet
- 역할: 비즈니스 로직(Model)을 처리하고 클라이언트 요청(Request)을 응답(Response)으로 변환.
- 특징:
- 순수 자바 코드로 작성되어 HTTP 요청/응답 처리.
- HTML 태그를 자바 코드로 작성해야 하므로 복잡.
- JSP보다 코드 작성이 어렵지만, 정확한 흐름 제어 가능.
- 대체로 JSP와 함께 사용하며 데이터를 전달.
2. 라이프사이클과 객체 관리
Servlet 라이프사이클
init()
: 서블릿 초기화. 애플리케이션이 처음 로드될 때 1회 실행.service()
: 클라이언트 요청 처리.doGet()
,doPost()
와 같은 메서드 호출.destroy()
: 서블릿 종료 시 호출. 자원 해제.
JSP 라이프사이클
- 변환: JSP 파일 → 서블릿(
_jsp.java
)으로 변환. - 컴파일: 서블릿으로 변환된 파일이 컴파일되어
.class
파일 생성. - 실행: 서블릿 형태로 요청 처리.
3. 요청/응답 처리
HTTP 메서드
- GET: 서버에서 데이터를 조회. URL에 파라미터 포함.
- POST: 서버에 데이터를 생성. 보안과 데이터 크기 면에서 GET보다 유리.
- PUT: 데이터를 업데이트.
- DELETE: 데이터를 삭제.
Servlet 메서드
doGet(HttpServletRequest req, HttpServletResponse res)
: GET 요청 처리.doPost(HttpServletRequest req, HttpServletResponse res)
: POST 요청 처리.
요청/응답 객체
HttpServletRequest
:- 클라이언트 요청 데이터 처리.
- 파라미터 가져오기:
req.getParameter("name")
.
HttpServletResponse
:- 클라이언트 응답 처리.
- HTML 출력:
res.getWriter().println("<h1>Hello</h1>")
.
4. JSP와 데이터 전달
JSP에서 데이터 처리 방식
- 스크립틀릿 사용:
<% ... %>
- JSP 안에서 자바 코드를 작성.
- 유지보수성과 가독성이 떨어지므로 사용 지양.
- 표현식 사용:
<%= ... %>
- 데이터를 출력할 때 사용.
<%= user.getName() %>
- 데이터를 출력할 때 사용.
- JSTL (Java Standard Tag Library)
- 자바 코드를 태그로 대체.
- 반복 처리:
<c:forEach>
- 조건 분기:
<c:if>
<c:forEach var="item" items="${items}"> <p>${item.name}</p> </c:forEach>
Servlet과 JSP 간 데이터 전달
setAttribute
와getAttribute
:- 데이터를 JSP에 전달하기 위해 사용.
- 예:
req.setAttribute("user", user); RequestDispatcher dispatcher = req.getRequestDispatcher("user.jsp"); dispatcher.forward(req, res);
5. Scope의 이해
Scope 종류와 용도
- Page: JSP 페이지 내에서만 데이터 유지.
- Request: 요청이 유지되는 동안 데이터 유지. 같은 요청에 포함된 JSP/Servlet에서 공유.
- Session: 사용자 세션이 유지되는 동안 데이터 유지.
- Application: 애플리케이션 전역에서 데이터 유지. 서버가 종료될 때까지 지속.
6. URL 매핑
- URL 패턴과 서블릿 매핑
web.xml
또는 어노테이션(@WebServlet
)으로 설정.- 예:
@WebServlet("/user") public class UserServlet extends HttpServlet { }
7. 에러 처리
HTTP 에러 코드
- 404: 요청한 리소스(URL)를 찾을 수 없음.
- 405: 지원하지 않는 HTTP 메서드.
- 500: 서버 내부 에러.
에러 페이지 설정
web.xml
:<error-page> <error-code>404</error-code> <location>/error404.jsp</location> </error-page>
8. Spring과의 연계
Spring MVC 아키텍처
- Model: 데이터 처리.
- View: 화면 처리(JSP, Thymeleaf).
- Controller: 요청/응답 처리 및 Model-View 연결.
Spring Boot의 역할
- 객체의 생명주기 관리.
- 의존성 주입(Dependency Injection).
- 인증, 로깅, 예외 처리 등 공통 작업 통합.
9. 개발자가 알아야 할 추가 개념
WAS(Web Application Server)
- JSP와 서블릿 실행 환경.
- WAS 역할:
- 요청 처리, 데이터 전송.
- 라이프사이클 관리(
init
,destroy
). - 예: Tomcat, Jetty, WildFly.
배포 구조
- WAR (Web Application Archive):
- JSP/Servlet 파일, 설정 파일(web.xml), 정적 리소스를 포함.
- 배포 시 WAR 파일을 WAS에 업로드.
모범 사례
- JSP에 자바 코드를 최소화.
- 비즈니스 로직은 서블릿 또는 서비스 클래스에서 처리.
- 데이터를 JSP에 전달할 때는
setAttribute
사용. - 유지보수성을 위해 JSTL 및 커스텀 태그 사용.
728x90
'Software Tech > Spring (feat.JAVA)' 카테고리의 다른 글
[Java] Spring 시작하기 (0) | 2025.01.07 |
---|---|
MVC 패턴 (Model-View-Controller) (2) | 2024.11.19 |
멤버변수, 전역변수, 지역변수 (0) | 2024.11.19 |
자식클래스가 부모클래스를 인스턴스로 받을 수 없는 이유 (0) | 2024.11.19 |
Singleton Pattern (싱글톤 패턴) (0) | 2024.10.21 |