Web/Java+Spring

Servlet

WakaraNai 2021. 5. 5. 19:59
728x90
반응형

Java Web Application

WAS에 설치(deploy)되어 동작한느 어플리케이션

html, css, 이미지, 자바로 작성된 클래스 (Servlet, package, interface 등)와 각종 설정 파일 등이 포함됨.

 

이런 웹 어플리케이션은 혼자서 동작하지 않고 WAS에 의해서 동작함.

다른 프레임워크, 미들웨어 등을 이용하며 규칙을 지켜서 사용해야 함.

Java Web Applicatoin의 디렉토리 구조는 다음과 같음. 이 구조를 지키면서 진행해야 함.

 

 

WEB-INF 폴더 속 web.xml 파일 : 웹 어플리케이션에 대한 정보를 가지고 있음.

그 아래의 lib 폴더 : 각종 자료 파일들을 넎는 곳

그 아래의 class 폴더 : 방금 작성한 Servlet이 들어가는 곳

 

어노테이션은, @WebServlet("/HelloServlet") 입니다.

 

 

 

+) 곁다리

work-space 폴더의 .metadata -> .plugins -> org.eclipse.wst.server.core -> tmp0

여기서 이클립스가 tomcat과 유사한 구조를 해두고 그 기능을 이용하고 있음

 

Servlet

  1. 자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할
    1. 사용자의 요청에 따라 변화가 필요한 경우 동적인 페이지가 필요합니다.
    2. 제공한 정보만 보게 하면 정적인 페이지,
    3. 실시간으로 정보를 주고받는 채팅, 댓글 등은 동적인 페이지로 구성해야 합니다.
  1. 서블릿을 정의해보면,
    1. 서블릿(servlet)은 WAS에 동작하는 JAVA 클래스입니다.
    2. 서블릿은 HttpServlet 클래스를 상속받아야 합니다.
    3. 서블릿과 JSP로부터 최상의 결과를 얻으려면, 웹 페이지를 개발할 때 이 두 가지(JSP, 서블릿)를 조화롭게 사용해야 합니다.
      1. 예를 들어, 웹 페이지를 구성하는 화면(HTML)은 JSP로 표현하고, 복잡한 프로그래밍은 서블릿으로 구현합니다.

www.boostcourse.org/web316/lecture/16686/?isDesc=false

 

웹 프로그래밍(풀스택)

부스트코스 무료 강의

www.boostcourse.org

 

 

Servlet 작성 방법

웹 개발 시 servlet을 직접 써서 개발하지 않고 프레임워크를 사용하는 경우가 더 많습니다.

그러나 그 프레임워크도 servlet을 바탕으로 동작하기에

survlet의 기본적인 작성법, 라이프 사이클을 이해한다면 웹의 동작을 이해하는데 많은 도움이 됩니다.

 

 

 

 

 

Servlet 3.0 이상에서 사용하는 법

 

1. Servlet 3.1 파일 생성

File -> New -> Dynamic Web Project

-> 프로젝트 이름은 exam31으로, Dynamic web module version은 3.1로 설정

-> Next -> Next

 

-> 체크박스 선택하기: 자동으로 web.xml 파일 생성 -> Finish

survlet을 web.xml에 직접 등록하지 않고 어노테이션을 쓰긴 하지만 Spring에서는 꼭 필요하기에 체크해두세요.

 

 

 

 

 

2. Servlet class 생성

 

exam31 프로젝트 우클릭 -> java package는 exam으로, class name은 OneToTenServlet으로 -> Next

URL을 Servlet 클래스 파일 이름과 동일하게 하지 않도록 하려면

URL mappings에서 클릭하여 Edit -> /원하는 이름 -> OK -> Next

 

-> doGet() 메소드만 체크표시 해두기! -> Finish

 

 

 

3. 코드 작성 후 Run on Server

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 OneToTenServlet
 */
 
// 어노테이션 -> url 속 지정한 이름을 바꾸고 싶다면 
// "/ten"의 ten을 다른 이름으로 적은 뒤 Run on Server
@WebServlet("/ten")
public class OneToTenServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public OneToTenServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		// 요청이 왔을 때 이 프로그램이 실행되어 코드를 생성하여 응답
		// 응답으로 돌려줘야 할 때는 response 객체를 이용
		// 클라이언트는 브라우저. 브라우저에게 지금 보내는 내용이 텍스트인지, 이미지인지, 동영상인지 알려주어야 함
		response.setContentType("text/html; charset=UTF-8");
		// 전달할 통로를 만듦
		PrintWriter out = response.getWriter();
		// 보낼 내용을 작성
		out.println("<h1>1-10까지 출력하기</h1>");
		for(int i=1; i<=10; i++) {
			out.println(i+"<br>");
		}
		out.close();
		
	}

}

 

 

4. 성공

url이 /프로젝트이름/지정한이름 으로 뜨는 것도 확인하세요.

지정한 이름을 수정하고 싶다면 어노테이션 안의 글자를 수정해주면 됩니다.

 

Servlet 3.0 미만에서 사용하는 법

File -> New -> Dynamic Web Project

-> 프로젝트 이름은 exam25으로, Dynamic web module version은 2.5로 설정

-> Next -> Next

-> 체크박스 선택하기: 자동으로 web.xml 파일 생성 -> Finish

 

 

web.xml 파일 확인하기

프로젝트 이름 -> src -> main -> webapp -> WEB-INF -> web.xml

 

 

하단의 Source 탭을 클릭하면 xml 파일 속 소스를 볼 수 있습니다.

 

혹시 이런 에러가 뜬다면

xsi:schemaLocation에서 두 url 사이에 세미콜론(;)을 적어주자... 

 

 

2. Servlet class 생성

 

exam31 프로젝트 우클릭 -> java package는 exam으로, class name은 OneToTenServlet으로 -> Next

-> doGet() 메소드만 체크표시 해두기! -> Finish

 

그 다음에 다시 web.xml 파일을 확인하자

아래와 같은 에러가 뜬다면... 아까 전 그곳에 세미콜론 뒤의 스페이스바 공백을 삭제해두자...

 

 

이제 xml 파일에 추가된 내용을 확인하자

web.xml이 알아야 하는 정보 중에서는

클라이언트가 url-pattern 속 url로 요청하면

servlet-name이 같은 survlet-class을 찾아서 그 클래스 파일을 실행시켜줍니다.

 

 

 

3.0 이상에서 url을 바꾸려면 어노테이션을,

3.0 미만에서는 web.xml 파일의 url-pattern에서 바꿔줘야 합니다.

 

 

 

3. 코드 작성 후 Run on Server -> 성공

728x90
반응형

'Web > Java+Spring' 카테고리의 다른 글

Request, Response  (0) 2021.05.06
Servlet의 Life Cycle  (0) 2021.05.05
JAVA 웹 어플리케이션 (HttpServlet) 컴파일 및 실행  (0) 2021.05.05
Apache Tomcat WAS 설치  (0) 2021.05.05
백엔드 Eclipse 설치 (for Enterprise and Web)  (0) 2021.05.05