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 |