회사관련 모든글

jsp, servlet간의 forward에 대하여(중요)

NandaNanda 2024. 11. 6. 14:08

서블릿의 forward에 크게 4가지가 있는 것이다(redirect, dispatch, Refresh, location)

Scriptlet이란? JSP에서 HTML코드안에 들어가는 <% %> 형식의 자바코드 

Scriptlet의 주요 특징

  1. Java 코드 삽입: Scriptlet은 HTML 문서 내에 Java 코드를 삽입할 수 있게 해줍니다.
  2. 동적 페이지 생성: 페이지가 요청될 때마다 서버에서 Scriptlet 코드가 실행되고, 그 결과를 클라이언트에게 전송합니다.
  3. 서버 측 처리: Scriptlet 내의 코드는 서버에서 실행되며, 최종적으로 클라이언트에게 전달되는 것은 HTML만 있습니다.

 

왜 JSP코드에서는 (Scriptlet안의)Java코드를 최대한 줄이는 것이 좋을까? 

 

 

https://starkying.tistory.com/entry/Forward-%EA%B7%B8%EB%A6%AC%EA%B3%A0-Servlet-JSP%EC%9D%98-%EC%97%B0%EB%8F%99

위 글  내용 요약!

redirect: 새로운 요청을 클라이언트가 다시 보내게 된다. 새로운 요청이라 함은 새로운 url주소이다. (다시 방향을 정한다는 것이므로 새로운 HttpRequest, HttpResponse객체가 생성되는 것이라고 기억하면 쉽다. 즉 '다시 요청' = '새로운 url, 새로운 객체생성' 라고 기억하면 된다.

 

forward: 새로운 요청이 아니라 하나의 서블릿에 추가적인 일처리를 맡기는 것이다. 따라서 새로운객체나 클라이언트에서 새로운 url을 서버로 전송하지 않는다.

 

4대영역 객체.

pageContext객체: 페이지가 변경(이동)되면 현재 페이지 정보가 저장된 pageContext 객체가 제거됨(페이지 영역)

request객체: 만약 새로운 요청(response.sendRedirect(), 하이퍼링크, 자바스크립트 location.href, URL 직접 입력 등)이 발생하면 기존 request객체는 제거됨 (url 영역) (참고로 url을 새로이 입력한다는 것은 새로운 요청을 한다는 의미이다)

session객체: 페이지와 무관하게 웹브라우저가 동작하는 동안 유지되는 객체 (좀 애매하다. 브라우저를 끄더라도 로그인은 유지될 수 있음)

application객체: 서버가 시작되면 application 객체가 생성되고, 서버가 중단되면 객체가 제거됨

그리고 이 4대 영역 객체의 공통 메서드로 쓰이는 것이 setAttribute, getAttribute이다. 

4대영역 객체 설명글: https://dami97.tistory.com/9