보동이용용 2023. 2. 24. 14:03
반응형

- N-Tier : c(클라이언트) / s(서버) 구조에서 중간에 있어서 Middle Tier라고도 부른다. Tomcat

  정적인 서버와 동적인 서버 구분해주어야 한다. >> ws/was  >> model2

  w"a"s >> allication 

- 일하는 순서

1. 요청을 받는다.

2-1. row 데이터 확보    2-2.imformation 가공    2-3.scope통해서 담는다. >> 또 쪼개지는 것은 일이 많다는 것.... 

             ↓↓

2번들을 다시 쪼갠다.

2-1을 하는 객체를 따로 만든다. (db에서 row데이터 확보 ) : DAO(data access object) = Persistence layer

 ==> 날것.

2-2 가공, 로직을 운영하는 객체  : service(가장중요한 일을 함.)

                 

                        service---(의존관계)-->dao

                     information <----------- row data

contents => mime 타입에 따라 json, html ... 모양이 변한다.

                    ws(요청받음)  ---(의존관계)--> service(info의뢰받음)  ---(의존관계)--> dao(data의뢰받음)

             setAttribute로 scope담기   information <--(가공)-- row data<----------- row data

                             ㅣ

                              getAttribute, 응답데이터

                      컨트롤러       프레젠테이션

==> 레이어드 아키텍쳐

==> 효과적으로 사용하려면 service를 잘 사용해야함

 

레코드는 엔터티/릴레이션으로 이루어져있음

자바에서는 오브젝트로 담아와야함

엔터티를 오브젝트로 가져오는 것이 VO

VO : 도메인 레이어

==> 5Layer구조

 

0223 => controller 분해해봄.

최프때는 12레이어쯤.... 플로어를 놓치지 말아라..!!

 

앞으로는?

레이어쪼개기

수업은 

1. 클라이언트와 컨트롤러 사이 : http 프로토콜 => servlet/jsp

2. dao와 db사이 : 프로토콜이 없으니까 => jdbc

3. 프레임웍 : 우리가짜야하는 코드를 대신 만들어놓은 것

   db쪽 도와주는 mybatis / 쪽 자바빈규약프레임웍 / client쪽 쪽 , 객체를 검증하는 프레임웍/

   view쪽 지원하는 컴포짓뷰 프레임웍/ controller지원하는 스프링 프레임웍

  

service, 로직은 나만의 특수성, 여기는 프레임웍이 존재하지 않는다.


jsp spec 

서블릿 스펙 기반의 스크립트 형태로 동작하는 템플릿 엔진

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>  : 서버사이드 

 

jsp는 템플릿 엔진. 진짜소스가 아니다.

(web.xml이 있는 톰캣또한 웹 어플리케이션이다.)

톰캣의 web.xml

이 맵핑 정보를 지우면 jsp는 servlet으로서의 역할을 전혀 할 수 없다. 동적이 안됨. 

==> 서블릿 기반.

jsp는 컴파일하지 않는 인터프리터 언어 방식의 js처럼 사용하지만 사실은...

 

work 폴더 타고 들어가면 진짜소스인 java와 class소스가 있다.

누가 컴파일햇는가? 톰캣

jsp container로서의 톰캣

1. 소스요청받고 2. 컴파일 함 ==> 톰캣은 jsp의 존재를 알고 있었다. 맵핑 필요? no

 

컨테이너인 톰캣이 어떤 역할을 하느냐에 따라 달라지는 jsp와 서블릿의 차이를 다시 볼 수 있다.

 

JSP ? 서블릿 스펙 기반의 스크립트 형태로 동작하는 템플릿 엔진

 JSP 컨테이너의 역할 
1. 현재 요청을 처리할 수 있는 Jsp 검색 (싱글턴 인스턴스 검색)
2-1. 검색됐다면, callback 메소드를 호출해 응답 전송
2-2. 검색에 실패한 경우, 
3. jsp 템플릿을 대상으로 서블릿 소스 생성 (work)
4. 컴파일
5. 싱글턴 인스턴스 생성
6. callback 메소드 호출해 응답 전송

 

 Servlet 컨테이너의 역할 
1. 현재 요청을 처리할 서블릿의 인스턴스 검색
2-1. 검색됐다면, callback 메소드를 호출해 응답 전송
2-2. 검색에 실패한 경우,

3. jsp 템플릿을 대상으로 서블릿 소스 생성 (work)
4. 컴파일
5. 싱글턴 인스턴스 생성
6. callback 메소드 호출해 응답 전송

 

jsp 소스의 표준 구성 요소

1. 정적 텍스트 (Front-end) : 텍스트, HTML, JS, CSS
2. 동적 요소(Back-end) 
1) 스크립트 요소
    - scriptlet(지역코드화, _JSPService) : <% 
    //java code, 지역변수
        int currentYear = Calendar.getInstance().get(Calendar.YEAR);

    %>
    - expression : <%= "출력값" %>, <%=currentYear%>, <%=txt1 %>
    - directive	: <%@ page buffer="16kb"  %> : 현재 Jsp 페이지의 환경 설정, 속성으로 설정.
    (실행에 영향을 미치지는 않음.동작은 함. 일종의 전처리 구문. java의 import와 비슷)
        page(required)
        include(option) : 정적 내포
        taglib(option) : custom tag library 로딩
    - declaration(전역코드화) : 
    <%!
        private static String txt1 = "텍스트1";
        private String txt2 = "텍스트2";
        public void test(){}
    %>
    - comment : <%-- jsp comment --%>
        client side comment : HTML, JS, CSS
        <!-- HTML comment -->
        <script type="text/javascript">
            // JS comment
        </script>
        <style type="text/css">
            /* css comment */
        </style>
        server side comment : java comment, jsp comment
        <% // java comment %>
        <%-- jsp comment --%>
2) EL(expression language)
3) jsp 액션 태그
4) JSTL(jsp standard tag library)

전역변수를 private으로만 거의 선언한다. 왜?

public : 이 객체의 상태에 접근하겠다...>데이터 공유에 목적이 있다. > servlet, jsp에서는 데이터 공유가 필요가 없다. 

>> 싱글톤으로 톰캣이 관리하기 때문에 그 인스턴스를 얻어올 수 없다. (참조주소를 못받아온다. 래퍼런스가 없다.)

>> static을 소유한 클래스명을 알 수가 없다. 톰캣만 알고 있다. public이 쓸데가 없다.

Attribute로 데이터를 주고 받음

 

그냥 필기

사용범위

블록변수 < 지역변수 <인스턴트 전역변수 < 스테틱 전역변수

 

최종

>> 저장할 때마다 다시 컴파일 했을 톰캣... 고생했다 ㅠ

 

블록변수
declaration 선언부 기호로 선언한 전역변

 

스크립트 언어라면 이런 형태의 구조 불가능=> 선언후에 사용할 수 있음

컴파일 언어여야 가능

 

comment : client 사이드에서 주석을 달면 크기가 무거워진다.

 

Throwable : 모든 이셉션의 최상위

 

/*
table 태그 한 단이 한 로우
행은 8
열은 9개 2*2=4
*/

2*1=2 2*2=4              
3*1=3                
                 
                 
                 
                 
                 
                 

 


컨테이너 

 

 


resource

🚩각각의 리소스의 차이는 어떤지?

🚩웹 리소스를 접근할 때 사용하는 url의 표현방식

 

반응형