general > worspace
web > css, html, jsp
preference > Java > Compiler > 11 로 변경
preference > Java > installed JRE > 기존 jre 삭제하고 > Add 클릭 > Standard VM 선택 > JRE Home 에 C:\Program Files\Java\jdk-11 설정 > Finish > Apply and Close
cf) deploy path (배포 경로)
preference > Server > Runtime Enviroments > 설정된 tomcat 삭제
파일 > New > Dynamic Web Project 선택
project name : HelloTest
web Module 화면
context명 웹어플리케이션 (webapps에 저장된 물리적인 디렉터리)
______________________________
key value
예> a x
b y
HelloTest
..
java Resources
src/main/java ( *.java 가 저장됨, 서블릿)
..
src
main
java ( *.java 가 저장됨 )
webapp (*****)
META-INF
MANIFEST.MF
WEB-INF
lib
web.xml
hello.html (정적)
test.css
test.js
test.png
world.jsp (동적)
cf) 3가지 컴포넌트
1. 정적 ( src/main/webapp 폴더에 저장 )
webapps (배포경로의 홈 디렉터리)
폴더 (HelloTest) <================== '웹 어플리케이션' 이라고 부른다
WEB-INF
classes
- *.class 저장
lib
- 나중에 mybatis.jar, mysql-connector.jar 같은 외부 라이브러러 저장용
web.xml
*.html
*.js
*.css
*.png
http://서버IP번호:port번호/context명/자원
예> http://localhost:8090/xxx/hello.html // 논리적인 context명인 '/xxx'
http://localhost:8090/HelloTest/hello.html // 물리적인 web application인 HelloTest
http://localhost:8090/xxx/test.css
http://localhost:8090/xxx/test.js
http://localhost:8090/xxx/tomcat.svg
http://서버IP번호:port번호/context명/디렉터리/자원
http://localhost:8090/xxx/html/hello.html
http://localhost:8090/xxx/css/test.css
http://localhost:8090/xxx/js/test.js
http://localhost:8090/xxx/images/tomcat.svg
http://서버IP번호:port번호/context명/자원
예> http://localhost:8090/xxx/world.jsp
http://서버IP번호:port번호/context명/디렉터리/자원
예> http://localhost:8090/xxx/jsp/happy.jsp
cf) html 동작 정리
1- 요청 : http://localhost:8090/xxx/hello.html
브라우저 -------------------------> tomcat 서버 (8090)
HelloTest (웹어플리케이션) <== 컨텍스트명:/xxx
WEB-INF
hello.html
2- hello.html 찾기
없으면 404 에러 발생
있으면 찾은 hello.html 다운
html은 서버에서 실행되지 않음. 그래서 정적(static)임
<------------------------
3- 응답 : hello.html 다운
4- 다운 받고
html 랜더링
cf) JSP 동작 정리 (외우기)
1- 요청 : http://localhost:8090/xxx/world.jsp
브라우저 -------------------------> tomcat 서버 (8090)
HelloTest (웹 어플리케이션) <== 논리적인 이름 컨텍스트명:/xxx
WEB-INF
world.jsp
2- world.jsp 찾기
없으면 404 에러, 있으면 jsp를 변환한다
(world_jsp.java 생성) -> 톰캣 역할
3- world_jsp.java 컴파일
world_jsp.class 생성
4- world_jsp.class 실행
(실행되기 때문에 동적 컴포넌트)
-> 실행 결과는 정적 파일인 html로 나온다
<-----------------------
5- 응답 : html 다운로드
6- 다운받고
html 랜더링
cf) JSP 동작 3단계
1- 변환단계
world.jsp ---> world_jsp.java
2- 컴파일 단계
world_jsp.java ---> world_jsp.class
3- 실행단계
world_jsp.class ---> html
import javax.servlet.http.HttpServlet;
: 서블릿을 요청하는 url을 별칭을 설정하는 방법
cf) 서블릿 맵핑 OLD 방식
현재 지원 안 됨
매우 길다 이슈
보안 취약 이슈
http://localhost:8090/컨텍스트명/servlet/패키지를포함한서블릿명
예> http://localhost:8090/xxx/servlet/com.servlet.HelloServlet
NEW 방식 : 서블릿 맵핑
@WebServlet("/hello") 설정시
http://localhost:8090/컨텍스트명/서블릿맵핑값
예> @WebServlet("/hello") 설정시
http://localhost:8090/xxx/hello 로 요청