[Servlet & JSP] Servelt
🍋 Servlet
서블릿(servlet)은 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet클래스의 구현 규칙을 시킨 자바 웹 프로그래밍 기술이다.
다른 말로는, 서버에서 웹페이지를 동적(혹은 정적까지도)으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램이라고 할 수 있다. 따라서 확장자는 .java이며, 해당 코드 안에 HTML태그가 삽입된다.
🟡 servlet의 특징
- 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
- html을 사용하여 요청에 응답
- Java Thread를 이용하여 동작
- MVC 패턴에서 Controller로 이용됨
- HTTP 프로토콜 서비스를 지원하는
javax.servlet.http.HttpServlet
클래스를 상속받음 - UDP보다 처리 속도가 느림
- HTML 변경 시 servlet을 재컴파일해야함
🟡 개발 시 알아 두어야 할 사항
-
브라우저 언어와 servlet, 또는 JSP만 직접 소통
html / css / java script 는 절대 일반 순수 자바 클래스와 소통이 불가하다.
즉, 웹 요청/응답 처리 시 servlet이나 JSP로 개발해야 한다.
-
이클립스에서의 웹 개발 구조
- src
*.java
개발- 순수 DAO와 DTO 혹은 일반 모든 자바 소스 개발
- web상에서 http기반으로 요청/응답을 직접 처리하는 servlet
- WebContent
.html
/.css
/.js
/.jsp
/ 이미지, 동영상
- src
🟡 servlet API
-
HttpServlet
- http 프로토콜을 사용할 수 있도록 구현된 클래스
- 이를 상속받은 servlet은 재정의로만 쉽게 개발 가능
-
HttpServletRequest
-
http 프로토콜 기반으로 요청하는 client의 정보를 보유
→ 접속한 client의 ip, 브라우저 기본정보, client가 server에 전송하는 입력 데이터 등..
-
doGet()
ordoPost()
메소드 실행 시 parameter로 쓰임. 즉, 메소드 실행을 위해 필요한 client의 정보를 제공해주는 API
-
-
HttpServletResponse
-
http 프로토콜 기반으로 요청하는 client에게만 응답하는 처리 수행
-
응답 포멧 설정 가능
→ 속성지정 가능 (ex.한글로 응답하기 위한 속성 설정)
→
setContentType()
: client 브라우저에 응답하는 포멧 + 인코딩 설정→
getWriter()
: 2byte출력이 가능하고, 사용 시PrintWriter
객체를 생성해주어야 함. (PrintWriter
는 접속된 client에게만 출력)→
PrintWriter
는 2byte 단위로 출력됨 -
client 브라우저에 응답하는 객체
-
아래 코드처럼 작성하면 된다.
public class Servlet2Validation extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String pw = request.getParameter("pw");
System.out.println("id : " + id + " pw : " + pw);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String pw = request.getParameter("pw");
System.out.println("id : " + id + " pw : " + pw);
}
}
🟡 servlet container
servlet container란 말 그대로 servlet을 관리해주는 container이다.
우리가 서버에 서블릿을 만들었다고 해서 스스로 작동하는 것이 아니고 서블릿을 관리해주는 것이 필요한데, 그러한 역할을 하는 것이 바로 서블릿 컨테이너이다. 서블릿 컨테이너는 클라이언트의 요청(Request)을 받아주고 응답(Response)할 수 있게, 웹서버와 소켓으로 통신하며 대표적인 예로 톰캣(Tomcat)이 있다. 톰캣은 실제로 웹 서버와 통신하여 JSP(자바 서버 페이지)와 Servlet이 작동하는 환경을 제공해준다.
출처 : https://mangkyu.tistory.com/14
🟡 servlet lifecycle
servlet lifecycle은 servlet container에서 관리한다.
- 기본 생성자 (parameter가 없는 생성자)
- 최초 client가 호출시 실행돼서 객체 생성
- 새로운 로직의 갱신된 객체 생성시 단 한 번 생성 (갱신 직후 최초 client가 요청시 단 한 번 실행)
init()
- 생성자 호출 직후에 단 한 번 실행
- 공유 자원 초기화 로직으로 적합
doGet() / doPost()
- client 요청 시 1:1 실행 (Java Thread를 이용하여 동작됨)
- service 메소드라 표현
destroy()
- 갱신된 servlet bytecode가 서버 메모리에 로딩시 자동 호출
- 즉, 구버전 객체 메모리 해제시에 자동 실행
- 자원 반환용 로직 구현시 적합
- 서버 다운 직전에도 자동 호출됨
🟡 servlet method
<form action="idcheck" method="post">
id 입력 from : <input type="text" name="id"> <br>
pw 입력 from : <input type="password" name="pw"> <br>
<input type="submit" value="로그인">
</form>
위 코드에서처럼, <from>
태그에는 method
속성을 정해줄 수 있다. 이 속성은 form data가 서버로 제출될 때 사용되는 HTTP 메소드를 명시한다. method
의 속성으로는 아래 네 가지가 있다.
get
- 서버에 데이터 전송시 url에 전송되는 데이터가 오픈돼서 전송
- 보안 철저히 고려하지 않음
- 소량의 데이터 전송에 간혹 쓰임
- 즐겨찾기, 즉 webpage 구분용으로 사용 (url 상에 노출되니까)
예시 url : https://book.naver.com/bookdb/book_detail.nhn?bid=20743750 - servlet은
doGet()
으로 처리
post
- 우편물처럼 데이터를 봉투에 담아서 은닉해서 전송하는 것과 같은 원리
- 데이터 서버에 전송할 때 보안을 고려해서, 또는 데이터양이 많을 경우 사용되는 방식
- servlet은
doPost()
으로 처리
put
delete
Author And Source
이 문제에 관하여([Servlet & JSP] Servelt), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bingbong-party/Servelt-JSP저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)