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