분류 전체보기

타임리프특징서버 사이드 HTML 렌더링(SSR)백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용Natural Template순수 HTML을 최대한 유지하는 특징웹 브라우저에서 파일을 직접 열어도 내용 확인이 가능서버를 통해 뷰 템플릿을 거치면 동적ㅇ로 변경된 결과를 확인 가능순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 특징을 Natural Templates라고 함스프링 통합 지원스프링의 다양한 기능을 편리하게 사용 가능타임리프 기본 기능타임리프 사용 선언 기본 표현식• 간단한 표현: ◦ 변수 표현식: ${...} ◦ 선택 변수 표현식: *{...} ◦ 메시지 표현식: #{...} ◦ 링크 URL 표현식: @{...} ..
드디어 웹 사이트(매우매우매우 간단한..)에서의 동작과 함께 서비스를 만들어보자.매우 간단하게 상품을 등록하고, 상세화면을 보고, 목록을 조회할 수 있는 사이트이다. 서비스의 흐름은 아래와 같다. 프로젝트가 작은 규모의 경우웹 퍼블리셔가 디자이너에게 받은 디자인을 기반으로 HTML, CSS를 만들어 백엔드 개발자에게 제공한다.백엔드 개발자는 웹 퍼블리셔를 통해 화면이 나오기 전까지 시스템을 설계하고, 비즈니스 모델을 개발이후 HTML이 나오면 이 HTML을 뷰 템플릿으로 변환해서 동적으로 화면을 그리고, 또 웹 화면의 흐름을 제어한다. 참고React, Vue.js 같은 웹 클라이언트 기술을 사용하고, 웹 프론트엔드 개발자가 별도로 있으면, 웹 프론트엔드 개발자가 웹 퍼블러셔 역할까지 포함해서 하는 경우..
· PS
오랜만에 개념 공부(복기)...그 전까지는 문제풀이를 했었다DFSPseudo CodeDFS(u, adj) u.visited = true for each v ∈ adj[u] if v.visited == false DFS(v, adj) 구현 방법1: 돌다리를 두들겨 보다.void DFS(int here) { visited[here] = 1; for(int there : adj[here]) { if(visited[there]) continue; DFS(there); }} 구현 방법2: 못 먹어도 GOvoid DFS(int h..
프로젝트 생성Packaging → War / JarJSP를 사용하지 않기 때문에 Jar를 사용하는 것이 좋음.앞으로 스프링 부트 사용 시 이 방식으 ㄹ주로 사용JARJava Archive용도: 독립 실행 가능한 애플리케이션 패키징내장 서버: Tomcat, Jetty 등의 내장 서버 포함구조: 표준 Java 클래스 파일들과 리소스, 의존성 라이브러리 포함배포: 별도의 웹 서버/WAS 없이 단독 실행 가능Spring Boot: 기본적으로 JAR 패키징 권장WARWeb Application Archive용도: 웹 애플리케이션을 외부 서버에 배포하기 위한 패키징외부 서버: Tomcat, JBoss, WebLogic 등 외부 WAS에 배포실행 방식: WAS의 webapps 디렉토리에 배포 후 서버 시작구조: WE..
지난 번 MVC 프레임워크 구조를 직접 설계했다. 직접 만든 MVC 프레임워크 구조 실제로 사용되는 SpringMVC의 구조는 어떨까? 사실 구조상의 이름만 다를 뿐 크게 구조에서 차이점을 보이지 않는다.직접 만든 프레임워크스프링 MVCFrontControllerDispatcherServlethandlerMappingMapHandlerMappingMyHandlerAdapterHandlerAdapterModelViewModelAndViewviewResolverViewResolverMyViewViewDispatcherServlet 구조org.springframework.web.servlet.DispatcherServlet스프링 MVC도 프론트 컨트롤러 패턴으로 구현.스프링 MVC의 프론트 컨트롤러 → D..
지난 시간 MVC에 대한 개요를 봤었다.다만, 반복되는 작업이 많았고 이를 사용하기 편리하게 하기 위함으로 프론트 컨트롤러 패턴이라는 것을 소개했었다. 즉, MVC에서 Controller가 역할을 수행하기 전 공통 기능을 처리하기 위한 장치(수문장)를 마련하자! 라는 것을 소개했었는데, 이번시간 그것을 구현해보는 과정을 가진다.프론트 컨트롤러 패턴이전에는 클라이언트가 ControllerA, B, C를 각각 사용하기 위해선 Controller에서 각각에 맞는 공통 처리를 다 해줬어야 했다. 이제 공통 기능 처리를 위한 프론트 컨트롤러를 도입하게 된다면 이와 같이 공통 부분을 미리 Front Controller에서 처리해준 뒤, 각각의 요청에 맞는 컨트롤러를 찾아서 호출해주게 된다. 즉, 프론트 컨트..
오늘은 서블릿을 이용해보면서 점차 JSP → MVC로 넘어가는 시간이다. 우선 전체적인 코드를 아래의 간단한 프로그램을 통해 알아보았다.회원 가입 웹 애플리케이션 요구사항회원 정보이름: username나이: age기능 요구사항회원 저장회원 목록 조회 전체 코드는 포스팅하지 않을 계획이다.서블릿으로만… 해보았었을 때어떤 불편한 점이 있었을까?물론 동적인 HTML을 만들 수 있어 좋았다.다만…매우 복잡하고 비효율적이다. 자바 코드로 HTML을 만들어 내는 것보다 차라리 HTML 문서에서 동적으로 변경하는 것이 더욱 나은 것 같다고 생각이 들 정도로…이것이 바로 템플릿 엔진이 나온 이유다. 템플릿 엔진을 사용하면 HTML 문서에서 필요한 곳만 코드를 적용해서 동적으로 변경할 수 있다.예: JSP, Thymel..
Hello 서블릿스프링 부트 환경에서 서블릿을 등록하고 사용해본다.서블릿은 톰캣 같은 웹 애플리케이션 서버를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린다.그런 다음 톰캣 서버를 실행하면 된다.하지만, 이 과정은 매우 번거롭다.스프링 부트는 톰캣 서버를 내장하고 있으므로, 톰캣 서버 설치 없이 편리하게 서블릿 코드를 실행할 수 있다.스프링 부트 서블릿 환경 구성@ServletComponentScan스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan 을 지원.다음과 같이 추가할 수 있다.package hello.servlet;import org.springframework.boot.SpringApplication;import org.spri..
· PS
시간복잡도와 빅오표기법어떤 문제를 풀기 위해서 100번의 연산만 하면 되는 것과 1억번의 연산을 하는 것이 있다면, 어떤 로직을 선택할까?실제 프로그램이라면 100번의 연산만 하는 것이 더욱 빠른 속도를 가진 서비스를 사용자에게 제공할 수 있을 것이다.사람들은 빠른 결과를 얻는 것을 좋아한다. 그것을 알고리즘 문제를 풀 때도 적용해야 한다.백준 문제를 풀다보면 제한시간 이라고 적힌 것을 볼 수 있다.이 제한시간 안에 솔루션을 주어야 우리는 문제를 풀었다! 라는 결과를 얻을 수 있는데…1초에 약 1억번 정도의 연산이 걸린다고 알고 있다.물론 언어마다 다르지만, c++ 한정.for(int i = 0; i 위의 연산은 총 100번 실행하게 된다.만약 100이 아니라 n이 이중 for문으로 이루어졌다면?n^2..
1. 웹 애플리케이션 이해날짜: 2025년 6월 27일과목: 개발 · 프로그래밍 / 백엔드 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술유형: 개인공부상태: Done웹 서버, 웹 애플리케이션 서버란?웹 - HTTP 기반이번 컴퓨터공학부 네트워크 시간에 HTTP에 대해서 학습을 했었다.HyperText Transfer Protocol웹에서 데이터를 주고받기 위한 프로토콜이다.클라이언트 - 서버 모델을 기반으로 하며, Request → Response 방식으로 동작한다.Stateless 특성을 가지고 있다.간략히 말해 Stateless이기 때문에 cost가 덜 든다.이와 같은 기능을 만족하기 위해 cookie와 같은 기술을 도입한다.주요 HTTP 메서드로는GET, POST, PUT, PATCH, DELE..
ParkSeongGeun
'분류 전체보기' 카테고리의 글 목록