⌨️Server (Survlet)

Jieun·2023년 3월 20일
0

📝 #230317 : 모델링 시험 후 Server 중 Surblet get방식 공부
📝 #230320 : Server 중 Surblet post방식, JSP 공부 및 실습

📌Servlet 이란?

  • 웹 서비스를 위한 자바 클래스

  • 웹 프로그래밍에서 클라이언트의 요청(Request)을 처리하고
    그 결과를 다시 클라이언트에게 응답(Responst)
    하는
    Servlet클래스의 구현 규칙을 지킨 자바 프로그래밍 기술

  • 자바 어플리케이션 코딩을 하듯 웹 브라우저용 출력 화면(HTML) 을 만드는 방법


🏷️ Servlet 동작 방식

1. 사용자(클라이언트)가 URL(Uniform Resource Locator)을 클릭하면
HTTP Request(요청)를 Servlet Container로 전송

💻 Servlet Container

  • 배포를 위한 포트 연결, 웹 서버 통신을 위한 소켓, 입/출력 스트림을 생성하는 역할을 함.

  • WAS(Web Application Server)가 Servlet Container에 해당하면 대표적으로 Tomcat이 있음.

2. Http Request를 전송 받은 Servlet Container는 아래 두 객체를 생성

  • HttpServletRequest(요청 관련 내용이 저장된 객체),
  • HttpServletResponse(응답 관련 내용이 저장된 객체)

3. DD (배포서술자, Deployment Descriptor) = web.xml은
사용자가 요청한 URL을 분석하여 어떤 서블릿 클래스에 요청 내용을 전달할지 찾음


4. 해당 Servlet에서 init() 메소드를 먼저 호출한 후
service() 메소드를 호출하여 클라이언트로부터 전송 받은 방식인
GET, POST 여부에 따라 해당 메소드(doXXX()) 를 호출함.


5. doGet() / doPost() 메소드는 동적 페이지를 생성 후 HttpServletResponse객체에 응답을 보냄


6. 응답 종료 시 HttpServletRequest, HttpServletResponse 객체 소멸


🏷️ Get과 Post방식의 비교/차이

1. GET방식

요청하는 주소 뒤에 전달하려는 값을 key=value 형태로 붙여서 전달하는 방식
ex) inputName=홍길동&inputAge=20

  • 장점 : 단순함, 주소창에 값을 임의로 작성할 수 있다.
    캐싱 가능(요청 주소 저장 == 북마크, 즐겨찾기, 링크 공유)

  • 단점 : 보안에 취약함. 글자수 제한이 있다.

  • 검색, 게시글, 뉴스 공유 등 이용할 때 좋음

  • 데이터를 HTTP Header에 보냄

  • SELECT 구문

2. POST방식 : (데이터를) 붙이다

  • 캐싱 불가능 (URL에 데이터 노출 x)
  • 문자열데이터, 라디오 버튼, 텍스트 박스와 같은 객체들의 값도 전송 가능
  • 데이터를 HTTP Body에 보냄
  • DML 구문 (INSERT, UPDATE)
  • 전송하는 길이 제한이 없음
요새는 제이슨방식으로 바디로 보냄
{"name":"홍길동",
"age":"20"}

🏷️ Servlet 특징(?)

index 또는 default라는 이름이 붙은 html, jsp파일은 메인페이지 역할을 함

✔️ form 태그

내부에 작성된 input 태그의 값을
지정된 경로(주소)의 서버 또는 페이지로 제출(== 클라이언트 요청)하는 역할

  • action 속성 : 제출할 서버 또는 페이지 경로(주소) 작성하는 속성
  • method 속성 : 데이터 전달 방식 지정 속성. 안적으면 기본값인 get으로 사용.
                     

✔️ input 태그

값을 입력하기 위한 입력 양식을 제공하는 태그.

제출 (== 클라이언트 요청)시
input 태그의 name 속성 값이 key, 입력된 값이 value (Map 형식)


🏷️ Servlet 작성순서(?) ⭐⭐⭐⭐

(공통부분)

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 보여질 화면에 대한 코드 작성

  • form태그 처음과 끝 위치 맞는지 잘 확인하기!!
  • 서비스 요청주소 대소문자 맞게 썼는지 주의 !!
/프로젝트명(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) 얻어오기.

  이어서.............
profile
👩‍💼👩‍💼➡️➡️➡️👩‍💻👩‍💻 생산자의 삶을 살기 위해 개발공부중

0개의 댓글