1. 서블릿의 세 가지 기본 기능

- 클라이언트로부터 요청을 얻음. / 데이터베이스 연동과 같은 비즈니스 로직을 처리함. / 처리된 결과를 클라이언트에 응답

- '자바'를 검색했을 때 이에 대한 디비에 요청을 함으로써 데이터를 가져옴

- 요청과 관련된 API는 javax.servlet.http.HttpServletRequest 클래스 / 응답과 관련된 API는 javax.servlet.http.HttpServletResponse 클래스

 

2. <form>태그를 이용해 서블릿에 요청

- <form>태그 요소 : 아이디, 비밀번호 입력, 체크 박스 등

- <form> 태그의 action 속성에 지정한 JSP나 서블릿으로 값 전송

- <form> 태그와 관련된 여러 가지 속성 :

 1) name : <form>태그의 이름을 지정함. / <form>태그 여러개일 때 구분하는 역할

 2) method : <form>태그 안에서 데이터를 전송할 때 전송 방법을 지정합니다.

 3) action : <form>태그에서 데이터를 전송할 서블릿이나 JSP를 지정합니다.

 4) encType : <form>태그에서 전송할 데이터의 encoding 타입을 지정합니다. 파일을 업로드할 때는 multipart/form-data로 지정합니다.

cf) 태그의 속성을 지정할 때는 태그의 이름을 정의한 그 괄호 안에 써줘야 한다. 이후 태그에 대한 컨텐츠는 <태그></태그> 사이에 써줘야 한다.

- 웹 브라우저에서 전송한 정보를 톰캣 컨테이너가 HttpServletRequest 객체를 생성한 후 doGet()으로 넘겨줌.

- 전송했을 때 자동으로 servlet에 대한 url로 넘어가게 됨.

 

3. 서블릿에서 클라이언트의 요청 얻는 방법

- <form>태그에서 하나의 name으로 하나의 값을 얻고자 하면 getParameter()를 사용하면 되지만, 하나의 name에서 여러 개의 값이 전송되는 경우엔 getParameterValues()메서드를 사용한다.

- getParameterNames()메서드는 name의 값을 일일이 기억할 필요없이 name을 얻게 해주는 함수이다.

cf) <input/> 태그의 속성 type은 말그대로 타입이고 value는 getParameter로 전송될 값이고 name은 getParameter 함수의 argument의 넣어줄 값이다.

 

4. 서블릿의 응답 처리

- 서블릿의 응답 처리 방법 : doGet()이나 doPost() 메서드 안에서 처리함. / HttpServletResponse 객체를 이용함. / setContentType()을 이용해 클라이언트에게 전송할 데이터 종류(MINE-TYPE)를 지정함. / 클라이언트(웹 브라우저)와 서블리의 통신은 자바 I/O 스트림을 이용함.

- MINE-TYPE : 톰캣 컨테이너에 미리 지정해 놓은 데이터 종류로 서블릿에서 브라우저로 전송 시 설정해서 사용함.

- MINE-TYPE 지정 예 : 

 1)HTML로 전송 시 : text/html

 2)일반 텍스트로 전송시 text/plain

 3)XML 데이터로 전송 시 : application/xml

- 응답 과정 : setContentType()을 이용해 MINE-TYPE 지정 -> 데이터를 출력할 PrintWriter 객체 생성 -> 출력 데이터를 HTML 형식으로 만듦 -> PrintWriter의 print()나 println()을 이용해 데이터 출력

cf) PrintWriter를 사용하여 출력한 내용은 응답 객체인 HttpServletResponse의 출력 스트림에 기록됨. 톰캣 컨테이너는 이 출력 스트림을 사용하여 클라이언트로 응답을 보내게 됨.

- 만약 아무것도 입력안하고 전송하면 null의 값으로 값이 넘어가게 된다.

- get과 post의 차이는 get에서는 ?뒤에 전송된 내용이 표시되지만 post는 표시되지 않는다. 따라서 보안에 민감한 정보는 post방식으로 전송한다.

- <form> 태그에서 method가 get이면 서블릿 클래스에서도 doGet()가 존재해야 한다.

-get, post에서 특정 하나의 것을 처리하려면 doGet()과 doPost()를 만들고 doHandle()을 이용한다. 이 때 접근 제한자를 private로 하는게 좋다.

7. 자바스크립트로 서블릿에 요청

- script 코드는 <head> 태그 안에다가 써야함.

- 실무에선 자바스크립트에서 먼저 입력한 값에 대해서 유효성 검사를 한 후 자바스크립트에서 서블릿에 요청함.

- <form>태그는 document 객체의 하위 속성으로 자바스크립트에서 document.<form>이름으로 접근 가능하다.

cf) JavaScript는 웹 페이지에서 복잡한 기능을 구현할 수 있는 스크립팅 또는 프로그래밍 언어입니다. 웹 페이지가 단순히 정적인 정보를 표시하는 것 이상으로 시의적절한 콘텐츠 업데이트, 대화형 지도, 애니메이션 2D/3D 그래픽, 스크롤링 비디오 주크박스 등을 표시할 때마다 JavaScript가 관련되어 있을 가능성이 높습니다. 

'Servlet' 카테고리의 다른 글

8장 서블릿 확장 API 사용하기  (1) 2024.01.11
7장 서블릿 비즈니스 로직 처리  (1) 2024.01.05
5장 서블릿 이해하기  (0) 2023.12.28
4장 웹 애플리케이션 이해하기  (0) 2023.12.23
2장 웹 프로그래밍과 JSP  (2) 2023.12.23

+ Recent posts