context
1.당신이 이빨을 뽑으러 치과에 간다고 해봅시다.
접수원이 당신에게 이름을 묻는다면, 그것은 접수를 시작하기 위해 필요한 정보들일 것입니다. 앞의 예에서는 당신의 이름은 context적인 정보가 되겠죠. 치과를 방문한다는 context 에서 당신은 이빨을 뽑기위해 당신의 이름을 제공해야하는거죠
2.이번엔 은행에 간다고 해봅시다.
은행에서 당신은 100달러를 인출하려 합니다. 은행원은 당신에게 돈을 주기전에 당신의 정체성을 확립해야하므로, 아마 당신은 그들에게 운전면허증을 보여주거나, ATM카드를 긁거나 PIN 번호를 입력해야 할 것입니다. 이와 같이 당신이 제공하는 것이 context입니다. 은행원은 받은 정보를 통해 일을 다음단계를 진행합니다. 은행원은 당신에게 어떤 계좌에서 인출할 것인지 물어볼 것입니다. 그때 당신이 “내 예금 계좌요” 라고 대답한다면, 그것은 추가적인 context가 됩니다.
더 많은 context를 당신이 제공할수록, 더 많은 지식을 다른 편에 제공할수록, 상대방이 당신의 요청에 대처하는데 도움을 주는 것입니다. 어떨 때는 context는 선택적입니다.(구글 검색에서 더 많은 단어를 입력할수록 더 정확한 결과가 나온다.) 그리고 때때는 필수적입니다(ATM에 PIN 번호를 입력한는 것) 어떤 방법이든 context의 정보는 일이 진행되는 도움을 주게됩니다.
3.이제 100달러를 가지고 당신이 비행기 표를 끊어 입안이 낫는 동안 어디 따뜻한 곳으로 놀러간다고 해봅시다.
당신은 화창한 도착지에 도착합니다. 하지만 당신의 가방은 그러지 못합니다. 가방은 공항 시스템 어디엔가에서 길을 잃은 거죠. 그래서 당신은 “짐 요청 티켓”(바코드가 찍힌 스티커)를 들고 “분실물 센터”로 갑니다. 담당자는 가장먼저 당신에게 짐의 바코드가 적힌 티켓을 요구할겁니다. 이게 필수 context의 한 예입니다.
그러나 분실물 센터 담당자는 당신에게 가방에 대한 추가적인 정보를 물어볼 것입니다. 더 쉽게 찾기 위해서죠. 그들은 “색깔은 뭐죠? 크기는 어떻죠? 바퀴가 있나요? 단단한가요 부드럽나요?” 사실 그들은 그런 정보가 필수적 이진 않지만, 제공한다면, 검색 범위를 좁혀주긴 할 테죠. 그러면 더 빨리 찾을 수 있고, 이게 선택적 context입니다.
가장 중요한 부분입니다. 많은 소프트웨와 API들에서 함수의 명세의 실제 매개변수로 required context를 요구합니다. Optional context는 다른 곳에서, 유연한 어떤 값도 담을 수 있는(값이 없을 수도 있는)키-값 맵 같은 거나, 필요할 때마다 어디서든 접근할 수 있는 Thread-local storage에서 사용합니다..
위의 예제는 현실 세계에서의 얘기이긴 하지만 컴퓨터 공학 분야에도 쉽게 적용할 수 있어요. 예를 들면, HTTP 헤더들은 context적인 정보를 담고 있어요. 각 헤더는 어떤 용청이 발생했는지에 대한 내용을 담고 있죠. 또한한 two-phase commit process 의 일부로 전역 트랜잭션 아이디를 보낸다면, 트랜잭션 아이디는 context가 됩니다. 아이디는 테스크의 전반적인 정보이므로, 트랜젝션 매니저가 작업을 조정하는데 큰 도움이 됩니다.
결론
요약하자면 Context는 어떤 행위가 일어나기 위해서 필수적인 필수 Context,
그 행위를 더욱 효과적으로 할 수 있게해주는 선택적 Context가 있다.
Context는 어떤 행위(Task. Method..)를 위한 정보의 통칭이다.
mimeType
MIME(Multipurpose Internet Mail Extensions) 이란
MIME은 다목적 인터넷 메일 확장이란 뜻으로 전자우편의 데이터 형식을 정의한 표준 포맷입니다.
전자우편은 7비트 ASCII 코드를 사용하여 전송되기 때문에 문자 데이터 이외의 바이너리 데이터(이미지, 동영상, MS 워드같은 문서 등)를 전송할 수 없었습니다.
때문에 여러 멀티미디어 데이터들의 바이너리 데이터를 ASCII코드로 변환하는 방법(인코딩)과 미디어 종류를 MIME 타입 목록으로 정의 하였고, MIME 사양에 따라 멀티미디어 파일의 데이터를 ASCII 데이터로 변환 후 전송하였습니다.
이때 송신측에서는 전송 ASCII 데이터가 원래는 어떤 형식의 파일이었는지 MIME 타입을 기록하여 전송하는데 수신측에서는 해당 MIME 타입을 참고하여 수신한 ASCII 데이터를 원래의 멀티미디어 바이너리로 변환하여 해석합니다.
이렇게 하면 ASCII 데이터만 전송할 수 있는 인터넷 메일의 한계를 극복함과 동시에 여러가지 타입의 멀티미디어 데이터를 주고 받을 수 있는 것입니다.
추가) MIME의 이름에서도 알 수 있듯이 전자우편에서 사용하기 위해 등장했지만 지금은 HTTP 통신에서 전송 데이터를 표현하기 위해서도 사용하고 있습니다.
MIME 사용 예시
1 ~ 2) 송신자는 바이너리 데이터인 이미지 파일 aaa.png 를 MIME 사양에 맞게 ASCII코드로 인코딩합니다. 표현합니다.
- 인코딩된 이미지 데이터를 수신자에게 전송합니다.
4 ~ 5) 수신자는 인코딩된 이미지 데이터(ASCII) 를 MIME TYPE image/png 의 사양에 맞게 다시 aaa.png 바이너리 데이터로 디코딩 합니다.
MIME TYPE
MIME는 '/'(슬래쉬) 로 구분하여 메인타입과 서브타입으로 구성되어 있습니다.
이미지를 예로 들자면 image 메인타입의 서브타입으로 image/gif, image/jpeg 와 같이 구성됩니다.
MIME 타입으로는 대표적으로 다음과 같은 타입들이 있는데, 서브타입을 보면 대충 어떤것을 의미하는지 알 수 있을것입니다.
메인타입
|
설명 |
서브 타입
|
text |
텍스트를 표현합니다.
|
text/plain, text/html, text/css, text/javascript
|
image
|
이미지를 표현합니다.
|
image/gif, image/png, image/jpeg, image/bmp
|
video
|
동영상을 표현합니다.
|
video/mp4, video/ogg, video/mpeg4-generic |
application
|
모든 종류의 이진 데이터를 표현합니다.
|
application/octet-stream, application/vnd.mspowerpoint, application/xml, application/pdf, application/json
|
multipart
|
여러가지 타입의 데이터들을 동시에 전송할 때 사용합니다.
|
multipart/form-data, multipart/byteranges
|
표준 액션 태그(Standard Action Tag)
→Java 명령으로 구현해야 되는 기능을 JSP 태그로 제공
→표준 액션 태그는 [jsp] 접두사(NameSpace)를 이용하여 사용가능
1.include 태그: 현재 JSP 문서에서 다른 JSP 문서로 스레드를 이동하여 실행된 명령의 결과(HTML)를 제공받아 현재 JSP 문서에 포함하는 태그
2.forward 태그: 현재 JSP 문서에서 다른 JSP 문서로 스레드를 이동하여 실행된 명령의 결과(HTML)를 클라이언트에게 전달(응답)하는 태그
3.param : 현재 JSP 문서에서 다른 JSP 문서로 스레드가 이동될 경우 (문자열 -String)을 전달하기 위한 태그 - include 태그 또는 forward 태그의 자식태그로 사용
4.useBean 태그 : JSP 문서에서 인스턴스를 생성하여 내장객체의 속성값으로 저장하거나 내장객체의 저장된 속성값(인스턴스)를 반환하여 제공하는 태그
5.setProperty 태그 - useBean 태그로 제공되는 인스턴스의 필드값을 변경하는 태그 (Setter 메소드 호출) - useBean 태긔의 종속 태그
6.getProperty 태그 : useBean 태그로 제공되는 인스턴스의 필드값을 반환하는 태그 (Getter 메소드 호출)-useBean 태그의 종속 태그
VO: 자바에서 사용할 때/
DTO: DAO에서 사용하기 위한 목적
useBean : 웹 받은 전달값을 저장하기 위한 목적
useBean
useBean 태그 : 내장객체에 저장된 속성값을 인스턴스로 반환받아 저장하거나 인스턴스를 생성하여 내장객체의 속성값으로 저장하는 태그 - 인스턴스 제공
형식 : <jsp:useBean id="식별자" class="클래스" scope”스코프”></jsp:useBean>
→id 속성(필수) : 반환(생성)되는 인스턴스를 저장하기 위한 이름(변수명)을 속성값으로 설정
◾내장객체에 저장되는 속성값의 속성명을 표현하기
→class 속성(필수) : 반환(생성)되는 인스턴스의 자료형(클래스)를 속성값으로 설정
→scope 속성(선택) : page(기본), session, application 중 하나를 속성값으로 설정
자바 형식으로 변경 시
<jsp:useBean id="hewon" class="xyz.itwill.bean.Hewon" scope="request"></jsp:useBean>
== Hewon hewon=new Hewon(); request.setAttribute("hewon", hewon);
setProperty 태그
useBean 태그로 제공된 인스턴스의 필드값을 변경하는 기능을 제공하는 메소드
→JavaBean 클래스의 Setter 메소드를 호출하는 명령과 유사한 기능을 제공
형식 : <jsp:setProperty name="식별자" property="필드명" value=”값”/>
→name 속성(필수) : useBean 태그로 제공되는 인스턴스의 식별자(id 속성값)을 속성값으로 설정
→property 속성(필수) : useBean 태그로 제공되는 인스턴스의 필드명을 속성값으로 설정
→value 속성(선택) : useBean 태그로 제공되는 인스턴스의 필드명값을 필드값의 속성값으로 설정
<jsp:setProperty name="hewon" property="name" value="홍길동"/>
== hewon.setName(”홍길동”);
→value 속성을 생략하면 JSP 문서 요청시 전달된 값을 반환받아 필드값을 변경
→전달되는 이름(입력태그의 name 속성값)과 property 속성값(자바클래스의 필드명)이 동일해야만 전달값을 반환받아 필드값으로 변경
<jsp:setProperty name="hewon" property="name" />
== hewon.setName(request.getParameter(name));
→ property의 속성값을 [*]로 설정한 경우 모든 전달값을 반환받아 필드값으로 변경
→전달되는 이름과 필드명이 동일해야만 전달값을 반환받아 필드값 변경 가능
<jsp:setProperty name="hewon" property="*" />
getProperty 태그
: useBean 태그로 제공된 인스턴스의 필드값을 반환받는 기능을 제공하는 메소드
→JavaBean 클래스의 Getter 메소드를 호출하는 명령과 유사한 기능을 제공
형식 : <jsp:getProperty name="식별자" property="필드명" value=”값”/>
→name 속성(필수) : useBean 태그로 제공되는 인스턴스의 식별자(id 속성값)을 속성값으로 설정
→property 속성(필수) : useBean 태그로 제공되는 인스턴스의 필드명을 속성값으로 설정
→value 속성(선택) : useBean 태그로 제공되는 인스턴스의 필드명값을 필드값의 속성값으로 설정
출처:
https://dololak.tistory.com/130
https://pflb.tistory.com/entry/Context가-뭐죠
'일상 > 일기장' 카테고리의 다른 글
TIL20.02.21 (0) | 2022.01.21 |
---|---|
TIL22.01.18 (0) | 2022.01.18 |
TIL 22.01.16 (2) | 2022.01.16 |
[22.01.13] 작은 발걸음(25) (0) | 2022.01.13 |
[22.01.12] 작은 발걸음(24) (0) | 2022.01.12 |
댓글