JSP(JavaServer Pages)는 서버 측에서 동적으로 웹 페이지를 생성하는 기술로, HTML 안에 Java 코드를 포함하여 웹 페이지를 작성할 수 있습니다. JSP는 Java 언어를 기반으로 하여, 서블릿 컨테이너에서 실행됩니다

특징

  • 간편한 문법
    JSP는 HTML과 Java 코드를 혼합하여 사용하기 때문에 웹 개발자에게 친숙하고 익숙한 문법을 제공합니다
  • 동적 콘텐츠 생성
    JSP를 사용하면 동적 콘텐츠를 생성할 수 있으며, 서버 측에서 데이터를 처리하여 동적으로 페이지를 생성할 수 있습니다
  • 재사용 가능한 컴포넌트
    JSP는 Java의 기능을 활용하여 재사용 가능한 컴포넌트를 생성할 수 있습니다. 이를 통해 코드의 재사용성을 높일 수 있습니다

장단점

장점

  • 서버측에서 동적으로 웹 페이지를 생성할 수 있어 다양한 콘텐츠를 제공할 수 있습니다
  • Java 언어를 기반으로 하기 때문에 안정적이고 강력한 기능을 제공합니다
  • 웹 개발자가 익숙한 HTML 문법을 사용하여 쉽게 웹 페이지를 작성할 수 있습니다

단점

  • Java 코드와 HTML 코드가 혼합되기 때문에 코드가 복잡해질 수 있습니다
  • JSP는 서블릿으로 변환되어 실행되기 때문에 초기 로딩 시간이 길어질 수 있습니다
  • 코드의 가독성과 유지보수성이 낮아질 수 있습니다

동향

최근 몇 년간 프론트엔드 기술의 발전으로 인해 클라이언트 측에서도 동적으로 콘텐츠를 생성하고 제어할 수 있는 기술들이 많이 등장했습니다

이로 인해 JSP보다는 SPA(Single Page Application)와 같은 프론트엔드 프레임워크 및 라이브러리 사용이 더 많아지고 있습니다

View Resolver는 스프링 MVC에서 사용되는 핵심 기능 중 하나로, 컨트롤러가 반환한 뷰 이름을 실제 뷰 객체로 매핑하는 역할을 합니다

즉, View Resolver는 뷰의 위치를 찾아 컨트롤러에게 반환해줍니다

 

동작 방식

View Resolver는 설정된 규칙에 따라 뷰의 위치를 찾습니다

스프링에서는 다양한 View Resolver 구현체를 제공하며, 가장 일반적으로 사용되는 것은 다음과 같습니다

  • InternalResourceViewResolver
    내부 자원을 이용하여 JSP나 HTML 파일을 처리합니다
    일반적으로 웹 애플리케이션에서 사용되는 기본적인 View Resolver입니다
  • UrlBasedViewResolver
    URL 기반의 뷰를 처리하는 Resolver입니다
    주로 리다이렉션과 같은 기능을 구현할 때 사용합니다
  • XmlViewResolver
    XML 파일을 이용하여 뷰를 처리하는 Resolver입니다
    XML 파일에 정의된 뷰를 사용하여 동적으로 뷰를 생성할 수 있습니다
  • JsonViewResolver
    JSON 형식의 뷰를 처리를 Resolver입니다
    주로 AJAX 요청에 대한 응답으로 JSON 데이터를 반환할 때 사용됩니다
  • ContentNegotiatingViewResolver
    Apache Tiles와 같은 타일 시스템을 사용하여 뷰를 처리하는 Resolver입니다
    여러 개의 작은 타일로 구성된 화면을 동적으로 조합할 수 있습니다

이러한 View Resolver는 스프링의 설정 파일에 정의되어 있으며, 설정된 우선순위에 따라 뷰를 찾습니다

설정 방법

XML 설정 파일을 이용한 설정

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

Java Config를 이용한 설정

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

장점

  • 유연한 설정
    View Resolver를 사용하면 뷰의 위치나 종류를 유연하게 변경할 수 있습니다
    설정 파일을 수정함으로써 쉽게 뷰를 변경할 수 있습니다
  • 간편한 사용
    View Resolver를 설정하면 컨트롤러에서는 뷰의 위치나 종류를 명시적으로 지정할 필요가 없습니다
    이를 통해 코드가 간결해지고 유지보수가 용이해집니다

 

DOM(Document Object Model)은 웹 페이지의 구조를 표현하는 객체 모델로, HTML이나 XML 문서를 프로그래밍적으로 조작할 수 있는 인터페이스를 제공합니다

모든 웹 페이지 요소는 DOM을 통해 접근하고 조작할 수 있으며, JavaScript를 사용하여 동적으로 수정할 수 있습니다

DOM의 구조

DOM은 트리 구조로 이루어져 있으며, 각 요소는 노드(Node)라고 부릅니다

DOM의 주요 노드 유형은 다음과 같습니다

  • 요소 노드(Element Node)
    HTML 요소를 나타냅니다
  • 속성 노드(Attribute Noe)
    HTML 요소의 속성을 나타냅니다
  • 테스트 노드(Text Node)
    HTML 요소의 텍스트를 나타냅니다
  • 주석 노드(Comment Node)
    HTML 문서의 주석을 나타냅니다

DOM 조작

요소 선택

JavaScript를 사용하여 원하는 요소를 선택할 수 있습니다

예를 들어, 아이디가 "myElement"인 요소를 선택하는 방법은 다음과 같습니다

var element = document.getElementById("myElement");

요소 조작

선택한 요소의 내용이나 스타일을 등을 변경할 수 있습니다

예를 들어, 텍스트 내용을 변경하는 방법은 다음과 같습니다

element.textContent = "새로운 내용";

요소 추가 및 삭제

DOM을 사용하여 새로운 요소를 추가하거나 기존 요소를 삭제할 수 있습니다

예를 들어, 새로운 div 요소를 추가하는 방법은 다음과 같습니다

var newDiv = document.createElement("div");
document.body.appendChild(newDiv);

장점

  • 동적 조작
    DOM을 사용하면 JavaScript를 통해 웹 페이지를 동적으로 조작할 수 있으며, 이를 통해 사용자 경험을 향상시킬 수 있습니다
  • 프로그래밍적 접근
    DOM을 사용하면 프로그래밍적으로 웹 페이지의 구조와 내용에 접근할 수 있어서 다양한 기능을 구현할 수 있습니다

 

jQuery는 HTML 문서의 요소를 선택하고 조작하는 데 사용되는 강력한 자바스크립트 라이브러리입니다
jQuery를 사용하면 DOM 조작, 이벤트 처리, 애니메이션 등을 간단하고 효율적으로 수행할 수 있습니다
추가로 브라우저 간의 호환성 문제를 고려한 라이브러리입니다

주요 기능

DOM 조작

jQuery는 CSS 선택자를 사용하여 HTML 요소를 선택하고 조작하는 기능을 제공합니다
예를 들어, 아래 코드는 id가 "myElement"인 요소의 텍스트를 변경하는 예제입니다

$("#myElement").text("Hello, jQuery!");

이벤트 처리

jQuery를 사용하면 간단하게 이벤트 처리를 할 수 있습니다
예를 들어, 아래 코드는 버튼을 클릭할 때 메시지를 표시하는 예제입니다

$("button").click(function() {
    alert("Button clicked!");
});

애니메이션

jQuery를 사용하면 애니메이션 효과를 쉽게 추가할 수 있습니다
예를 들어, 아래 코드는 요소를 서서히 나타나게 하는 페이드 인 효과를 적용하는 예제입니다

$("#myElement").fadeIn();

장점

  • 간편한 문법
    jQuery는 직관적이고 간결한 문법을 제공하여 개발자가 코드를 빠르게 작성할 수 있도록 도와줍니다
  • 브라우저 호환성
    jQuery는 다양한 브라우저에서 일관된 동작을 보장하여 개발자가 크로스 브라우징 문제를 해결할 수 있도록 도와줍니다
  • 풍부한 플러그인
    jQuery는 다양한 플러그인을 제공하여 다양한 기능을 확장할 수 있습니다
    이를 통해 개발자는 필요에 따라 기능을 선택하여 사용할 수 있습니다

JSTL(JSP Standard Tag Library)은 JSP(JavaServer Pages) 개발을 위한 태그 라이브러리로, 자주 사용되는 로직을 간편하게 구현할 수 있도록 지원합니다 

JSTL은 JSP의 스크립팅 코드를 줄이고, 코드의 가독성과 유지보수성을 향상시키는 데 도움을 줍니다

JSTL의 장점

  • 간편한 사용
    JSTL을 사용하면 반복문, 조건문 등을 간단하게 구현할 수 있습니다
  • 가독성 향상
    JSTL을 사용하면 스크립트릿 코드를 줄일 수 있어 코드의 가독성이 향상됩니다
  • 재사용성
    JSTL 태그들은 자주 사용되는 로직을 쉽게 재사용할 수 있습니다

JSTL의 주요 태그들

Core 태그

  • <c:if>: 조건문을 구현합니다
<c:if test="${age >= 18}">
    성인입니다.
</c:if>
  • <c:forEach>: 반복문을 구현합니다
<c:forEach var="i" begin="1" end="5">
    ${i}<br/>
</c:forEach>
  • <c:choose>, <c:when>, <c:otherwise>: 다중 조건문을 구현합니다
<c:choose>
    <c:when test="${score >= 90}">
        A 등급
    </c:when>
    <c:when test="${score >= 80}">
        B 등급
    </c:when>
    <c:otherwise>
        C 등급
    </c:otherwise>
</c:choose>
  • <c:set>, <c:out>: 변수를 설정하거나 출력합니다
<c:set var="message" value="Hello, JSTL!"/>
<c:out value="${message}"/>

Formatting 태그

  • <fmt:formatDate>: 날짜 형식을 지정하여 날짜를 포맷합니다
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd"/>
  • <fmt:formatNumber>: 숫자 형식을 지정하여 숫자를 포맷합니다
<fmt:formatNumber value="${price}" type="currency"/>

Functions 태그

  • <fn:length>: 문자열의 길이를 반환합니다
<fn:length value="${str}"/>
  • <fn:toUpperCase>, <fn:toLowerCase>: 문자열을 대문자나 소문자로 변환합니다
<fn:toUpperCase value="${str}"/>
<fn:toLowerCase value="${str}"/>

XML 태그

  • <x:parse>: XML 문자열을 파싱하여 XML 문서 객체를 생성합니다
<x:parse var="xmlDoc" xml="${xmlString}"/>
  • <x:out>: XML 값을 출력합니다
<x:out select="$xmlDoc/item/@name"/>

 

지시자 (Directives)

지시자는 JSP 페이지의 속성을 지정하는 데 사용됩니다

가장 일반적으로 사용되는 지시자는 다음과 같습니다

  • <%@ page %>
    페이지 속성을 정의합니다
  • <%@ include %>
    다른 JSP 페이지를 포함합니다
  • <%@ taglib %>
    사용자 정의 태그 라이브러리를 선언합니다
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

스크립트릿 (Scriptlets)

스크립트릿은 JSP 페이지 안에 Java 코드를 삽입하는 데 사용됩니다

이를 통해 동적으로 페이지를 생성할 수 있습니다

<%
    String name = "John";
    out.println("Hello, " + name + "!");
%>

표현식 (Expression)

표현식은 JSP 페이지 안에서 값을 출력하는 데 사용됩니다

일반적으로 변수나 메서드 호출의 반환 값을 출력하는 데 사용됩니다

<%= name %>

선언 (Declaration)

선언은 JSP 페이지 안에 변수나 메서드를 선언하는 데 사용됩니다

스크립트릿과 비슷하지만, 메서드나 변수를 선언하는 데 사용됩니다

<%! int count = 0; %>

주석 (Comment)

주석은 HTML 주석과 마찬가지로 JSP 페이지에서 사용됩니다

노출되지 않으며, 주로 코드의 설명이나 메모를 작성하는 데 사용됩니다

<%-- This is a JSP comment --%>

JSP(JavaServer Pages)에서 EL(Expression Language)은 변수, 속성, 배열 등을 간편하게 다룰 수 있는 표현 언어입니다

EL을 통해 JSP 파일에서 동적인 데이터를 쉽게 처리하고 출력할 수 있습니다

변수 사용

EL을 사용하여 JSP 파일에서 변수를 출력하는 방법은 매우 간단합니다

변수 이름을 `${}`안에 넣어주면 됩니다

<%-- 변수 선언 --%>
<% int age = 30; %>

<%-- EL을 사용하여 변수 출력 --%>
나의 나이는 ${age}세입니다.

속성 접근

JSP에서 자바 객체의 속성에 접근할 때도 EL을 사용할 수 있습니다

`${객체명.속성명}` 형식으로 사용합니다

<%-- 빈(bean) 객체 생성 --%>
<% Person person = new Person(); %>

<%-- 빈(bean) 객체의 속성 접근 --%>
이름: ${person.name}, 나이: ${person.age}

배열 접근

배열에 저장된 요소에 접근할 때는 인덱스를 사용하여 다음과 같이 접근합니다

<%-- 배열 선언 --%>
<% int[] numbers = {1, 2, 3, 4, 5}; %>

<%-- 배열 요소 출력 --%>
<%-- 첫 번째 요소 출력 --%>
첫 번째 요소: ${numbers[0]}

 

부트스트랩(Bootstrap)은 트위터에서 만든 오픈 소스 CSS 프레임워크로, 웹 개발을 보다 쉽고 빠르게 만들어주는 강력한 도구입니다
부트스트랩은 반응형 웹 디자인, 풍부한 UI 컴포넌트, 그리드 시스템 등을 제공하여 개발자들이 효율적으로 웹 애플리케이션을 구축할 수 있도록 도와줍니다

부트스트랩의 특징

  1. 반응형 웹 디자인
    부트스트랩은 모바일 기기에서부터 데스크톱까지 다양한 화면 크기에 대응하는 반응형 웹 디자인을 제공합니다
    이는 개발자가 별도의 CSS 코드를 작성하지 않고도 다양한 디바이스에서 웹 페이지가 일관된 사용자 경험을 제공할 수 있도록 도와줍니다
  2. 풍부한 UI 컴포넌트
    부트스트랩은 버튼, 폼 컨트롤, 카드, 네비게이션 바, 모달 등과 같은 다양한 UI 컴포넌트를 제공하여 개발자가 웹 애플리케이션의 시각적인 요소를 간편하게 디자인할 수 있도록 지원합니다
  3. 그리드 시스템
    부트스트랩은 강력한 그리드 시스템을 제공하여 개발자가 유연하고 효율적으로 레이아웃을 구성할 수 있도록 도와줍니다
    그리그 시스템을 활용하면 컨텐츠를 쉽게 정렬하고 배치할 수 있으며, 다양한 화면 크기에 대응하는 레이아웃을 쉡게 설계할 수 있습니다

부트스트랩의 사용법

부트스트랩을 사용하여 웹 애플리케이션을 개발하는 것은 매우 간단합니다

부트스트랩의 CSS 및 JavaScript 파일을 웹 페이지에 포함시키고, 제공되는 클래스들을 사용하여 원하는 디자인을 구성하면 됩니다

또한 부트스트랩의 공식 문서와 예제를 활용하여 더욱 쉽게 개발할 수 있습니다

 

아래는 간단한 예시입니다

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>부트스트랩 예제</title>
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container">
        <h1>부트스트랩을 활용한 웹 페이지</h1>
        <p>부트스트랩은 웹 개발을 더 쉽고 빠르게 만들어줍니다.</p>
        <button class="btn btn-primary">버튼</button>
    </div>
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>

 

HTML(HyperText Markup Language)은 웹 페이지의 구조를 정의하기 위한 마크업 언어입니다

웹 개발에서 가장 기본적이고 필수적인 언어로, HTML을 사용하여 텍스트, 이미지, 링크 등의 요소를 구성하여 웹 페이지를 생성합니다

HTML은 웹 브라우저에게 페이지의 구조를 알려주는 역할을 합니다

HTML의 기본 구조

HTML은 요소(Elements), 속성(Attributes), 값(Values), 콘텐츠(Contents)로 구성됩니다

  • 요소(Elements)
    HTML 문서의 구성 요소를 나타냅니다
    예를 들어, `<p>`, `<h1>`, `<a>`, `<img>` 등이 있습니다
  • 속성(Attribute)
    HTML 요소의 추가 정보를 제공합니다
    속성은 요소에 대한 추가적인 설정을 제공하며, 예를 들어 링크의 URL이나 이미지의 소스를 지정하는 데 사용됩니다
  • 값(Values)
    속성에 할당되는 값입니다
    예를 들어, `<a>` 요소의 `href` 속성에는 링크의 URL이 값으로 할당됩니다
  • 콘텐츠(Contents)
    HTML 요소 내에 포함되는 실제 내용을 나타냅니다
    예를 들어, `<p>` 요소의 경우 단락의 텍스트가 콘텐츠에 해당합니다
<태그 속성="값">콘텐츠</태그>

 

 

HTML 문서는 다음과 같은 기본적인 구조를 갖습니다

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>문서 제목</title>
</head>
<body>
    <!-- 웹 페이지의 내용 -->
</body>
</html>
  • <!DOCTYPE html>
    문서 유형을 정의하는 선언으로, HTML5 문서임을 나타냅니다
  • <html>
    HTML 문서의 시작과 끝을 나타내는 요소로, 모든 HTML 요소를 포함합니다
  • <head>
    웹 페이지의 메타데이터를 정의하는 요소로, 페이지 제목, 스타일 시트 링크, 스크립트 등을 포함합니다
  • <meta>
    문서의 메타데이터를 정의하는 요소로, 문자 인코딩 및 뷰포트 설정 등을 지정합니다
  • <title>
    웹 페이지의 제목을 정의하는 요소입니다
  • <body>
    웹 페이지의 본문을 정의하는 요소로, 텍스트, 이미지, 링크 등의 실제 내용을 포함합니다

 1. Universal Selector (전체 선택자)

전체 선택자는 HTML 문서 내의 모든 요소를 선택합니다

즉, 모든 요소에 동일한 스타일을 적용하려는 경우에 사용됩니다

예를 들어, 모든 요소의 글꼴을 Arial로 설정하고 여백을 0으로 만들려면 다음과 같이 작성할 수 있습니다

* {
    font-family: Arial;
    margin: 0;
    padding: 0;
}

 

2. Type Selector (타입 선택자)

타입 선택자는 HTML 요소의 유형을 선택합니다

특정 태그의 모든 인스턴스에 스타일을 적용할 때 유용합니다

예를 들어, 모든 `<h1>` 태그에 대해 글꼴 크기를 24px로 설정하고 색상을 파란색으로 지정하려면 다음과 같이 작성할 수 있습니다

h1 {
    font-size: 24px;
    color: blue;
}

 

3. Class Selector (클래스 선택자)

클래스 선택자는 HTML 요소의 클래스를 선택합니다

여러 요소에 동일한 스타일을 적용하려는 경우에 유용합니다

 

예를 들어, 클래스가 "highlight"인 모든 요소에 대해 배경색을 노란색으로 설정하려면 다음과 같이 작성할 수 있습니다

.highlight {
    background-color: yellow;
}

 

4. ID Selector (아이디 선택자)

아이디 선택자는 HTML 요소의 고유한 아이디를 선택합니다

페이지 내에서 특정 요소에 고유한 스타일을 적용할 때 사용됩니다

 

예를 들어, 아이디가 "header"인 요소에 대해 배경색을 회색으로 설정하고 글꼴을 굵게 설정하려면 다음과 같이 작성할 수 있습니다

#header {
    background-color: gray;
    font-weight: bold;
}

 

5. Attribute Selector (속성 선택자)

속성 선택자는 특정 HTML 요소의 속성을 선택합니다

특정 속성을 가진 요소에 스타일을 적용하는 데 사용됩니다

 

예를 들어, `target="_blank"` 속성을 가진 모든 링크에 대해 글꼴 색상을 빨간색으로 설정하려면 다음과 같이 작성할 수 있습니다

a[target="_blank"] {
    color: red;
}

 

6. Descendant Selector (하위 선택자)

하위 선택자는 특정 요소의 하위 요소를 선택합니다

부모 요소와 하위 요소는 공백으로 구분됩니다

 

예를 들어, `<div>` 요소 내부에 있는 모든 `<p>` 요소에 대해 특정 스타일을 적용하려면 다음과 같이 작성할 수 있습니다

div p {
    /* 스타일 적용 */
}

 

7. Child Selector (자식 선택자)

자식 선택자는 특정 요소의 직계 자식 요소를 선택합니다

부모 요소와 자식 요소는 `>` 기호로 구분됩니다

 

예를 들어, `<div>`의 직계 자식인 `<p>` 요소에 대해 스타일을 적용하려면 다음과 같이 작성할 수 있습니다

div > p {
    /* 스타일 적용 */
}

 

8. Adjacent Sibling Selector (인접 형제 선택자)

인접 형제 선택자는 특정 요소의 바로 뒤에 나오는 형제 요소를 선택합니다

두 요소는 같은 부모를 가져야 합니다

 

예를 들어, `<h2>` 바로 뒤에 나오는 `<p>` 요소에 대해 스타일을 적용하려면 다음과 같이 작성할 수 있습니다

h2 + p {
    /* 스타일 적용 */
}

 

9. General Sibling Selector (일반 형제 선택자)

일반 형제 선택자는 특정 요소 뒤에 나오는 모든 형제 요소를 선택합니다

형제 요소는 `~` 기호로 구분됩니다

예를 들어, `<h2>` 뒤에 나오는 모든 `<p>` ㅛㅇ소에 대해 스타일을 적용하려면 다음과 같이 작성할 수 있습니다

h2 ~ p {
    /* 스타일 적용 */
}

 

CSS(Cascading Style Sheets)는 웹 페이지의 스타일과 레이아웃을 정의하기 위한 언어입니다

HTML이 웹 페이지의 내용을 구조화하는 데 사용되는 반면, CSS는 이러한 구조에 시각적인 스타일을 적용하여 웹 페이지를 디자인하고 꾸밀 수 있습니다

CSS의 기본 구조

CSS는 일련의 규칙 집합으로 구성되어 있습니다

각 규칙은 선택자(selector), 속성(property), 값(value)으로 이루어져 있습니다

선택자는 스타일을 적용할 HTML 요소를 선택하는 데 사용되며, 속성은 선택한 요소의 스타일을 지정하고 값은 해당 속성에 적용할 스타일의 값을 나타냅니다

선택자 {
  속성: 값;
}

 

예를 들어, 모든 `<h1>` 요소의 글꼴 색상을 빨간색으로 지정하려면 다음과 같이 작성할 수 있습니다

h1 {
  color: red;
}

 

CSS의 적용 방법

CSS는 웹 페이지에서 3가지 방법으로 적용될 수 있습니다

 

1. 내부 스타일 시트(Internal Style Sheet)

HTML 문서 안에 `<style>` 태그를 사용하여 CSS를 포함시키는 방법입니다

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        h1 {
            color: red;
        }
    </style>
</head>
<body>
    <h1>Hello, CSS!</h1>
</body>
</html>

 

2. 외부 스타일 시트(External Style Sheet)

별도의 CSS 파일을 만들고 HTML 문서에서 이를 참조하는 방법입니다

<!-- style.css -->
h1 {
    color: red;
}
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>Hello, CSS!</h1>
</body>
</html>

 

3. 인라인 스타일(Inline Style)

HTML 요소의 `style` 속성을 사용하여 개별적으로 스타일을 지정하는 방법입니다

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1 style="color: red;">Hello, CSS!</h1>
</body>
</html>

 

CSS의 주요 속성

CSS는 다양한 속성을 제공하여 웹 페이지를 다양한 방식으로 스타일링할 수 있습니다

몇 가지 주요 속성은 다음과 같습니다

  • color : 텍스트의 색상 지정
  • font-family : 글꼴 지정
  • font-size : 글꼴 크기 지정
  • background-color : 배경 색상 지정
  • margin, paddin : 요소의 외부 여백 및 내부 여백 지정
  • border : 테두리 스타일 및 크기 지정
  • width, height : 요소의 너비와 높이 지정

CSS의 상속과 우선 순위

CSS는 상속을 지원합니다

이는 부모 요소의 스타일이 자식 요소에게 상속된다는 것을 의미합니다

그러나 모든 속성이 상속되는 것은 아닙니다

일부 속성은 상속되지 않거나 초기 값으로 설정됩니다

 

CSS 규칙이 충돌하는 경우, 우선 순위에 따라 결정됩니다

인라인 스타일이 가장 높은 우선 순위를 가지며, 그 다음이 ID 선택자, 클래스 선택자, 태그 선택자, 일반 선택자 순서로 우선 순위가 낮아집니다

어노테이션의 기본 개념

어노테이션은 자바 프로그래밍 언어의 메타데이터의 한 형태로, 프로그램에 관련된 정보를 제공한다

어노테이션은 소스 코드에 추가되어 특정 작업을 지정하거나 설명할 수 있다

주석과는 달리 컴파일러나 런타임에 의미를 전달하며, 프로그램 코드에 추가적인 정보를 제공하여 코드를 더욱 유연하고 강력하게 만든다

어노테이션의 원리

어노테이션은 `@` 기호를 사용하여 선언되며, 자바의 메타 어노테이션과 사용자 정의 어노테이션으로 나뉜다

메타 어노테이션은 다른 어노테이션을 설명하거나 제한하는데 사용되고, 사용자 정의 어노테이션은 개발자가 직접 정의하여 사용한다

 

Spring Boot에서의 어노테이션은 주로 메타 어노테이션으로, 스프링 프레임워크의 기능을 활성화하거나 구성하는 데 사용된다

Spring Boot의 어노테이션들은 스프링의 컴포넌트 스캔, 의존성 주입, 프로퍼티 로딩 등과 같은 기능을 자동으로 처리하는 역할을 한다

Spring Boot 어노테이션의 예시

  • @SpringBootApplication
    Spring Boot 애플리케이션의 진입점을 지정하고, 스프링 부트의 자동 구성을 활성화한다
  • @RestController
    RESTful 웹 서비스의 컨트롤러를 정의한다
  • @RequestMapping
    요청 URL과 컨트롤러 메서드를 매핑하여 요청을 처리한다
  • @Autowired
    의존성 주입을 자동으로 처리한다
  • @Value
    프로퍼티 값을 주입받는다

'-- Web -- > Spring & Spring Boot' 카테고리의 다른 글

[Spring] View Resolver란?  (0) 2024.04.12
[Spring] applicationContext.xml란?  (0) 2024.03.15

+ Recent posts