ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.