111. DBCP(Database Connection Pool)
DB와 연결된 Connection 을 미리 생성해서 Pool에 저장, 사용자 요청시 꺼내서 사용 후 연결 종료되면 반환
자바 어플리케이션에서 데이터베이스 연결을 관리하는 데 사용되는 소프트웨어 컴포넌트. 데이터베이스 연결은 비용이 많이 들고 시간이 많이 걸리는 작업 중 하나이기 때문에, 애플리케이션 성능에 영향을 미칠 수 있다. DBCP는 이런 문제를 해결하기 위해 사용된다.
DBCP는 데이터베이스 연결을 미리 만들어두고 풀(pool)에 저장해둠으로써, 애플리케이션이 필요할 때마다 이 풀에서 연결을 가져다 사용할 수 있게 한다. 연결을 사용한 후에는 다시 풀에 반환되어 재사용된다. 이렇게 함으로써 데이터베이스 연결을 여러 번 만들고 끊는 과정을 피할 수 있어서 성능이 향상된다.
또한 DBCP는 연결 풀에서 연결을 관리하고, 연결이 유효한지 확인하고, 유효하지 않은 연결을 제거하여 안정성을 높이는 역할도 한다. 이는 애플리케이션이 데이터베이스와의 안정된 통신을 유지할 수 있도록 도와준다.
112. DOM(Document Object Model)
문서 객체 모델, 프로그램이나 스크립트가 웹페이지 내의 구성요소로 접근하여 내용이나 스타일을 변경하게 해주는 인터페이스
웹 페이지를 프로그래밍적으로 조작하는 데 사용되는 인터페이스. 웹 페이지의 구조화된 표현을 제공하여 프로그래밍 언어가 웹 페이지의 내용, 구조 및 스타일을 변경할 수 있게 한다.
웹 브라우저가 HTML, XML 문서를 로드할 때, 이러한 문서는 브라우저 메모리에 로드되고 웹 페이지의 구조화된 표현으로 변환된다. 이러한 구조화된 표현을 DOM이라고 한다. DOM은 트리 구조로 표현되며, 각 HTML 또는 XML 요소는 트리의 노드로 나타난다. 각 노드는 요소, 속성, 텍스트 또는 다른 유형의 문서 구성 요소일 수 있다.
DOM은 웹 개발자가 스크립트 언어(주로 자바스크립트)를 사용하여 웹 페이지의 내용이나 스타일, 동작을 동적으로 변경할 수 있게 한다. 예를 들어, DOM을 사용하면 웹 페이지의 요소를 찾고, 그 내용을 변경하거나 새로운 요소를 추가하거나 삭제할 수 있다. 이는 웹 애플리케이션의 동적인 기능을 구현하는 데 주로 사용된다.
DOM은 웹 브라우저 환경 뿐만 아니라, 다양한 환경에서 사용될 수 있니다. 예를 들어, 서버 측 자바스크립트(Node.js) 환경에서도 DOM을 사용하여 HTML 문서를 생성하고 조작할 수 있다.
113. MVC(Model, View, Controller)
모델은 소프트웨어 내에서 데이터를 의미하고 뷰는 사용자에게 보이는 화면 내용을 의미한다. 모델과 뷰의 상호작용을 관리하는 것이 컨트롤러이다. 모델, 뷰, 컨트롤러가 기능별로 독립적으로 분리되어 있어서 여러 명이 동시에 각각의 기능을 개발할 수 있고, 코드 재사용성도 향상된다.
소프트웨어 디자인 패턴이며, 소프트웨어를 구성하는 세 가지 주요 컴포넌트를 나타낸다. 이 패턴은 소프트웨어의 설계와 구현을 더 효율적으로 만들어주고, 유지보수를 쉽게 만들어준다.
1) 모델(Model) : 데이터와 그 데이터를 처리하는 로직을 나타낸다. 즉, 애플리케이션의 상태와 동작을 관리한다. 데이터베이스, 파일, 외부 서비스로부터 데이터를 가져오고 필요한 연산을 수행하는 부분을 모델이 담당한다. 모델은 데이터의 상태를 저장하고 데이터에 관련된 작업을 수행한다.
2) 뷰(View) : 사용자에게 정보를 표시하고 사용자의 입력을 받는 부분. 사용자 인터페이스(UI)를 나타내며, 모델의 상태를 보여주는 역할을 한다. 뷰는 사용자에게 정보를 보여주기 위해 모델의 데이터를 가져오고 표시하는 역할을 한다. 사용자가 뷰를 통해 어떠한 동작을 하면 컨트롤러에 통보하여 적절한 조치를 취할 수 있다.
3) 컨트롤러(Controller) : 모델과 뷰 사이의 중개자 역할. 사용자의 입력을 받아 모델에 명령을 전달하거나, 모델의 상태 변화를 감지하여 뷰를 업데이트한다. 즉, 사용자의 요청을 받고 그에 맞는 모델의 조작을 수행한 후, 그 결과를 뷰에 반영하는 역할을 한다. 사용자가 어떠한 동작(예: 버튼 클릭)을 할 때 이에 대한 응답을 결정하고, 모델의 업데이트를 처리한다.
MVC 패턴은 소프트웨어를 구조화하고 유지보수하기 쉽게 만들어주며, 여러 사람이 협업하는 프로젝트에서 코드의 가독성과 유연성을 높여준다. 이 패턴을 사용하면 데이터, 사용자 인터페이스, 그리고 애플리케이션 로직이 서로 독립적으로 존재할 수 있으며, 이는 코드의 재사용성을 높이고 유지보수를 용이하게 만들어준다.
114. EL(Expression Language)
주로 JSP(JavaServer Pages)와 서블릿 기반의 웹 어플리케이션에서 사용되는 스크립트 언어. EL은 JSP 페이지에서 데이터를 표현하고 조작하기 위해 사용된다. JSP 템플릿에서 Java 코드를 줄이고 가독성을 높이는 데 도움이 된다. 기본적으로 EL은 변수, 속성, 맵, 리스트와 같은 데이터 구조에 접근하고 그 값을 표현하는 데 사용된다. EL 표현식은 `${expression}` 형식으로 나타낸다.
예를 들어, 서블릿에서 JSP 페이지로 데이터를 전달하고 그 데이터를 출력하는 경우, 서블릿에서 데이터를 JSP 페이지로 전달한 후, JSP 페이지에서 EL을 사용하여 그 데이터를 출력할 수 있다.
서블릿에서 데이터를 설정하는 예시
request.setAttribute("name", "John");
JSP 페이지에서 EL을 사용하여 데이터를 출력하는 예시
<p>Welcome, ${name}!</p>
이렇게 EL을 사용하면 서블릿에서 JSP로 데이터를 전달하고, JSP 페이지에서 해당 데이터를 동적으로 출력할 수 있다. EL은 또한 산술 연산, 논리 연산, 비교 연산 등을 지원하여 복잡한 표현식을 작성할 수 있다. EL을 사용함으로써 코드의 가독성을 높이고 유지보수를 용이하게 만들 수 있다.
115. OGNL(Object-Graph Navigation Language)
객체 그래프를 탐색하고 조작하기 위해 사용되는 표현 언어. 주로 자바 기반의 웹 애플리케이션 등 다양한 프레임워크에서 사용되며, 애플리케이션의 데이터를 표시하고 조작하기 위해 사용. 객체의 프로퍼티 액세스, 메서드 호출, 컬렉션 조작 등 다양한 기능을 제공
OGNL은 객체 그래프를 탐색하고 객체의 속성 값을 읽거나 설정하는데 사용된다. 이는 자바 객체의 멤버 변수, 메서드, 인덱스를 편리하게 접근할 수 있게 해준다. OGNL은 다양한 데이터 구조에 대해 작동할 수 있으며, 복잡한 객체 그래프에서 원하는 데이터를 추출하는 데 유용하다.
116. Zero Configuration
소프트웨어나 시스템의 구성을 수동으로 설정하지 않고도 자동으로 기능하도록 설계된 개념
사용자나 개발자가 별다른 설정이나 구성을 하지 않아도 시스템이 자동으로 동작하고 초기화되는 것을 의미
(사용자 편의성과 개발 생산성을 증가)
컴퓨터 네트워크 환경에서 기기들이 서로를 자동으로 인식하고 통신할 수 있도록 하는 기술과 프로토콜 집합
사용자가 별도의 설정이나 구성을 할 필요 없이 장치들이 네트워크에서 자동으로 인식되고 상호 작용할 수 있게끔 하는 것을 목표로 한다.
Zero Configuration 주요 기능 : 자동 IP 할당, 자동 서비스 검색, 자동 이름 해결, Plug and Play 기능 등
예를 들어, 웹 프레임워크나 라이브러리가 제로 컨피규레이션을 제공하는 경우, 개발자는 기본 설정을 사용하여 간단한 애플리케이션을 빠르게 만들 수 있고, 필요한 경우 구성을 조정하거나 오버라이드할 수 있다.
제로 컨피규레이션은 특히 클라우드 환경이나 마이크로서비스 아키텍처에서 중요한 개념으로 부각되며, 시스템의 배포 및 확장을 단순화하고 개발자 및 운영자의 부담을 줄이는 데에 도움을 준다.
117. Prefix
문자열의 앞에 추가되는 부분, JSTL에서 태그 라이브러리의 접두사 설정
문자열이나 단어의 시작 부분. 주로 텍스트 처리 및 문자열 조작에서 사용되며 단어의 의미나 문맥을 바꿀 때 사용된다. 또한, 프로그래밍에서 문자열을 처리할 때 특정 접두어가 포함된 문자열을 찾거나 제거하는 등의 작업에 사용될 수 있다.
118. Suffix
문자열의 뒤에 추가되는 부분
문자열이나 단어의 끝 부분. 단어의 의미나 문맥을 바꿀 때 사용되며 프로그래밍에서 문자열을 처리할 때 특정 접미사가 포함된 문자열을 찾거나 제거하는 등의 작업에 사용될 수 있다.
119. Property
JSTL을 통해 자바 객체의 필드나 getter 메서드를 가리키며, EL을 사용하여 객체의 프로퍼티 값을 읽어오거나 표현하는 데 사용.
자바 객체의 속성(필드) 또는 getter 메서드를 나타낸다. 즉, 객체의 데이터나 상태를 나타내는데 사용되는 것. 자바에서 객체 지향 프로그래밍을 할 때, 객체의 데이터는 주로 private 필드로 선언되고, 이러한 필드에 접근하거나 수정하기 위한 public getter와 setter 메서드를 정의한다.
예를 들어, 다음과 같은 자바 클래스가 있다고 가정했을 때,
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
이 클래스는 `name`이라는 프로퍼티를 가지고 있다. 이 프로퍼티는 `name` 필드와 `getName()`, `setName(String name)`이라는 getter와 setter 메서드로 구성된다.
1) JSTL을 통한 프로퍼티 접근 : 위의 `Person` 클래스의 인스턴스가 JSTL 태그로 전달되면, JSTL을 사용하여 해당 객체의 프로퍼티를 접근할 수 있다.
<c:set var="person" value="${person}" />
<p>Name: <c:out value="${person.name}" /></p>
2) EL을 통한 프로퍼티 접근 : 위의 `Person` 클래스의 인스턴스가 EL 표현식으로 전달되면, EL을 사용하여 해당 객체의 프로퍼티에 접근할 수 있다.
${person.name}
위의 예제에서 `${person.name}` EL 표현식은 `person` 객체의 `name` 프로퍼티 값을 나타낸다.
이렇게 JSTL과 EL을 사용하여 자바 객체의 프로퍼티에 접근하고 표현함으로써 웹 페이지에서 동적으로 데이터를 표시하고 다룰 수 있다.
120. JSTL( JavaServer Pages Standard Tag Library)
JSP 웹 애플리케이션에서 자주 사용되는 태그를 모아둔 표준 라이브러리. 복잡한 자바 코드를 최소화하고, 더 간결하고 읽기 쉬운 JSP 페이지를 작성할 수 있게 해준다. 이러한 태그들은 웹 애플리케이션에서 자주 사용되는 작업을 간소화하고 재사용성을 높이는 데 도움이 된다.
JSP 페이지에서 표준화된 태그들을 제공하여 반복문, 조건문, 변수 처리 등의 작업을 더 간결하게 표현하고 모듈화하는 데 사용되는 라이브러리로 Java EE환경에서 지원됨
JSTL 주요 기능 : 조건문과 반복문(<c:if>, <c:choose>, <c:when>, <c:otherwise>, <c:forEach>), 변수 선언 및 사용(<c:set>, <c:out>), 컬렉션 다루기(<c:forEach>), URL 처리(<c:import>, <c:param>, <c:redirect>), 데이터 포맷팅(<fmt:formatDate>, <fmt:formatNumber>) 등
JSTL을 사용하려면 웹 애플리케이션의 클래스패스에 JSTL 라이브러리(JAR 파일)를 포함시키고 JSP 페이지에서 `<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>`와 같이 태그 라이브러리를 선언해야 한다. 이러한 JSTL 태그들을 사용하면 JSP 페이지의 가독성을 높이고 유지보수를 용이하게 만들어준다.