📝 #230317 : 모델링 시험 후 Server 중 Surblet get방식 공부
📝 #230320 : Server 중 Surblet post방식, JSP 공부 및 실습
웹 서비스를 위한 자바 클래스
웹 프로그래밍에서 클라이언트의 요청(Request)을 처리하고
그 결과를 다시 클라이언트에게 응답(Responst)하는
Servlet클래스의 구현 규칙을 지킨 자바 프로그래밍 기술
자바 어플리케이션 코딩을 하듯 웹 브라우저용 출력 화면(HTML) 을 만드는 방법
1. 사용자(클라이언트)가 URL(Uniform Resource Locator)을 클릭하면
HTTP Request(요청)를 Servlet Container로 전송
💻 Servlet Container
배포를 위한 포트 연결, 웹 서버 통신을 위한 소켓, 입/출력 스트림을 생성하는 역할을 함.
WAS(Web Application Server)가 Servlet Container에 해당하면 대표적으로 Tomcat이 있음.
2. Http Request를 전송 받은 Servlet Container는 아래 두 객체를 생성
3. DD (배포서술자, Deployment Descriptor) = web.xml은
사용자가 요청한 URL을 분석하여 어떤 서블릿 클래스에 요청 내용을 전달할지 찾음
4. 해당 Servlet에서 init() 메소드를 먼저 호출한 후
service() 메소드를 호출하여 클라이언트로부터 전송 받은 방식인
GET, POST 여부에 따라 해당 메소드(doXXX()) 를 호출함.
5. doGet() / doPost() 메소드는 동적 페이지를 생성 후 HttpServletResponse객체에 응답을 보냄
6. 응답 종료 시 HttpServletRequest, HttpServletResponse 객체 소멸
요청하는 주소 뒤에 전달하려는 값을 key=value 형태로 붙여서 전달하는 방식
ex) inputName=홍길동&inputAge=20
장점 : 단순함, 주소창에 값을 임의로 작성할 수 있다.
캐싱 가능(요청 주소 저장 == 북마크, 즐겨찾기, 링크 공유)
단점 : 보안에 취약함. 글자수 제한이 있다.
검색, 게시글, 뉴스 공유 등 이용할 때 좋음
데이터를 HTTP Header에 보냄
SELECT 구문
요새는 제이슨방식으로 바디로 보냄
{"name":"홍길동",
"age":"20"}
index 또는 default라는 이름이 붙은 html, jsp파일은 메인페이지 역할을 함
내부에 작성된 input 태그의 값을
지정된 경로(주소)의 서버 또는 페이지로 제출(== 클라이언트 요청)하는 역할
값을 입력하기 위한 입력 양식을 제공하는 태그.
제출 (== 클라이언트 요청)시
input 태그의 name 속성 값이 key, 입력된 값이 value (Map 형식)
1. 이클립스에서 Dynamic Web Project용 프로젝트 만들기
1-1. 마우스 오른쪽버튼 클릭 →
New →
Dynamic Web Project 클릭
Project name
작성 후, Finish
누르지 말고 Next >
클릭
Target runtime : Apache Tomcat v9.0 확인
1-2. 자바 동적웹프로젝트 만들 때 소스 파일지정경로 해주기.
하단 Default output folder
란에
src/main/webapp/WEB-INF/classes
입력 후, Next >
클릭
1-3. Generate web.xml deployment descriptor
체크 후 Finish
버튼 클릭
→
web.xml 자동으로 만들어줌
실수로 체크 안했을 경우,
생성한 Project 오른쪽 클릭 →
Java EE Tools →
Generate Deployment Descriptor Stub 클릭
2. src/main/java 안에 패키지 및 클래스 만들기.
만들 때 클래스명에 servlet이 꼭 들어가야함. 안그러면 생성 안됨
3. 이클립스 👉 VS CODE 이동.
VS CODE 해당 프로젝트 폴더로 변경 후,
최종 결과물이 보여질 index.html 보여질 화면에 대한 코드 작성
/프로젝트명(JSPProject)/서비스요청주소(login) / 데이터 전달방식(get/post) <form action="/JSPProject/login" method="post">
4. VS CODE 👉 이클립스 이동하여 아까 만든 클래스 파일 열어 아래 구문 작성.
4-1 클래스 이름 바로 위에
어노테이션 @WebServlet("/서비스요청주소") 써주고 import
4-2 생성 클래스명 바로 뒤에 extends HttpServlet
구문 작성 후 import
4-3 (get/post방식) 오버라이딩 해주기
(클래스 안에 doget
or dopost
쓰고
ctrl
+ space
키 누르면 자동완성 찾아서 예외구문 생성.
내용 중 필요없는 부분 삭제하기)
HttpServletRequest
: 클라이언트의 정보 + 요청 관련 정보가 담긴 객체HttpServletResponse
: 서버가 클라이언트에게 응답하는 방법을 제공하는 객체5. 요청 시 함께 전달 된 input 태그의 값 (== Parameter) 얻어오기.
이어서.............