Java Spring
[Java Spring] JSP, 서블릿 기초
begong
2023. 1. 27. 20:59
반응형
JSP, 서블릿
- JSP와 서블릿은 거의 비슷
- Spring은 서블릿을 발전시킨 것.
- Spring이 서블릿을 사용하기도 함 ex) Dispather servlet
- 서블릿에서
@WebServlet
에너테이션 = 컨트롤러의@Controller
+@RequestMApping
에너테이션 - 서블릿은 경로마다 클래스를 하나씩만듬, 컨트롤러는 경로마다 메서드를 활용하여 동작
서블릿
singleton
: 한개의 인스턴스만을 만들어 호출 시 재활용- 서블릿 안의 메서드들은 서블릿컨테이너에서 사용
- init() : 서블릿의 초기화 시 실행
- service() : 입력, 처리, 출력 등 동작을 담음.
- destroy() : 서블릿이 메모리에서 제거될때 컨테이너에 의해 자동 호출
JSP(Java Server Pages)
- JSP는 서블릿으로 변환되서 전달 됨
- <%!
~%> : 클래스 영역. 서블릿 클래스 범위로 들어감 - <%
~%> : 메서드 영역. 서블릿 service() 메서드 내부로 들어감 - .jsp요청이 들어오면 서블릿 인스턴스가 존재하는지 확인한 뒤 없다면 서블릿으로 변환, 컴파일 있다면 서블릿인스턴스 응답.
- 첫번째 호출 시 변환과 컴파일 과정이 있어서 시간이 걸림.(jsp 내용 변경 시에도)
- 두번째 호출 후에서는 로딩시간 빠름
- 서블릿 : Lazy- init 요청이 있을 시 초기화 (Spring : early -init 요청이 오지않았더라도 미리 초기화)
- 기본객체
- 생성 없이 사용할 수 있는 객체
- service()의 지역변수로 선언되어있는 것들
- request, response, session, pageContext, config 등
유효 범위(scope) 와 속성(attribute)
4개의 저장소
가 있음- Map 형태로 저장
- 저장소마다 접근범위, 생존시간이 다름
pageContext
- 로컬변수 저장
- EL
${}
때문에 사용 - 해당 페이지 안에서만 접근 가능
- 요청할때마다 새로 초기화
application
- webApplication 전체에서 접근가능
- 전체 1개
- 모든 클라이언트가 공유
session
- 개별 저장소
- 클라이언트마다 1개
- 로그인시 개별저장소 생성, 로그아웃시 제거
- 장바구니, 로그인정보 등
- 사용자마다 1개씩이기 때문에 용량부담 =>최소한의 data만 저장
- 메모리 부담이 큼
request
- request객체가 가지고있는 저장소
- 요청이 처리되는 동안 존재
- 요청마다 1개
- foward시에 활용됨
- 관련 메서드
- void etAttribute(String name, Object value) : 쓰기
- Object getAttribute(String name) : 읽기
- void removeAttribute(String name) : 삭제
- Enumeration getAttributeNames() : 저장된 모든 속성의 이름을 반환
URL 패턴
- WebServlet으로 서블릿을 URL에 매핑할때 사용
- 우선 순위 순
- Exact mapping : 정확한 주소 일치
- path mapping : 경로 일치
- extension mapping : 확장자 일치
- default mapping : 모든 주소
- 우선순위로 검색
- 스프링은 dispatcherServlet이 모든 요청을 처리해줌
EL(Expression Language)
- <%=값%>
- ${값}
- EL은 값이없더라고 null 출력 안함
- 경로를 생략하면 pagecontext->request->session->application 순으로 탐색
- 문자 + 숫자 => 숫자로 계산함 1+"1"=2
- null 은 0으로 바뀜
JSTL (JSP Standard Tag Library)
- JSP파일에서 if for등을 편하게 쓰기위해 만들어놓은 라이브러리
- <c:if>, <c:forEach> 등 태그가 있음.
Filter
- 공통적인 요청 전처리와 응답 후처리에 사용. 로깅, 인코딩 등
- 필터에서 공통적인 부분을 전처리한 후 Servlet이로 이동해서 처리후 다시 필터로이동하여 후처리
- 필터가 여러개일 수 있음
반응형