[Servlet / JSP] - Servlet class

army246·2022년 5월 19일
0

Servlet / JSP

목록 보기
3/5

1. 서블릿 클래스(Servlet Class)

  • 서블릿 자체는 자바 코드로 구현하지만 서블릿 컨테이너에 해당 클래스가 서블릿이라는 것을 알려야 한다.
    기본적으로 web.xml에 등록해야 하지만 어노테이션을 이용하는 방법도 있다.

1-1. 서블릿 클래스 구조

  • HttpServlet 클래스를 상속해서 구현한다.
    HTTP 메서드에 따라 doGet(), doPost() 등 메소드를 오버라이딩해서 구현한다.
    - doGet() : HTTP GET 요청을 위한 메소드
    - doPost() : HTTP POST 요청을 위한 메소드

1-1-1. HttpServletRequest

  • request 정보를 서블릿에 전달하기 위해서 사용
  • 요청 프로토콜과 관련있다.

< HttpServletRequest Method>

메소드설명
getParameter(String name)name에 해당하는 파라미터 값
getParameterValues(String name)동일 name으로 전달 된 여러 개 파라미터 값
setCharacterEncoding(String enchding)문자 데이터에 대한 인코딩 설정
setAttribute()ServletRequest 데이터 등록
getAttribute()ServletRequest에 등록된 데이터 추출
removeAttribute()servletRequest에 등록된 데이터 삭제
getHeader()헤더 값 리턴
getCookies()쿠키 정보 리턴
getSession()세션 객체 리턴, 없다면 새로 생성해서 리턴

1-1-2. HttpServletResponse

  • 응답 프로토콜과 관련있다.

< HttpServletResponse Method>

메소드설명
setContentType(String type)전달되는 데이터 형식 설정
getWriter()데이터를 보내기 위한 출력 스트림 리턴
sendRedirect()응답을 보낸 후 특정 URL로 다시 요청하도록 지정
addCookie()헤더 값으로 쿠키 추가

1-2. 서블릿 정보 등록

  • web.xml이나 어노테이션으로 서블릿을 선언해야 한다.

서블릿2.x에서 사용 가능한 web.xml 방법

<servlet>
		<servlet-name>study</servlet-name>	// servlet 이름
		<servlet-class>com.study.web.StudyListServlet</servlet-class> // servlet 클래스 지정
</servlet>        

<servlet-mapping>
		<servlet-name>study</servlet-name>	// servlet name 매핑
		<url-pattern>/study</url-pattern>	// servlet 요청 주소 매핑
	</servlet-mapping>

어노테이션 이용방법

@WebServlet(urlPatterns="/study")
public class StudyListServlet extends HttpServlet {
	...
 }

어노테이션 방법이 더 간단하다는 것을 알 수 있다.

1-3. 서블릿 생명주기

서블릿 초기화 : init() 메소드

  • init() 메소드는 처음 한 번만 실행된다.
    서블릿 객체 생성 -> init() 메소드 호출 -> 초기화 작업 수행

서블릿 요청/응답 : service() 메소드

  • init() 메소드가 최초 한 번만 수행되고 그 이후 요청을 스레드로 실행된다.
    service() 메소드를 호출하여 요청이 GET 방식이면 doGet()메소드를 호출/ POST 방식이면 doPost()메소드를 호출한다.
    사용자 요청 처리는 request, 응답 처리는 response 객체로 처리

서블릿 종료 : destroy() 메소드

  • 서블릿 리로딩, 삭제, 종료 요청이 있을 경우 destroy()메소드 호출.

1-4. ServletConfig 객체

  • 로컬 파라미터 정보 추출

1-4-1. < init-param >

  • < init-param > 이 설정된 서블릿에서만 접근이 가능하기 때문에 로컬 파라미터라고 한다.
<servlet>
	<servlet-name>study</servlet-name>	// servlet 이름
	<servlet-class>com.study.web.StudyListServlet</servlet-class>
	
    <init-param>
		<param-name>encoding</param-name>
    	<param-value>UTF-8</param-value>
	</init-param>
    
</servlet>

1-5. ServletContext

  • 글로벌 파라미터 정보 추출

1-5-1. < context-param >

  • < context-param > 으로 설정한 정보는 모든 객체들이 접근이 가능하기 때문에 글로벌 파라미터라고 한다.
	<context-param>
		<param-name>encoding</param-name>
	    <param-value>UTF-8</param-value>
	</context-param>

참고
https://dinfree.com/lecture/backend/javaweb_2.1.html#%EC%84%9C%EB%B8%94%EB%A6%BF-%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B5%AC%ED%98%84

profile
천천히 꾸준히

0개의 댓글