🔥 Vamos/Spring

1204 | 스프링의 정석 :: 2-13 (서블릿과 JSP)

unikue 2022. 12. 5. 00:42

서블릿과 jsp

: 서블릿과 jsp는 거의 같은 것.

: 서블릿을 발전시킨 것이 스프링

: DispatcherServlet = servlet

 

✔ JSP = JAVA SERVER PAGE

: 자바로 작성한 서버페이지. 웹서버로 웹브라우저를 다룬다. HTML문서에 내부적으로 자바문법을 사용할 수 있게 하는 스크립트 언어.< html>자바코드작성</html>

 

✔ JSP 와 스프링의 차이?

: JSP는 화면 처리 영역에서 사용되고, Spring은 프로그램 전반적 환경을 구성: 자바 언어로 웹 사이트를 만들 수 있도록 도와주는 스프링은 MVC 프레임워크

 

 

1. 서블릿과 스프링 비교

Servlet spring
@webServlet("/sellProduct")
// @Controller+@RequestMapping 애너테이션과 동일

public class SellServlet extends HttpServlet{
@override //  http서블릿을 상속받아야함
public void service (HttpServletRequest request, HttpServletResponse responsee) throws IOException{
..이하 코드 동일
@Controller
Public class Sell{
@RequestMapping("/sellProduct") // 상속없이 가능
public void main(HttpServletResponse response)
// 매개변수는 필요한것만 적어주면 됨
throws IOException{
...이하 코드 동일
service메서드와 request, response가 항상 고정
매핑을 클래스에 하기 때문에 클래스를 여러개 만들어야함
여러가지면에서 발전된 모습을 보여줌
1. 상속이 없음
2. 매개변수는 필요한것만 적을 수 있음
3. 애너테이션도 나눠서 처리함으로써 메서드에 매핑하면 하나의 클래스에 새로운 메서드를 만들어서 매핑 가능.

 

 

2. 서블릿의 생명주기

@WebServlet("/studySpring")
public class studySpringServlet extends HttpServlet{
	@Override
    public void init() throws ServletException{
    // 서블릿 초기화 - 서블릿이 생성 또는 리로딩 때, 단 한번만 수행.
    System.out.println("[studySpringServlet] init()");
}

@Override // 호출될때마다 반복적으로 수행됨
public void service(HttpServletRequest request, HttpServletResponse response){
	// 1.입력
	// 2.처리
	// 3.출력
	System.out.println("[studySpringServlet] service()");
}

@override
public void destroy(){
	// 뒷정리 작업 - 서블릿이 unload(제거)될때 단 한번만 수행됨.
    System.out.println("[studySpringServlet] service()");
}
/* 메서드는 직접 호출하지않고 서블릿 컨테이너가 자동으로 호출을 함. 
우리는 서블릿을 만들때 메서드의 내용만 채워주면 됨. */
@WebServlet("/hello")
public class HelloServlet extends HttpServlet{
	@Override
	public void init() throws ServletException { // 서블릿이 초기화 될 때 자동 호출되는 메서드. 처음 한번만 호출
		// 1. 서블릿의 초기화 작업 담당
		System.out.println("[HelloServlet] init() is called");
	}
	
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 1) 입력
		// 2) 처리
		// 3) 출력
        
		// 2. 요청이 올 때마다 반복적으로 호출
		System.out.println("[HelloServlet] service() is called");
	}

	@Override 
	public void destroy() {// 2. 서블릿이 새로 갱신되서 리로드되거나 웹 애플리케이션이 종료될때 뒷마무리 작업을 하기 위해 호출 by.서블릿컨테이너
		System.out.println("[HelloServlet] destroy() is called");
	}
}

👉 새로고침 할 수록 service()만 계속 재호출 됨을 알 수 있다.

 

 

 

3. JSP란? (Java Server Pages) = 서블릿

: html파트는 서블릿에서 out.println으로 들어감

: jsp페이지는 따로 웹서블릿 써서 맵핑할 필요가 없다. (자동 맵핑됨) 바로 웹에서 접근.

: Url대신에 jsp이름을 써주면 된다. (http://localhost:8080/ch2/twoDice.jsp)

 

: jsp로 요청이 들어왔을때 jspServlet이 서블릿 인스턴스 여부를 확인. 없을시 최초로 컴파일 진행. (twoDice.jsp  ▶ twoDice_jsp.java 서블릿 소스파일 twoDice_jsp.class 서블릿 클래스파일) ▶ 서블릿 인스턴스 생성 _jsp.init() 초기화 ▶ 서블릿으로 변환된 jsp 반환 

: 두번째 호출부터는 변환과 컴파일을 거치지 않고 바로 반환

: jsp파일이 변경되면 변환,컴파일부터 다시 과정을 거친다.

 

 

4. jsp의 기본객체

: 생성 없이 사용할 수 있는 객체

:  service()  메서드의 지역변수로 기본 객체들이 선언되어있으므로 가져다 쓸 수 있음.

: request, response, session, application, config, page, pageContext, out, exception