안녕하세요 드디어 백엔드와 관련된 포스팅을 할 차례가 왔습니다.
원래대로라면 HTML과 CSS에도 할 이야기가 더 많고 Javascript까지 하면 분량이 많았을 겁니다.
그러나 저는 백엔드를 위주로 다루고 싶어서 실습용 웹을 만들 정도로만 살펴봤습니다.
서론이 길었네요.
Servlet이란?
http://www.가상의 주소. com/user를 요청한다고 합시다.
보통 서버에서는 root 혹은 홈 디렉터리 기준으로 해당 문서를 찾아나갈 겁니다.
정적인 문서라면 바로 찾아서 페이지를 response 해주면 되겠죠
그런데 만약 저 user라는 페이지가 항상 고정된 값이 아니라 변동이 된다면 어떡할까요?
Server application을 작성해 데이터베이스에서 해당 user와 관련된 테이블을 찾고 뭔가 실행하고 결과를 문서로 정리해서 전달합니다.
Servlet은 이 Server application에 해당합니다.
실습
Servlet은 우리가 흔히 쓰는 Java랑 거의 똑같아요.
Java는 main이라는 메서드가 꼭 필요했다면 Servlet에서는 main이 아닌 service 관련 메서드를 이용합니다.
실습에서 앞서서 먼저 Tomcat과 eclipse가 필요합니다.
설치나 설정은 미리 하고 와주셨으면 합니다.
나중에 포맷을 하게 된다면 관련 내용을 포스팅하게 될지도 모르겠네요.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorld extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
System.out.println("Hello World");
}
}
|
cs |
Servlet 추상 클래스를 상속받아서 사용합니다.
service 메서드를 보면 HttpServletRequest와 HttpServletResponse를 받아옵니다.
이는 톰캣에서 자동으로 값을 넘겨주는데요.
만약에 프런트엔드에서 form을 통해서 어떠한 값이 넘어오거나 하면 매개변수에 알아서 담깁니다.
저걸 그대로 실행하시면 아마도
404 에러가 우리를 맞이해줍니다.
서블릿 매핑이라는 것을 해주지 않아서 그렇습니다.
아무리 톰캣이 자동적으로 웹 배포를 해준다고 해도 따로 설정해주지 않으면 모르거든요.
XML을 이용한 서블릿 매핑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<servlet>
<servlet-name>hi</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hi</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
|
cs |
WebContent > WEB-INF > web.xml 에 위와 같이 작성해주시면 됩니다.
web.xml이 없으신 분은 톰캣을 깔면서 같이 생성된 web.xml을 복사 붙여 넣기 해주세요.
<servlet>부터가 서블릿 매핑과 관련된 부분입니다.
제 class 이름이 HelloWorld인데요.
hi라고 부를 HelloWorld를 /hello url로 매핑하겠다 이런 뜻입니다.
이후에 컴파일하고 실행해보시면 에러는 없고 흰 화면만 나와요.
그리고 콘솔 창에 Hello World가 찍히면 실습은 성공적으로 끝납니다.
어노테이션을 이용한 서블릿 매핑
web.xml로 해보신 분들은 지금쯤이면 공감할 수 있는 내용입니다.애가 너무 느려요. 우리가 만들어낼 웹에 얼마나 많은 서블릿을 사용할지 아시나요?? 그때마다 이렇게 무겁게 동작한다면 능률이 저하되지 않을까요?? 그래서 어노테이션을 이용하면 쉽고 간편하게 서블릿 매핑을 할 수 있습니다. @WebServlet("/hello") 바로 이 한 줄을 추가하면 됩니다. 그렇다면 우리는 어노테이션만 알면 되는 게 아닐까요?? 이게 또.. 어노테이션을 이용하면 해당 서블릿에만 작성을 합니다. 모든 서블릿의 url 패턴을 알고 싶다면 일일이 들어가서 확인을 해야 해요. 각각의 장단점이 있으므로 둘 다 알아두시는 게 좋다고 생각합니다.
참고로 만약에 어노테이션을 써도 매핑이 안 되는 분들은 web.xml에 metadata-complete 속성을 확인해주세요.true로 작성되어있으면 안 되므로 false로 수정하시면 될 겁니다.
'web > jsp&servlet' 카테고리의 다른 글
Form radio 속성과 Servlet (0) | 2020.07.10 |
---|---|
HTML 프로젝트 JSP 프로젝트로 바꾸기 (0) | 2020.07.10 |
[servlet] GET 요청 처리하기 (0) | 2020.07.07 |
[Servlet] LifeCycle 이해하기 (0) | 2020.07.04 |
Servlet을 이용해 웹 표시하기 (0) | 2020.07.03 |