💡 class파일로 번역하기
1. E: 루트 디렉토리로 이동
2. cd 폴더명: .java파일이 있는 디렉토리로 이동
3. .java파일이 있는 곳에서 아래 명령어 실행
※ -cp는 클래스패스를 의미한다.
자동으로 클래스패스를 인식하지 못하기 때문에
클래스패스를 추가해서 compile해야 한다.
javac -cp ".jar파일까지 포함한 경로" 파일명.java
E:\Home\cafe>
javac -cp "E:\Tools\apache-tomcat-10.1.11-windows-x64\apache-tomcat-10.1.11\lib\servlet-api.jar" List.java
#배포하기
배포를 해보자!
💡배포
번역한 class파일을 classes 폴더 안에 집어넣어야 비로소 클라이언트가 실행한 결과를 볼 수 있게 된다.
번역해서 적당한 위치에 갖다 놓는 이 행위를 배포라고 한다.
예전에는 서버에 대한 부분이 오퍼레이터의 담당영역으로 구분되어 있었기 때문에
개발자가 배포에 대해 많이 고려할 필요가 없었지만
현재는 요청사항이 많고 다양해짐에 따라서 개발자와 오퍼레이터가 융합되는 추세이다.
이 때문에 개발자는 배포로 인해서 서버가 중단되는 점을 고려하기 시작하였고, 이를 보완하기 위해 무중단 서버에 대한 것이 고려되기 시작했다.
배포를 하게 되면 서버를 한 번 꺼야 한다.
때문에 잘 생각해서 배포해야 한다!
🚨오류해결
톰캣 파일의 설정을 변경하면 반드시 톰캣 실행파일을 껐다가 다시 켜줘야 한다.
관련해서 간단하게 알아두고 갈 용어도 확인해보자.
💡용어정리
1.홈디렉토리: 웹서버가 사용자에게 요청에 따라서 돌려줄(응답해줄) 자원이 있는 공간 2.WEB-INF:홈디렉토리에서설정 파일 등 돌려주면 안되는비공개 파일들을 모아놓는 공간 .class파일들은 실행이 별도로 필요하니 바로 돌려주면 안돼서 WEB-INF안에classes라는 폴더를 만들어서 거기에 넣어둔다. 3.배포:톰캣이 실행해 줄 수 있는 유일한 객체는 서블릿 객체 뿐이다. 이 서블릿 객체를 번역(class)해서 적당한 위치의 폴더에 갖다 놓는 것을 배포라고 한다. 4.매핑: 요청을 하려면 url이 필요하다. 사용자가 요청할 수 있게 url의 이름을 준비하고 그 요청에 걸맞는 내용을 매핑한다.
출처: 뉴렉처(https://www.youtube.com/@newlec1)
실제 배포하는 화면이다. (생각보다 초 간단!)
#매핑하기
💡 매핑이란?
사용자가 서버에 요청을 하려면 접근하기 위한 url이 필요하다. 사용자가 요청할 수 있게 url의 이름을 준비하고 그 요청에 걸맞는 내용을 매핑한다.
먼저 매핑을 하기 위해서 web.xml파일을 톰캣에서 복사해온다.
web.xml파일의 아래와 같이 내용을 설정한다.
💡 web.xml 파일에 <servlet>과 <servlet-mapping> 설정
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
version="6.0"
metadata-complete="true">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<!-- 보따리에 담아둘 녀석들의 목록 -->
<servlet>
<servlet-name>aa</servlet-name> //해당되는 클래스파일을 찾는데 이 key값이 사용된다.
<servlet-class>List</servlet-class> //꺼내올 클래스파일 이름이다.
</servlet>
<!-- 요청이 오면 어떤 보따리에서 어떤 녀석을 꺼내줄지 설정 -->
<servlet-mapping>
<servlet-name>aa</servlet-name> //url이 불리면 인식할 key값이다. 내 맘대로 설정 가능!
<url-pattern>/asdf</url-pattern> //url 이름이다. 내 맘대로 설정 가능!
</servlet-mapping>
</web-app>
//2가지가 한 쌍으로 움직여야 상위버전/하위버전 모두 호환된다.
response.setCharacterEncoding("UTF-8"); //문자를 보낼 때의 설정
response.setContentType("text/plain; charset=UTF-8"); //문자를 읽을 때의 설정