
인텔리제이 기준
- plugin: Smart Tomcat
- tomcat 10버전
WAS(Web Application Server)
👩🏫참고)
tomcat9 -> javaee8버전, 패키지명 javax.
tomcat10 -> jakrata ee 10, 패키지명 jakarta.


🎨다운로드 후 압축 풀고 내 이름폴더에 아파치 톰캣 폴더 넣어주기 + gitignore에 경로 추가

+인코딩
자바의 웹기술: Servlet
jakarta.servlet-api
jakarta.servlet.jsp-api
-> 개발시에만 필요, 실제 구현체는 각 웹서버가 가지고 있으므로 배포시에는 배제

🎨compileOnly 'jakarta.servlet:jakarta.servlet-api:6.0.0'

🎨compileOnly 'jakarta.servlet.jsp:jakarta.servlet.jsp-api:3.1.1'

src/main/webapp: 기본 웹 경로
src/main/webapp/WEB-INF: 설정들을 주로 넣음, 기타 라이브러리

🎨web.xml파일 참고.. 인텔리제이에 끌어오기

참고해서 코드 가져왔당굴당굴당굴이
🎨 톰캣서버 구축
edit configuration



WAS(Web Application Server)

요청(request) : 브라우저가 서버에 요청(클라이언트)
응답(response) : 서버가 응답
: 요청에 대한 정보
요청주소(URI, URL)
요청 방식(method) - GET, POST
GET 목적: 서버 자원 조회
POST 목적: 데이터를 서버쪽에 추가/변경



응답 데이터에 대한 정보
ex) content-type: text/html -> 브라우저는 응답한 문자열 데이터 -> HTML형식으로 인식 -> Document객체로 변환
응답 서버에 대한 정보
서버쪽에서 브라우저 행위 통제
Location: 주소 -> 브라우저의 주소를 변경하고 페이지 이동
Refresh: 초 -> 초 주기로 브라우저 새로고침
Cache-Control: no-cache -> 캐시 통제
Set-Cookie: 키-값;




톰캣서버 실행시


-> text/html로 해석이 안된경우 ??! 응답 데이터를 로드할수없다...
HTTPS
S: Secured
HTTP: 기본 포트 - 80
HTTPS: 기본 포트 - 443
👩🏫참고)
FTP://
(File Transfer Protocol)
SFTP://
WS://(웹소켓)

2xx:
200(OK) : 정상 응답(서버를 거친 후 응답)
201(CREATED) : 서버에서 데이터 정상 반영
204(NO CONTENT): 정상응답, 바디 데이터 없음(출력X)
3xx:
301(영구이동), 302(임시 이동): 페이지 이동시 + UserAgent 변경됨
304(캐시됨): 임시 메모리에 저장됨
브라우저의 기본 동작 - 일정 기간동안 브라우저의 자원을 씀, 일정 기간이 지나면 지워지고 다시 서버에 요청을 보낸다.

4xx: 클라이언트 오류 (사용자쪽 오류)
400(Bad Request - 잘못된 요청) : 요청 데이터를 정해진 대로 전송하지 않은 경우(서버쪽이 지정한 형식과 맞지 않는 경우)
401(Unauthorized - 접근 권한 없음): 관리자 페이지
403(Forbidden - 금지됨)
404(Not Found - 페이지 없음) + 자원을 못찾았을때
405(Method Not Allowed): 허용되지 않은 요청 메서드
5xx:
500(Internal Server Error) : 코드에 오류가 있을때, 서버 장비에 물리적 문제가 있을때
502(BAD GATEWAY): 불량 게이트웨이
503(Service Unavailable): 서비스 이용 불가, 사이트 유지보수/서버 이전시 임시로 서비스를 중단 시킨 경우

ex) 검색창 날씨 조회 요청 - 데이터가 주소창에 담겨있다!
https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EC%98%A4%EB%8A%98+%EB%82%A0%EC%94%A8
https//search.naver.com/search.naver
? : 질의문
where=nexearch
&
sm=top_hty
&
fbm=0
&
ie=utf8
&
query=날씨
ex) https//dm.n-mk.kr/order?limit=20&sopt=all&skey=&idProductCategory=&dateType=createdAt&sdate=2023-10-04&edate=&orderStatus=confirmOrder&idDeliveryPolicy=12&idDesigner=14
👩🏫기타 요청 메서드
- DELETE: GET방식의 일종
◽요청 헤더 : Content-Type: application/x-www-form-urlencoded
✔️형식 -> urlencoded 방식
◽요청 바디 : subject=%EC%A0%9C%EB%AA%A9&content=%EB%82%B4%EC%9A%A9

한글 그 자체로 네트워크를 통한 전송은 불가능
-> 전송 가능한 숫자 형태로 변경(16진수, 사이사이 %) -> URL인코딩 -> 서버전송 -> 서버수신 -> URL디코딩 -> 원래형태
✔️ URL 인코딩: 데이터를 안전하게 전송하기 위해 한글데이터를 -> 16진수로 바꿔서 보냄
👩🏫참고)
Content-Type: application/json
{"키": "값", "키": "값"}
- 기타 요청 방식(POST계열)
- PUT : 데이터의 전체 치환
- PATCH : 데이터의 부분 치환




tomcat10


압축 풀고 이름폴더에 추가 ~
pom.xml

maven repository


<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>


최신버전
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>3.1.1</version>
<scope>provided</scope>
</dependency>
maven sync버튼 ~


추가완료되었으면 문제없이 잘 된것!
src new Directory에 main/test 추가하기

webapp내부에
localhost:3000/day01/index.jsplocalhost:3000/day01/



크롬으로 접속하기

📕한글 입력시 한글깨짐 현상이 일어난다 -> 응답헤더 설정
요청헤더 설정
<%@ page contentType="text/html; charset=UTF-8" %>


API(Application Programming Interface) : 애플리케이션 프로그래밍 명세
JDBC API