-
34일차 - scope, mvc, java bean백엔드(웹 서버, WAS)/JSP 2024. 3. 11. 16:08
저장 영역
■ application 영역에 저장된 정보는 서버가 시작할때 종료될때 사라진다
■ session 영역에 저장된 정보는 각각의 브라우저의 세션에 저장되어, 지정된 시간이 지나면 사라진다 크롬브라우저 세션에 저장하면 다른 브라우저에서는 크롬 세션의 정보를 가져올 수 없다
Action TAG
■ 현재는 퍼블리셔와 협업하는 작업이 많아 스크틀립릿을 사용하면 다양한 문법(JS, JSP, HTML 등)들 때문에 해석할때 오류가 많이 난다 그렇기에 개발자들은 여러가지 방법을 사용해 스크립틀릿을 줄이려고 노력했다
Redirect
□ sendRedirect 는 페이지를 이동만시킬뿐 request 데이터를 가져가진 않는다 그래서 request 객체에서 데이터를 가져와야하는 불편함이 있다
■ 마지막 페이지만 표시하여 중간의 거쳐간 페이지는 보여지지 않는다
Forward
■ 특정 페이지에 request, response 내장 객체가 함께 전달되어 이동된다
□ 브라우저에게 거쳐간 경로를 보여주므로 보안이 유지되어야하는 페이지도 보여져 보안에 취약하다
<!-- 전송해준 파라미터와 내가 보내고 싶은 데이터를 함께 보낼 수 있다 --> <jsp:forward page='<%=request.getParameter("forwardPage") %>'> <jsp:param name="tel" value="010-3891-9755"/> </jsp:forward>
MVC 모델
Model 1
■ 자바의 데이터부분만 따로 뗀 것이 모델 1이고 로직은 아직 분리하지 못한 상태이다
■ JSP 페이지에 비즈니스로직을 처리하는코드와 웹브라우저에 결과를 출력하는 코드가 섞여있다
□ 자바코드와 JSP, HTML이 섞이기 때문에 코드가 복잡하여 유지보수가 어렵다
Bean
■ 데이터를 담고 있는 자바 파일을 빈이라고 한다
■ id: 호출시 이름
■ class: 사용할 빈의 위치와 클래스,
■ scope: 사용영역(page, request, session, application)package com.beans; public class FirstBean { // Beans 규약 : 빈 생성시 멤버는 private 으로 만들자는 약속이다 private String name = "Hong, Gil-Dong"; public String getName() { return name; } public void setName(String name) { this.name = name; } }
===== index.jsp ===== <!-- 빈 등록 --> <!-- 데이터를 담고 있는 자바 파일을 빈이라고 한다 --> <!-- id: 호출시 이름, class: 사용할 빈의 위치와 클래스, scope: 사용영역(page, request, session, application) --> <jsp:useBean id="firstBean" class="com.beans.FirstBean" scope="page"/> <!-- 이름은 firstBean 이고 가져올 클래스는 com.beans.FirstBean 사용할 영역은 page 내에서만 사용할거야 --> ===== beanProc.jsp ===== <!-- 빈 등록 --> <% request.setCharacterEncoding("UTF-8"); %> <jsp:useBean id="firstBean" class="com.beans.FirstBean" scope="session"/> <jsp:setProperty name="firstBean" property="name" param="userName"/> <!-- action tag 에는 redirect가 없다 --> <jsp:forward page="beanResult.jsp"/> ===== beanResult.jsp ===== <jsp:useBean id="firstBean" class="com.beans.FirstBean" scope="session"></jsp:useBean> 출력 방식 1: <%=firstBean.getName() %> <br/> 출력 방식 2: <jsp:getProperty property="name" name="firstBean"/>
모델 2: 로직까지 분리된 모델이고 앞으로 계속 사용하게 될것 jsp 에게 보여지는 부분만 남기고, 자바가 비즈니스 로직을 수행한다
EL Tag
■ 액션태그 만으로 스크립틀릿을 대체하기 어려워서 Expression Language Tag 가 등장했다
■ <%= %> 간단하게 포현할 수 있는 표현식이라고 생각하면 된다
번외
■ jsp 는 원래 model1-2 를 거쳐가면서 view 만 상대하는 껍데기 언어가 되어버렸다 js 와 거의 비슷한 역할이지만 서버사이드에서만 움직인다는 차이점이 있다
1. cookie 와 session의 차이점
2. cookie 의 session 의 저장방식의 차이점
3. scope 네가지 영역에 대해서 설명
4. 액션 태그가 만들어진 이유
5. redirect 와 forward 의 차이점
6. javabean은 뭔가요
7. model1,2를 설명해주세요
8. el tag 는 무엇을 대체하기 위해 나온걸까?
'백엔드(웹 서버, WAS) > JSP' 카테고리의 다른 글
JSP 토막 정리 (0) 2024.03.19 33일차 - 내장 객체와 쿠키 (0) 2024.03.08 32일차 - JSP 환경 설치 (0) 2024.03.07