-
Eclipse에서 Tomcat 연동하기 / 서블릿 예제 2Let's Code/Server 2019. 8. 27. 17:40
Eclipse 2019-06에서 Tomcat 8.5.45 연동하기
매우 다사다난한 과정이었다.
1. Oracle에서 JDK 다운받기.
2. 이클립스 다운받고 EE Developer을 위한 패키지 다운받기.
3. Tomcat 다운받기.
2번부터 문제가 생겼는데, 2019년 6월부터 배포한 버전에서는 수업에 필요한 for Java EE Developers 패키지 대신 for Java Developers 밖에 서비스하고 있지 않았다. HTML, CSS 등의 Language와 Web Project를 서포트하고 있지 않았기에 추가적인 소프트웨어를 다운받아야 했다.
Tomcat에서도 문제가 생겼는데, 이클립스가 지원하는 버전은 7.0까지였지만 내가 다운받은 건 8.5.45였다. 겨우겨우 구글링해가며 이클립스가 배포한 플러그인을 다운받아도 보고, Tomcat 폴더의 ServerProperty 문서를 수정도 해보고, (그 과정에서 .jar 파일은 터미널로 압축 해제할 수 있다는 것과, .zip을 그냥 jar로 이름만 바꿔도 확장자가 변경된다는 것을 배웠다...), Oracle에서 최신 버전 JDK도 다운받아 봤지만 모두 먹히지 않았다. 겨우 이클립스를 다시 깔아서 8.0까지 호환을 받아놨는데, 8.5라고 안 된단다. 8.0을 다운받으려고 해봤는데 8 시리즈에서는 8.5가 최신이라서 그거밖에 구할 수 없었다. 아예 빈 폴더를 지정해놓고 이클립스에서 Tomcat을 자체적으로 다운받으려고 보니까, 그 버튼이 눌리지 않았다. (왜?)
결국 해결 방법은 엄청 심플했는데, 그냥 Tomcat을 8.5 대신 7.0으로 다운그레이드해서 쓰기로 결정... 해보니까 허무하게 쉽게 풀려서 머쓱했다.
서블릿은 자바 웹 어플리케이션 중 동적인 요소를 처리하는 프로그램이라고 한다. 클라이언트가 정보를 입력하고, 그것이 홈페이지에 반영되기를 원할 때, 혹은 시간에 따라 실시간으로 달라지는 페이지를 만들려고 할 때 필요하다.
Hello World 서블릿 출력하기
import java 어쩌구 부분은 생략하고 method 부분만 가져오겠다.
서블릿을 만들 때 'doGet'이라는 하나의 메소드만 지정했는데, doGet은 클라이언트에게서 GET 이라는 형태로 요청이 들어오면 이를 처리해줄 수 있는 메소드이다. 'PrintWriter'는 지금 수준에서는 출력 장치로 이해하면 될 것 같다. Println과 Print의 차이가 궁금했는데, 검색해보니 PrintIn은 문장을 종결시키기 때문에 마침표가 찍혀 나온다고 한다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<h1>Hello World</h1>"); }
1부터 10까지 나열하는 서블릿 출력하기
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();
for 문 자체는 파이썬에서 보았고, 4가지 구성 요소가 있는 for문은 자바스크립트에서 봐서 이해할 수 있었는데 별도의 설명 없이 반복문 처리를 해서 당황스러웠다. 대강 해석하자면 숫자 1에서 시작하고, 10에 도달하는 순간 멈추며, 증가하는 규칙을 가지고 있다. i에다가 HTML 태그인 <br>를 섞어서 각 단위마다 독립적인 줄을 쓰도록 요구하고 있다. 자바는 자바스크립트와 별개의 언어로 알고 있는데, 문법상 매우 비슷한 데다 (camel-case style 규칙이라던가 for문), HTML 태그를 갖다 쓸 수 있는 부분이 흥미로웠다. 자바스크립트도 공부한지 15분? 밖에 되지 않았으므로 이 상태에서 Java를 동시에 배워야할지 의욕이 떨어지는데 한 15분 정도 투자하면 기본 문법은 알겠지? 와중에 문과 직렬 자소서를 쓰는 것이 이번주의 메인 과제라 코딩이 매우 귀찮아지고 있다. 하루에 한 시간만 해보자.
* 노트: Java를 배우자.
'Let's Code > Server' 카테고리의 다른 글
서블릿의 응답과 요청: 헤더값 알아내기 (0) 2019.08.30 서블릿(Servlet)의 라이프싸이클(LifeCycle) (0) 2019.08.30 웹이 구현되는 과정 (0) 2019.08.25 댓글