[1] 강의
웹 프로그래밍(풀스택)
5. Servlet - BE
2) Servlet 작성 방법-3
[2] 개념 정리
HttpServlet : HttpServlet 클래스에서 사용자 요청을 처리하는 doGet/doPost 메서드는 모두 HttpServletRequest와 HttpServletResponse 객체를 매개변수로 가지고 있다. HttpServletRequest와 HttpServletResponse 객체는 서블릿과 클라이언트 사이를 연결해주는 중요한 객체들이다.
web.xml : web application의 설정을 위한 deployment descriptor(배포 설명자) 로서 XML 형식의 파일 모든 Web application은 반드시 하나의 web.xml 파일을 가져야되고 위치는 WEB-INF 폴더 아래에 있다.
[3] 강의 정리
이번 실습에서는 Servlet 3.0 미만의 spec에서 사용하는 서블릿 작성 방법에 대해서 살펴보도록 하겠다. 이번 실습에서 할 내용은 Servlet 2.5 spec으로 exam 25라는 프로젝트를 하나 생성할 것이다. TenServlet, 1부터 10까지 출력하는 TenServlet를 만들어볼 거다. 그리고 URL 주소가 프로젝트 이름이 바뀌었기 때문에 프로젝트 이름 부분이 달라져있는 것을 확인할 수 있다. 같이 실습을 진행해보도록 하자. 이클립스를 실행시켜주고. 똑같이 Dynamic Web Project를 하나 생성하자. 이번에는 exam 25라고 생성을 할 거다. Dynamic web module version을 2.5 버전으로 하겠다고 했다. 2.5를 선택해주자. Next, 똑같다. 다시 Next, 여기에 web.xml이 기본적으로 체크가 되어서 생성이 되어 있는 걸 볼 수 있다. Finish 해보자. 이때 이 web.xml 파일을 잠깐만 살펴보자면 WEB-INF라는 디렉토리 아래 보면 web.xml이 존재하고 있다. 아래쪽에 보면 Design이라는 탭이 있고 Source라는 탭이 존재한다. 기본적으로는 이런 내용을 가지고 web.xml이라는 파일이 생성이 된다. 그러면 똑같이 또 TenServlet을 하나 만들어 보자. Servlet, package 똑같이 exam 해볼 거다. TenServlet 만들어보자. Next, 이번에도 ten으로 요청하기로 했으니까 이 부분을 ten으로 바꿔보자. ten, 선택하고. Next, 마찬가지 doGet만 둬보자. 그리고 Finish. 그러면 이런 HttpServlet을 상속받고 있는 TenServlet이 생성이 됐다. 아까와 차이점은 이 class 위쪽에 붙어있었던 어노테이션이 보이지 않는다. 대신에 web.xml을 다시 한번 열어보자. 처음에 열었을 때는 보이지 않았던 이런 내용 부분이 추가가 되어있는 것을 확인할 수 있을 거다. 서블릿은 요청이 들어왔을 때 반드시 서블릿 이름으로 요청하지 않기 때문에 이 web.xml은 어떤 정보를 알고 있어야 되냐면 클라이언트가 요청할 때 이런 URL로 요청을 하게 되면 servlet-name이 같은 서블릿을 찾아서 여기 실제 class인 exam이라는 패키지 안에 있는 TenServlet을 실행시켜주세요라는 의미를 가진다. 다시 한 번 더 정리해보자. URL이 /ten이라고 요청이 들어오면 이 URL mapping에서 찾아낸다. 여기에서 찾지 못하면 404라는 페이지가 보인다. 나 그런 URL 모른다라고 했는데 만약에 존재한다면 확인하는 내요은 뭐나면 servlet-name이라는 엘리먼트를 확인한다.
이 servlet-name이라는 이름을 가지고 실제 servlet이라는 태그 안에서 뭘 찾냐면 똑같은 이름의 serlvet-name이 있는지 확인한다. 그래서 이 서블릿을 찾아서 실제로 내가 실행시킬 서블릿이 누구지라는 정보를 찾아내는 거다. 3.0 이상 버전에서는 이런 일들을 어노테이션이 대신해주는 거다. 그 이전 버전에서는 반드시 서블릿이 하나 만들어지면 web.xml에 해당 서블릿을 반드시 등록해야지 찾아서 실행시킬 수 있었다는 거를 기억해주면 좋을 거 같다. 이 부분이 달랐고 그 다음에 1부터 10까지 출력할 거에요 하는 내용은 똑같을 거다. 그래서 아까처럼 똑같은 코드를 그대로 넣어 보고 실행을 시켜보자. 버전은 달랐지만 이 TenServlet이라는 걸 Run on Server해가지고 실행을 시켜보면 똑같이 실행이 되는 걸 확인할 수 있을 거다. 확인해보자.
URL을 조금 눈여겨서 보자. 프로젝트 이름은 exam25였기 때문에 exam25 하고 나올 거다. 거기에 이렇게 ten이라고 나오고 있는 걸 볼 수 있을 거다. 안에 내용은 똑같이 넣었기 때문에 똑같은 내용이 나오고 있는 것도 확인할 수 있을 거다. 이 부분의 URL도 나는 ten 말고 다른 걸로 요청하고 싶다. 라는 생가이 들면 이 url-pattern에서 바꿔주면 된다. 저장하고 다시 실행하면 된다. 이때 주의할 거는 web.xml파일이 바뀌면 서버는 반드시 restart돼야 된다는 걸 기억하면 된다. 더 듣다보면 이해가 될 거다. 그래서 Run on Server해서 서버를 다시 실행을 시켜보면 이번에는 URL이 ttt라고 요청이 될 거다. ttt라는 값으로 해당 페이지가 출력이 되어 나오는 걸 확인할 수 있을 거다. 이때도 마찬가지다 한번 해보자. 아까 사용했던 난 ten이라는 이름으로 요청해보고 싶다. ten 하고 요청하면 나오지 않는 걸 볼 수 있다. 실제 web.xml에 servlet-mapping 그 어디에도 ten이라는 값은 없다. 이렇게 서블릿은 버전이 어떻게 되냐에 따라서 서블릿을 생성하는 방법은 같지만 이 서블릿을 등록하는 방법이 조금 다르다는 것을 기억해주면 좋을 거 같다.
[4] 코드 정리
<?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>
'강의 > 웹 프로그래밍(풀스택)' 카테고리의 다른 글
부스트코스 웹 프로그래밍(풀스택) - 1. 웹 프로그래밍 기초 - 5-3-2 강의 정리 (0) | 2022.04.16 |
---|---|
부스트코스 웹 프로그래밍(풀스택) - 1. 웹 프로그래밍 기초 - 5-3-1 강의 정리 (0) | 2022.04.14 |
부스트코스 웹 프로그래밍(풀스택) - 1. 웹 프로그래밍 기초 - 5-2-2 강의 정리 (0) | 2022.04.13 |
부스트코스 웹 프로그래밍(풀스택) - 1. 웹 프로그래밍 기초 - 5-2-1 강의 정리 (0) | 2022.04.12 |
부스트코스 웹 프로그래밍(풀스택) - 1. 웹 프로그래밍 기초 - 5-1 강의 정리 (0) | 2022.04.12 |