-
Tomcat 서버 설치JAVA/웹 프로그래밍 - 서블릿 2020. 10. 29. 22:55
https://tomcat.apache.org/download-80.cgi
에 접속한다.
버전은 9.0.39 이다.
64비트 윈도우 zip 버전으로 다운 받는다. 교육용이다.
인스톨 버전을 설치하면 컴터가 실행하자마자 서버가 서비스를시작한다.
압축을 풀어 C드라이브에 붙여넣기한다.
그리고 이름을 바꾸자. 이름은 Tomcat-9.0.39로 한다.
bin폴더에 들어가자. bin폴더에는 실행명령이 모여있는 곳이다.그리고 내 PC를 우클릭해서 속성을 클릭해서 고급 시스템 설정을 선택하고 고급 탭의 환경 변수를 선택한다.
시스템 변수에서 새로 만들기를 선택해서 변수이름은 CATALINA_HOME이라 적고
디렉토리 찾아보기를 선택해서 톰캣이 설치되어 있는 경로를 선택한다. C:\Tomcat-9.0.39Tomcat폴더의 conf폴더에서
server.xml 파일에서 CTRL + F로 8080을 탐색후에 아래의 문장의 포트 번호를 9090으로 변경하자.
그냥 써도 되지만 혹시 8080 포트 번호가 사용 중일 수도 있다. 포트 번호는 충돌하면 안된다.
cmd 창에서 cmd 창에 netstat 명령어를 쓰면 사용하려는 하는 포트주소가 쓰고 있는지 아닌지 알 수 있다.
그 포트 주소의 PID 번호가 보일 것이다.쓰고 있는 포트 번호를 쓰려면 PID를 죽여야 한다.
명령어는 taskkill /F /PID PID번호
만약, 죽지 않으면 프로그램 제거를 해야 한다.
server.xml 파일에서 원래의 문장은 <Connector port="9090" protocol="HTTP/1.1" 으로 시작한는데
위 문장의 Connector port를 9090으로 변경한다. 그러면 아래의 문장과 같다.
-->
<Connector port="9090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
<!--그리고 bin폴더로 이동해서 startup.bat 파일을 실행한다.(더블 클릭)
그리고 웨 브라우저를 하나 띄워서 localhost:9090 으로 이동하면 톰캣 서버가 뜨면 정상이다.
실행 시에 Tomcat 서버를 활성화하고 하자.
webapps폴더로 이동 ROOT 폴더로이동해서 My.txt 텍스트 파일을 하나 생성 해서 hello tomcat server!!라고 적자.
웨브라우저를 하나 띄워 http://localhost:9090/My.txt 라고 쓰고 실행하자.
이 ROOT 폴더가 설치되었을 때 기본 경로이다.
ROOT 폴더에 HTML 폴더를 만들어서 기존에 HTML에서 했던것을 복사한다.웹 브라우저에 http://localhost:9090/HTML/a.html 을 실행한다. a.html파일이 있어야 한다.
conf폴더에서 server.xml은 서버의 동작에 관련한 내용이 있다.
이 파일에서 기본 디렉토리를 변경할 수있다. 기본 디렉토리는 webapps이다.
새로운 context를 하나 만드는데 이를 web이라는 이름으로 설정한다. 접근은 web을 통해서 한다.web을 접속하면 C:\Tomcat-9.0.39\webapps\imsiweb을 기본으로 한다.
server.xml 파일을 열자. 아래의 문장을 찾는다.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
위의 문장 밑에 바로 아래의 문장을 적는다.
<Context path="web" docBase="C:\Tomcat-9.0.39\webapps\imsiweb" privileged="true" />그리고, 아래의 문장을 위의 문장 바로 아래 적어주면 서버를 2개 돌리는 효과를 줄 수 있다.
아래는 적지 않아도 된다.
<Context path="web1" docBase="C:\Tomcat-9.0.39\webapps\imsiweb1" privileged="true" />
<Context path="web" docBase="C:\Tomcat-9.0.39\webapps\imsiweb" privileged="true" />
위에서 위의 문장을 적었으면 webapps 폴더 내에 imsiweb 폴더를 하나 만든다.
imsiweb 폴더에 imsiweb.txt 파일을 만들고, 내용에 imsiweb server라고 글을 쓴다.
그리고 서버를 새로 시작한다.
서버를 새로 시작하는 방법은 기존에 실행된 Tomcat서버를 끄고 bin폴더의 startup.bat을 실행시키고
웹 브라우저에 http://localhost:9090/web/imsiweb.txt 를 적고 웹 페이지에 imsiweb server라고 뜨면 정상이다.
그리고 웹 페이지는 새로 고침 F5를 눌러야 한다.
그리고 Tomcat-9.0.39\conf 폴더에서 server.xml 을 열고 위에서 적은 문장 그 밑에 아래의 문장을 추가한다.
<Context path="jsp" docBase="C:\Tomcat-9.0.39\webapps\jsp" privileged="true" />
라고 적고, webapps 폴더에 jsp 폴더를 하나 만들고 test.txt 파일을 만들어서 파일 내용에 jsp server라고 쓰자.
그리고 서버를 재 시작하고 웹 브라우저에 http://localhost:9090/jsp/test.txt 라고 입력하자.
그러면, 위의 문장들이 추가된 내용의 일부분은 다음과 같다. CTRL + F로 찾아보자.
server.xml 파일의 맨 마지막 내용
더보기<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="web" docBase="C:\Tomcat-9.0.39\webapps\imsiweb" privileged="true" /> <Context path="jsp" docBase="C:\Tomcat-9.0.39\webapps\jsp" privileged="true" /> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> -->
서블릿은 자바 웹 어플리케이션으로 클래스이다. 이는 자바이다.
jsp폴더에 WEB-INF 폴더를 만들고 이 폴더의 하위 폴더로 classes 폴더를 하나 생성한다.폴더 이름은 대소문자를 반드시 구분하자.
그리고 webapps의 ROOT 폴더의 WEB-INF 폴더의 web.xml 파일을 복사해서 jsp/WEB-INF 폴더에 붙여넣기 한다.
web.xml 파일의 내용은 그대로 쓰면 다음과 같다. 내용을 복사해서 붙여넣자.
추가된 부분은 <servlet>태그와 <servlet-mapping> 태그이다.
web.xml파일
더보기<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <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" metadata-complete="true"> <servlet> <servlet-name>sTest</servlet-name> <servlet-class>Test</servlet-class> </servlet> <servlet-mapping> <servlet-name>sTest</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> </web-app>
윈도우 탐색기에서 보기 탭을 선택해서 파일 확장명을 체크해서 보는 것이 편하다.
자바 파일을 만들려면 확장명을 .java라고 쓰면 된다.
그리고 C 드라이브에 JSP 폴더를 만들고 notepad를 열어서 다음과 같이 글을 작성한다.
자바 파일로 만들면 된다.더보기import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Test extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("console print test"); } }
그리고 저장 시에, 모든 파일로 저장을 하는데 여기서 중요한 것은 클래스의 명과 파일의 이름이 같아야 한다.
대소문자 포함해서이다.그러면 JSP폴더에 Test.java 파일이 생성되어야 정상이다.
그리고 cmd 창으로 다음의 명령어를 차례로 입력하자.
cd C:\
cd jsp
dirjavac -cp C:\Tomcat-9.0.39\lib\servlet-api.jar Test.java
명령어를 입력해서 class 파일을 생성해야 한다. 위에서 cp의 뜻은 class path를 의미한다.
이 만들어진 클래스 파일을 복사해서 webapps\jsp\WEB-INF\classes 폴더에 붙여넣는다.마지막으로 웹 브라우저에 http://localhost:9090/jsp/test라고 적고
TomCat 서버 cmd창에 console print test가 나오면 정상이다.C:\JSP의 Test.java 의 내용을 다음과 같이 변경한다.
아래의 문장에서 모든 주석은 제거하자. 그래야 에러가 안 뜬다.
내용
더보기import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Test extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //System.out.println("console print test"); //os라는 나가는 스트림을 하나 만든다. response는 클라이언트에게 보낼 때 이용 OutputStream os = response.getOutputStream(); // 클라이언트에게 전송 PrintStream out = new PrintStream(os,true); // 요청한 웹 브라우저에게 나간다. out.println("Hello Servlet"); // 요청한 클라이언트에게 보낸다. 웹 브라우저에 출력된다. } }
다시 cmd창으로 자바컴파일을 해야 한다. 그전에 class파일을 지우자.
컴파일이 무사히 끝나면 class파일이 생성된다. 이 class파일을 Tomcat폴더의 webapps/jsp/WEB-INF/classes 폴더에
다시 복사 붙여넣기 한다.
그리고 Tomcat서버를 재 실행한다.
그리고 웹 브라우저에 localhost:9090/jsp/test 를 입력하면, Hello Servlet 이라고 나온다.다른 서블릿을 추가해보자.
만약, 다른 java파일을 만들어서 진행하려고 하면 예를들어 Test1.java 컴파일해서
클래스 파일을 동일하게 복사 붙여넣기 한다.
그리고, C:\Tomcat-9.0.39\webapps\jsp\WEB-INF 폴더의 web.xml에 맵핑을 해야 한다.
<servlet>과 <servlet-mapping> 태그를 찾는다.
기존에 이 내용 밑에 문장을 추가하기만 하면 된다.
기존의 내용
더보기<servlet> <servlet-name>sTest</servlet-name> <servlet-class>Test</servlet-class> </servlet> <servlet-mapping> <servlet-name>sTest</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping>
위의 내용 바로 밑에 아래의 문장을 추가한다.
추가할 문장
더보기<servlet> <servlet-name>sTest1</servlet-name> <servlet-class>Test1</servlet-class> </servlet> <servlet-mapping> <servlet-name>sTest1</servlet-name> <url-pattern>/test1</url-pattern> </servlet-mapping>
그러면 매핑이 되는지 확인해보자.
그리고 C:\JSP로 와서 Test1.java 파일을 만들고 아래의 내용을 복사 붙여넣기하자.
클래스 명과 파일의 이름은 같아야 한다.
내용
더보기import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Test1 extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OutputStream os = response.getOutputStream(); PrintStream out = new PrintStream(os,true); out.println("Hello Servlet"); } }
cmd창으로 아래의 명령어를 차례로 입력하자.
cd C:\
cd jsp
dirjavac -cp C:\Tomcat-9.0.39\lib\servlet-api.jar Test1.java
Test1.class 파일을 C:\Tomcat-9.0.39\webapps\jsp\WEB-INF\classes 경로에 복사 붙여넣기 한다.
서버를 재시작한다.
그리고 웹 브라우저에 http://localhost:9090/jsp/test1 라고 입력하고 Hello Servlet 이라 나오면 정상이다.
'JAVA > 웹 프로그래밍 - 서블릿' 카테고리의 다른 글
form과 textArea & 한글 깨짐 해결 (0) 2020.10.30 form 형태로 전달하기 (0) 2020.10.30 구구단의 원하는 단을 입력해서 출력하기 (0) 2020.10.29 반복문을 이용하여 문자열 여러 번 출력 (0) 2020.10.29 자바와 Tomcat 서버 연결하기 (0) 2020.10.29