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{
}
}
위와 같이 작성됨