Java

Servlet, JSP

KJihun 2025. 4. 2. 11:05
728x90

서블릿(Servlet)

자바에서 웹 애플리케이션을 개발하기 위한 클래스

웹 서버(WAS, tomcat)와 연동되어 클라이언트(브라우저)의 요청을 받아 동적으로 응답을 생성

보통 HttpServlet을 상속(extends) 받아 사용한다.

 

✅ 주요 객체

  • HttpServletRequest request
    클라이언트의 요청 정보를 담고 있는 객체. 서버가 요청을 객체로 생성
  • HttpServletResponse response
    서버가 클라이언트에게 응답을 보낼 때 사용하는 객체. 서버가 요청을 객체로 생성

✅ Servlet vs JSP

  • Servlet
    • 자바 코드로 웹 로직을 처리하기에 적합
    • UI 구성의 어려움 (HTML 작성이 복잡함)
    • 이후 JSP 출현
  • JSP (Java Server Pages)
    • HTML에 자바 코드를 삽입해 UI를 쉽게 구성
    • 복잡한 비즈니스 로직 처리에는 적합하지 않음

Servlet + JSP를 함께 사용하여,로직(Servlet)과 UI(JSP)를 분리하는 방식이 일반적이다

 

servlet 흐름

1. 주소창 : http:// localhost:8090/simple 입력 시, web.xml을 참조한다

 

2. web.xml

<servlet>
	<servlet-name>simplecontoller</servlet-name>
    <servlet-class>com.SompleContoller</servlet-class>	// com 폴더에 있는 SompleContoller 호출
</servlet>
	<servlet-mapping>
    	<servlet-name>simplecontoller</servlet-name>
        <url-pattern>/simple</url-pattern>
    </servlet-mapping>
  • web.xml 에 설정된 servlet-mapping을 근거로 요청이 오면 해당 servlet 파일컴파일후 실행
  • get, post는 자동 실행

 

3. servlet

@WebServlet("/Simple")
public class SimpleContoller extends HttpServlet {
	...
	
    // 클라이언트의 요청이 Post일 경우 자동실행
    protected void doGet() {
    ...
    }
    
    
    
    
 	// 클라이언트의 요청이 Get일 경우 자동실행
    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    
    // 1. 한글로 변환
    // 2. 데이터 받기
    // 3. 데이터 가공
    // 4. 결과 저장(session, request ...)
    
    // 5. 뷰 지정
		    // getRequestDispatcher : view Page 지정
	RequestDispatcher dis = request.getRequestDispatcher("/simpleview.jsp");
    }
    // 6. view 에게 forward 방식 전달
    	   //Request, response 객체 주소값을 forward 로 전달 
	 dis.forward(request, response); 
}

 

4. JSP

...
<body>
	<%= request.getContextPath() %>
    <a href="<%=request.getContextPath()%>">


</body>

 

 

Model = Java

View = JSP

Controller = Servlet

 

 

 

 

요즘 기술은 아니지만 리팩토링 할 때에 사용하게 될 수 있으므로 알아둘 것

 

'Java' 카테고리의 다른 글

HttpSession(서버 세션)  (0) 2025.04.03
Comparable VS Comparator  (0) 2025.03.02
[Java] Stream  (0) 2023.06.21
오버로딩(Overloading)과 오버라이딩(Overriding)  (0) 2023.06.09
모던 자바 알아보기(람다, 스트림, Optional)  (0) 2023.05.30