Developer/Spring eGov4.0 (Java11, Tomcat9)

Servlet 알아보기 1 (servlet개념 , mapping Name)

단님 2024. 10. 31. 16:22
728x90
Servlet 과 JSP 의 역할

Sun Microsystems가 제시한 웹 개발 표준에서는 , 

Servlet : 실행코드 방식 ➡️ Controller 역할
JSP : 스크립트 코드 방식 ➡️ View 역할


Servlet 
:MVC 구조의 Controller

 

ServletJava로 작성된 서버 측 프로그램으로, 클라이언트 요청을 받아들이고 응답을 생성하는 Controller 역할

HttpServlet 클래스를 상속하여 구현되며, 네트워크 프로그래밍 없이도 간단히 웹 요청을 처리할 수 있다.

네트워크 프로그래밍을 사용하지 않고 라이브러리를 사용하여 손쉽게 사용할 수 있게 되었다.

 

✔️ HttpServlet: response와 request 객체를 사용해 요청과 응답을 처리하는 서블릿 클래스

 

서블릿 실행 파일 경로

컴파일 된 파일(.class)은 build 라는  폴더에 classes 안에 있고 ,

작업 파일 (.java)은 src 폴더 안에 있다.

 

서블릿의 멀티 스레딩 지원

하나의 서블릿 인스턴스가 여러 스레드를 통해 동시에 클라이언트 요청을 처리할 수 있어 효율적이다.

 

 


 

HttpServlet 클래스

 

response와 request 객체를 사용해 요청과 응답을 처리하는 서블릿 클래스

 

계층도

Object → 인터페이스: Servlet, ServletConfig, Serializable

GenericServlet(추상 클래스) → HttpServlet(추상 클래스)

 

Servlet 클래스의 실행 방식

클라이언트의 요청에 자동반응하는 이벤트 드리븐 방식으로 작동

요청이 GET 방식이면 doGet(), POST 방식이면 doPost()가 호출된다.


URL 매핑 및 네이밍 규칙

 

URL 매핑을 통해 특정 URL 요청을 서블릿과 연결할 수 있다.

어노테이션(@WebServlet)과 web.xml 설정 파일 모두 매핑을 설정할 수 있지만,

프로젝트 전체에서 중복된 매핑 네임은 허용되지 않는다.

 

매핑 네임 중복시 아래와 같다.

 

@ 설정 (@WebServlet(""))
  • 단일 설정
@WebServlet("/hello")

 

  • 다중 설정

url 배열 형태로 복수 선언가능 → 배열로→ urlPatterns

@WebServlet(urlPatterns = {"/slist", "/안녕", "/123", "/7seven"})

그러나 프로젝트 전체 기준 중복되면 안됨 : server Start 안된다.

숫자, 한글 사용시 오류는 없으나 비추 !

 

 

web.xml 설정 <servlet>
<servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>servlet01.Ex02_StudentList</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>/slist</url-pattern>
    <url-pattern>/123</url-pattern>
</servlet-mapping>

위 XML 설정은 @WebServlet(urlPatterns = {"/slist", "/123"})와 동일한 역할

 


서블릿 클래스 법칙

 

1. 모든 서블릿 클래스는 반드시 상속받아야한다.

 

2. 상속받은 서블릿은 doGet() , doPost()를 반드시 구현해야한다.

3. 서블릿 엔진은 사용자의 요청을 받았을 때, service() 메서드를 호출하여 doGet 또는 doPost 메서드를 실행

 

4. 파라미터는 HttpServletRequest , HttpServletResponse 두개의 클래스를 사용한다.