WAS에 설치(deploy)되어 동작하는 어플리케이션이다.
HTML, CSS, 이미지, 자바로 작성된 클래스(Servlet도 포함됨, package, 인터페이스 등), 각종 설정 파일 등이 포함
자바 웹 어플리케이션의 폴더 구조
lib폴더안에는 jar파일들을 넣을 수 있다.
classes폴더안에는 java의 package,class들이 들어간다.
자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할
서블릿을 정의해보면 서블릿(servlet)은 WAS에 동작하는 JAVA 클래스다.
서블릿은 HttpServlet 클래스를 상속받아야 합니다.
서블릿과 JSP로부터 최상의 결과를 얻으려면, 웹 페이지를 개발할 때 이 두 가지(JSP, 서블릿)를 조화롭게 사용해야 한다.
예를 들어, 웹 페이지를 구성하는 화면(HTML)은 JSP로 표현하고, 복잡한 프로그래밍은 서블릿으로 구현한다.
1.Servlet 3.0 spec 이상에서 사용하는 방법
web.xml 파일을 사용하지 않는다.
자바 어노테이션(annotation)을 사용
2.Servlet 3.0 spec미만에서 사용하는 방법
servlet을 등록할 때 web.xml 파일에 등록
package exam;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class TenServlet
*/
@WebServlet("/ten")
public class TenServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public TenServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out =response.getWriter();
out.print("<h1>1~10까지 출력</h1>");
for(int i =1; i <= 10; i++) {
out.print(i+"<br>");
}
out.close();
}
}
실행화면
HttpServlet의 3가지 메소드를 오버라이딩
init()
서블릿이 처음 호출되면 init메소드가 호출된다.
service(request, response)
요청이 들어왔을때 응답해야 하는 내용은 service 메소드를 호출한다.
destroy()
웹어플리케이션 갱신 및 WAS가 종료될 때 destroy메소드를 호출한다.
servlet은 서버에 객체를 여러 개 만들지 않는다.
Servlet
WAS는 서블릿 요청을 받으면 해당 서블릿이 메모리에 있는지 확인한다.
if (메모리에 없음) {
해당 서블릿 클래스를 메모리에 올림
init() 메소드를 실행
}
service()메소드를 실행
was가 종료되거나, 웹 어플리케이션이 새롭게 갱신될 경우 destroy() 메소드가 실행됩니다.
HttpServlet의 service메소드는 템플릿 메소드 패턴으로 구현한다.
클라이언트의 요청이 GET일 경우에는 자신이 가지고 있는 doGet(request, response)메소드를 호출
클라이언트의 요청이 Post일 경우에는 자신이 가지고 있는 doPost(request, response)를 호출
WAS는 웹 브라우저로부터 Servlet요청을 받으면,