자바 웹 어플리케이션(Java Web Application)
WAS에 설치(deploy)되어 동작하는 어플리케이션입니다.
자바 웹 어플리케이션에는 HTML, CSS, 이미지, 자바로 작성된 클래스(Servlet도 포함됨, package, 인터페이스 등), 각종 설정 파일 등이 포함됩니다.
자바 웹 어플리케이션의 폴더 구조
- WAS, 미들웨어, framework등을 사용할 때는 약속들이 정해져있다.
따라서, 위와 같은 폴더 구조를 반드시 지켜야한다. - web.xml(배포 기술자) : 웹 애플리케이션의 정보를 가지고 있음
- *) cmd창에서 tree /F 명령어로 트리구조 확인 가능
서블릿이란?
자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할입니다.
서블릿을 정의해보면 서블릿(servlet)은 WAS에 동작하는 JAVA 클래스입니다.
서블릿은 HttpServlet 클래스를 상속받아야 합니다.
서블릿과 JSP로부터 최상의 결과를 얻으려면, 웹 페이지를 개발할 때 이 두 가지(JSP, 서블릿)를 조화롭게 사용해야 합니다.
예를 들어, 웹 페이지를 구성하는 화면(HTML)은 JSP로 표현하고, 복잡한 프로그래밍은 서블릿으로 구현합니다.
서블릿 : 동적으로 응답 결과를 만들어내는 것
-> 요청이 들어왔을 때 서블릿이 실행되면서 응답할 코드를 만들어내고, 그 때 그 코드로 응답을 함
현재 프로젝트에서 웹을 개발할 때 서블릿을 직접 써서 개발하지는 않습니다.
조금 더 편하게 사용할 수 있게 도와주는 다양한 프레임워크를 사용해서 개발하는 경우가 더 많습니다.
하지만, 그 프레임워크들도 서블릿이 없이는 동작할 수 없기 때문에 서블릿의 기본적인 작성법이나, 서블릿의
라이프 사이클을 이해하고 있다면 웹의 동작을 이해하는 데 많은 도움이 됩니다.
버전에 따른 Servlet 작성 방법
1. Servlet 3.0 spec 이상에서 사용하는 방법
- web.xml 파일을 사용하지 않습니다.
- 자바 어노테이션(annotation)을 사용합니다.
package examples;
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();
}
}
2. Servlet 3.0 spec미만에서 사용하는 방법
- servlet을 등록할 때 web.xml 파일에 등록합니다.
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>exam25</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>TenServlet</display-name>
<servlet-name>TenServlet</servlet-name>
<servlet-class>exam.TenServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TenServlet</servlet-name>
<url-pattern>/ttt</url-pattern>
</servlet-mapping>
</web-app>
- 클라이언트가 url-pattern에 맞게 요청을 하게 되면, servlet-name이 같은 servlet을 찾아서 servlet-class에 맵핑된 class를 실행
- 만약 찾지 못하면 404 페이지 응답
∴ 서블릿을 반드시 등록해야 찾아서 실행시킬 수 있다
생각해보기
- 동적인 페이지가 필요한 경우는 어떤 것일까요?
동적 페이지 : 사용자 요청에 따라 동작하는 페이지
출처 Boostcourse - 5-1) Servlet 이란?
출처 Boostcourse - 5-2) Servlet 작성 방법-1
출처 Boostcourse - 5-2) Servlet 작성 방법-2
출처 Boostcourse - 5-2) Servlet 작성 방법-3
'TIL > 웹 프로그래밍(풀스택) - boostcourse' 카테고리의 다른 글
5-4) Request, Response 객체 이해하기-1 (0) | 2021.01.03 |
---|---|
5-3) Servlet 라이프 싸이클-1 (0) | 2021.01.02 |
4-6) HelloWorld 서블릿 컴파일 및 실행하기-1 (0) | 2021.01.01 |
4-5) Tomcat 다운받기 및 설치하기 (0) | 2021.01.01 |
4-4) HelloWorld 컴파일하고 실행하기 (0) | 2021.01.01 |
댓글