Java 및 JSP

[Servlet] Java 서블릿

jane.dev 2021. 8. 9. 23:05
반응형
클라이언트 요청이 들어오면 서버에서는 서블릿 컨테이너를 만들어 서블릿을 관리하고
요청이 있을 때, 스레드와 서블릿 객체를 생성하여 처리하고 그 결과를 다시 클라이언트에게 전송하는
서블릿 클래스의 구현 규칙을 지킨 자바 프로그램 

 

여기에서의 서블릿 컨테이너는 톰캣이고, 톰캣은 웹서버와 연동하여 실행할 수 있는 자바 환경을 제공

JSP와의 차이점은 JSP는 HTML 문서 안에 Java 코드를 포함하고 있다면, 서블릿은 Java 코드 안에 HTML을 포함

 

서블릿의 생명주기(Life Cycle)

서블릿은 최초 요청 시 객체가 만들어져 메모리에 로딩되면, 이후 추가 요청시에는 기존 객체를 재활용하여 비교적 동작속도가 빠름

1. 서블릿 객체 생성(최초 한 번 실행)

2. init() 메서드 호출(최초 한 번 실행)

3. doGet(), doPost(), service() 메서드 호출(요청 시 매번 실행)

4. destroy() 메서드 호출(마지막 한 번 실행)

 

 

서블릿 생성

1. 프로젝트 아래 WEB-INF > lib > .jar파일 작성

 

2. Connection Pool 설정 Eclipse > Servers > context.xml 수정

<Resource
auth="Container"
driverClassName = "com.mysql.cj.jdbc.Driver"	// "Class.forName()"; 역할
url = "jdbc:mysql://localhost:3306/ict"
username = ""					// DB id
password = ""					// DB pw
name = "jdbc/mysql"				// jdbc/~ 
type = "javax.sql.DataSource"
maxActive = "300"				// 동시 사용가능한 커넥션 수	
maxWait = "1000" />				// 새로운 커넥션을 얻기위해 대기하는 시간

 

3. 프로젝트 생성

Dynamic Web Project 생성 > 프로젝트 내부 Java Resources에 패키지 생성 > New > Servlet

> Class name 작성 > Next > URL Mapping 로 경로 설정 > Next > 기본 체크박스에서 init, destroy 추가로 체크하면

package com.tistory.weyw;
import java.io.IOException;
import javax.servlet.*;

// 주소의 슬래시(/)에는 "호스트명:포트넘버"가 담겨있음
@WebServlet("/주소");
public class servletBasic extends HttpServlet{
	private static final long serialVersionUID = 1L;
    
    // 서블릿 객체 생성 - 생성자는 한 번 호출됨
    public servletBasic(){
    	super();
    }
    
    // 요청이 들어오면 처음에 실행할 로직을 작성
    // 서블릿 객체 생성시 Web과 해당 서블릿을 연결하기 위해 한 번 자동 호출됨
    public void init(ServletConfig config) throws ServletException{
    }
    
    // 서블릿 객체가 메모리에서 삭제될 때 한 번 호출됨
    public void destroy(){
    }
    
    public void doGet(HttpServletRequest request, HttpServletResponse reponse) throws ServletException, IOException{
    }
    
    public void doPost(HttpServletRequest request, HttpServletResponse reponse) throws ServletException, IOException{
    }
}

위와 같이 작성됨