서블릿
자바에서 자바코드로 웹을 구현하기 위해 나온 서버측의 프로그램.
- 웹 서버측 에서 동적인 페이지를 자바로 구현한 서버측 프로그램
- 서버 측에서 실행함. 요청을 받으면 서버에서 처리함. 그러고 응답으로 결과값만 보내주는 구조임
특징
- MVC 모델에서 컨트롤러 역할을 한다.
- 서블릿 파일로 사용하기 위해서는 HttpServlet 클래스를 상속받아서 사용한다.
- 모든 메서드는 스레드로 동작된다
서블릿 컨테이너
- 서블릿은 .java 파일을 컴파일한 .class 파일 형태이며 , 이를 실행하고 관리해주는 런타임을 서블릿 컨테이너 라고 한다. (간단히 전체적인 동작을 관리해주는 거라고 보면 될듯)
- 서버에 있는 서블릿이 스스로 작동하는게 아님. 서블릿 컨테이너가 서블릿을 작동시키는 거임.
- 아파치 톰캣이 이 역할을 하는거임 !
역할 :
- 생명주기 관리 : 서블릿을 인스턴스화 후에 초기화하고 , 요청에 맞는 메서드를 호출한다. 응답 후에는 GC 를 통해 객체를 소멸시킴
- 통신 지원 : 클라이언트와 통신하는 과정을 서블릿 컨테이넉 간단하게 해주는 API 를 제공한다.
- 멀티스레드 방식
서블릿 작성 규칙
- 서블릿 클래스 선언
- javax.servlet.http.HttpServlet 를 상속받는다. 즉 , class 파일에서 HttpServlet 을 extends 한다
- doGet , doPost 메소드 선언
- 둘 중에 하나 or 둘 다 선언
- 클라이언트 요청이 들어오면 서버측에서 자동으로 호출되는 메소드
- 동적으로 HTML 페이지를 만드는 역할
- 동적 HTML 페이지 작성 구현
- doGet or doPost 내부에서 문서 작성을 위한 코드 작성
- response 객체의 getWriter 메소드 호출하면 PrintWriter 객반환
- PrintWriter 객체의 print?? 메서드 사용, 동적으로 클라이언트 코드를 작성
- 브라우저에게 서비스 반환
- 브라우저가 자바 파일(서블릿)을 호출한다
- 자바는 웹 기술이 아님
- 브라우저에서 자바 파일을 실행할 수 없음
- 그래서 웹상에서 자바파일 호출할 수 있게 가상 주소를 생성해서 서블릿에게 매핑해야함
- webapp > WEB-INF > web.xml 에서 매핑
<servlet><servlet-name>HelloWorld</servlet-name> // servlet 이름
<servlet-class>jwprj.servlet.HelloServlet</servlet-class> // 서블릿 클래스가 들어있는 경로
</servlet><servlet-mapping><servlet-name>HelloWorld</servlet-name> // 서블릿 이름 (위와 같아야함)
<url-pattern>/hello</url-pattern> // 서블릿 요청 주소 매핑
</servlet-mapping>
JDK.5 ? 부터 추가된기능
어노테이션 (@)
사전적 의미로는 주석이라는 뜻
컴파일러에게 해당 클래스에 대해 알려주거나 자바 프로그램에 관한 내용을 설정하는 용도로 사용됨
dynamic web project 생성 톰캣 설정..
프로젝트 우클릭 자바 ee → generate development descriptor stub … 하면 web.xml 파일 생성됨
※ web.xml 파일의 역할 ? 프로젝트의 구성 정보를 설정하고 서블릿,필터,리스너 등을 정의하여 웹의 동작 방식을 제어함.
run server 할 때는 project 를 우클릭 후 실행
WEB-INF : 웹이 노출되지 않도록 막아주는 폴더.
여기서는 jsp 파일 , view 파일 같은 파일들을 직접적으로 실행할 수 없다.
왜 ? 이 폴더는 웹의 핵심 구성요소를 이루고 있으며 , 리소스를 보관하는 용도로 사용되기 때문.
그러니까 간단히 말하면 웹이 구성하는데 필요한 요소를 담고 있어서 함부로 접근을 못하게 직접 실행이 안됨.
class 파일 서블릿파일로 지정할 때는
public class C04Servlet_test extends HttpServlet{} (HttpServlet 클래스를 상속받아서 사용한다.)
백엔드 처리 하는게 서블릿
프론트 처리 하는게 jsp 라고 일단 간단히 생각하자.
지금 오후에 하고 있는 작업이 서블릿과 jsp 를 분리하고 연결하기 위한 작업인듯 ?
지금 내가 오후에 듣고 있는 수업은 원래 jsp 로 모두 처리하려는 내용들을 서블릿과 jsp 로 각각의 역할로 분리하기 위한 작업이다.
지금 하고 있는거 하나도 모르겠음 ㄹㅇ;;
잘모르겠으니까 간단하게 정리
수업 들은거 대충 개념 정리
class 파일에 extends HttpServlet 하면 servlet 파일로 만듬
servlet 은 자바 코드를 다룬다 . 즉 백엔드 작업을 처리함
jsp 는 http 코드를 다룸 . 즉 프론트엔드 작업을 처리한다.
- src/main/java 폴더 : 자바 서블릿 소스 폴더
- webapp 폴더 : jsp 소스파일 , 콘텐츠 폴더(html , css , js ,이미지 등) 정적 파일
- WEB-INF 폴더 : 서버관련 설정파일
- WEB-INF/web.xml 파일 : 사이트 설정 파일
web.xml 파일이란 ?
웹 애플리케이션 환경설정 담은 파일
웹 서버가 처음 구동될 때 이 파일을 읽어 설정 내용을 톰캣에 적용함. 그러고 실행됨.
서블릿이란 ?
- 웹 서버측 에서 동적인 페이지를 자바로 구현한 서버측 프로그램
- 서버 측에서 실행함. 요청을 받으면 서버에서 처리함. 그러고 응답으로 결과값만 보내주는 구조임
특징
MVC 모델에서 컨트롤러 역할을 한다.
'Developer Note > 국비과정 수업내용 정리&저장' 카테고리의 다른 글
24년 10월 31일 (1) | 2024.11.04 |
---|---|
24년 10월 30일 (1) | 2024.11.04 |
24년 10월 25일 (0) | 2024.10.25 |
24년 10월 22일 (0) | 2024.10.23 |
24년 10월 18일 (1) | 2024.10.21 |