JSP Cookie , Session , Error page , Action Tag - 입사 전 리마인드
·
🗄️ Backend/JSP
JSP 쿠키, 세션, 에러 페이지, 액션 태그 정리JSP 개발을 하면서 자주 사용하게 될 쿠키(Cookie)와 세션(Session),  에러 페이지 처리, JSP 액션 태그에 대해 살펴보겠습니다.페이지 전환 시 많이 사용되는 forward와 sendRedirect의 차이점도 함께 정리해보았습니다.현업에서 JSP/Servlet 기반으로 개발할 때 한 번씩 꼭 짚고 넘어가야 할 부분들이니, 참고하면 좋을 것 같습니다.쿠키(Cookie) - Local1) 개요HTTP 프로토콜은 요청-응답이 끝나면 웹 브라우저와의 연결을 끊습니다.이렇게 상태가 유지되지 않는(Stateless) 특성을 보완하기 위해, 쿠키라는 방식을 사용합니다.쿠키는 서버에서 생성되지만, 데이터는 클라이언트(Local) 측에 저장됩니다.서버는 ..
JSP와 Servlet 기초 정리 - 입사 전 리마인드
·
🗄️ Backend/JSP
이번 포스팅에서는 실무에서 JSP와 Servlet을 바로 사용해야 하는 상황을 대비해, JSP/Servlet의 기본적인 사용법과 핵심 개념을 정리해보려 합니다. JSPJSP 특징동적 웹 어플리케이션 컴포넌트로, 자바 코드를 사용 가능파일 확장자는 .jsp클라이언트의 요청에 따라 동적으로 작동 후, 최종 응답은 HTML 코드로 전달JSP는 웹서버(WAS)에서 자동으로 Servlet으로 변환되어 동작MVC 패턴에서 View 역할로 주로 사용JSP 태그의 개념 이해Servlet은 java 언어를 이용하여 문서를 작성하고, PrintWriter 객체를 통해 HTML 코드를 삽입JSP는 이와 반대로 HTML 코드 안에 java 코드를 삽입하여 동적 문서를 작성HTML 코드 안에 자바 코드를 삽입하기 위해서는 JS..
[트러블슈팅] Nginx 설정 문제 및 Redirect URI Mismatch 에러 해결
·
🗄️ Backend/Security
🚨 1. 에러 메시지 및 문제 상황1️⃣ Nginx 설정 문제 (nginx: configuration file test failed)에러 메시지nginx: configuration file /etc/nginx/nginx.conf test failed문제 상황nginx -t 명령어 실행 시 설정 파일이 올바르게 로드되지 않음.nginx.conf 또는 sites-available/hjwjo.com 설정 파일의 문제일 가능성 높음.SSL 인증서 접근 권한 문제로 인해 fullchain.pem 또는 privkey.pem을 읽지 못함.2️⃣ Redirect URI Mismatch (KOE303)에러 메시지{ "error": "invalid_grant", "error_description": "Redi..
GCP를 활용한 PostgreSQL/ SQL Server 구축
·
🗄️ Backend/GCP
https://dev.hjwjo.com/49 GCP에서 Oracle DB 생성 및 연결 가이드이 가이드는 Google Cloud Platform(GCP)에서 Oracle 11g Database를 설정하고 외부에서 연결하는 과정을 정리한 문서입니다.특히 발생했던 문제들과 해결 방법을 포함하여, GCP 환경에서 Oracle Database를 처음dev.hjwjo.com 1. GCP의 300$ 크레딧 활용GCP는 새로운 사용자를 대상으로 90일간 300$ 크레딧을 제공합니다. 단기적인 프로젝트나 테스트 환경을 구축할 때 비용적으로 매우 유리합니다. AWS RDS 프리티어도 있지만, 여러 개의 RDS를 운영하기엔 비용 부담이 커지므로 GCP를 활용해 효율적으로 데이터베이스를 구축할 수 있습니다.GCP는 Comp..
Spring과 Spring Boot의 차이점
·
🗄️ Backend/Spring
이번 포스팅에서는 Spring과 Spring Boot의 차이점에 대해 정리해보려고 합니다.1. Spring Framework란Spring Framework는 오랜 기간 Java 개발자들 사이에서 사랑받아온 경량 프레임워크입니다. 주요 특징은 다음과 같습니다.DI(Dependency Injection)와 IoC(Inversion of Control):객체 간의 의존 관계를 직접 생성하지 않고 스프링 컨테이너가 관리해드림으로써 코드 결합도를 낮추고 테스트를 용이하게 합니다.AOP(Aspect Oriented Programming):로깅, 트랜잭션 관리, 보안과 같은 공통 기능을 분리하여 모듈화할 수 있도록 지원합니다.유연한 설정:XML, 어노테이션, 자바 기반 설정 등 다양한 설정 방식을 제공하지만, 이로 ..
데이터베이스 키 정리 : 기본키/슈퍼키/후보키/외래키
·
🗄️ Backend/SQL
데이터베이스에서 자주 등장하는 키(Key)들의 개념을 보다 쉽게 설명하기 위해 작성한 글입니다.슈퍼키, 후보키, 기본키, 대체키, 외래키, 복합키의 정의와 예시를 간단히 살펴볼 예정이니, DB 입문자분들께 도움이 되었으면 좋겠습니다.유일성과 최소성키(Key)를 이해하기 전에 반드시 알아야 할 두 가지 중요한 성질이 있습니다.유일성(Unique): 하나의 키 값으로 튜플(레코드)을 유일하게 식별할 수 있어야 함.즉, 키 값이 중복되지 않아야 합니다.최소성(Minimality): 키를 구성하는 속성 중에 꼭 필요한 최소한의 속성만으로 구성되어 있어야 함.즉, 불필요한 속성을 제거해도 여전히 유일성이 보장된다면, 그 불필요한 속성은 키 구성에서 빼야 합니다.예시로 ‘학생 구별자’가 [학생번호, 이름, 성별] ..
Spring Boot 아키텍처 : Entity, DTO, Repository, Service, Controller 흐름과 활용
·
🗄️ Backend/Spring
Spring Boot를 이용해 웹 애플리케이션이나 API 서버를 개발하다 보면, 다양한 계층(layer)과 개념을 마주하게 됩니다. 특히 Entity, DTO, Repository, Service, Controller는 가장 기본적이면서도 필수적인 구성 요소입니다.이 글에서는 이 다섯 가지의 역할과 상호 연관관계 전 과정의 흐름을 파악할 수 있도록 구성했습니다.목차Entity: DB 테이블과 1:1 매핑되는 핵심 도메인 객체DTO: 계층 간 데이터 전송을 위한 객체Repository: DB 접근 로직을 담당하는 계층Service: 비즈니스 로직을 담당하는 계층Controller: 웹 요청/응답을 처리하는 계층전체 흐름과 연관관계예시 프로젝트 구조실전 예제 코드마무리 및 정리1. Entity개념Entity..
SpringBoot 비동기(Async) 처리
·
🗄️ Backend/Spring
비동기(Async) 처리 관련 학습 내용을 간단히 정리해보려고 합니다.이번에 프로젝트를 진행하면서 ‘동시에 여러 작업을 처리하는 방법’에 대해 내실을 다지는 계기가 되었습니다.1. 왜 비동기 처리가 중요할까?처음엔 “스프링 부트로 API 만들어서 RestController에 @GetMapping/@PostMapping 달아놓으면 끝”이라고만 생각했는데 막상 유저 수가 많아지고, 한 번에 요청이 빗발치면 서비스 응답이 늦어질 뿐 아니라 서버 자원도 효율적으로 쓰지 못하는 경우가 생겼습니다.동시성: 여러 요청을 동시에 처리해야 하는 상황자원 효율성: 쓰레드를 최소한으로 쓰면서 최대 성능 뽑아내기이 두 가지가 중요하다는 걸 깨닫고, 스프링에서 제공하는 비동기 처리 기법을 알아보기 시작했습니다.2. 스프링에서 ..
HTTP와 HTTPS , TCP/IP의 기능 및 역할 정리
·
🗄️ Backend
HTTP와 HTTPS의 차이HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Secure)는 웹에서 데이터를 전송하는 기본 프로토콜입니다. 두 프로토콜의 주요 차이점은 다음과 같습니다.보안성HTTP: 데이터가 암호화되지 않아 네트워크 상에서 쉽게 탈취될 수 있습니다.HTTPS: SSL/TLS를 사용해 데이터를 암호화, 기밀성을 보장합니다.포트 번호HTTP: 기본 포트 80번 사용.HTTPS: 기본 포트 443번 사용.속도HTTP: 암호화 과정이 없어 상대적으로 빠릅니다.HTTPS: 암호화 및 복호화 과정으로 약간의 속도 저하가 발생할 수 있습니다.인증서 사용HTTP: 인증서 미사용.HTTPS: 인증서를 통해 웹사이트의 신뢰성을 검증..
임베딩(Embedding) 모델과 벡터(Vector) DB
·
🗄️ Backend/ML
요즘 들어 데이터는 단순히 저장되고 끝나는 것이 아니라, 저장된 데이터를 얼마나 빠르고 정확하게 찾아낼 수 있는지가 중요해졌습니다.그 과정에서 등장한 기술이 바로 임베딩 모델과 Vector DB(벡터 데이터베이스)입니다.이번 포스팅에서는 이 기술들이 실제로 데이터를 어떻게 처리하고 활용하는지, 그 과정을 상세히 알아보겠습니다.1. 임베딩 모델과 데이터 흐름우선, 임베딩 모델이 무엇을 하는지부터 살펴봅시다.데이터 수집여러 데이터 소스(예: 문서, 이미지, 영상)에서 데이터를 가져옵니다.이 단계에서 데이터는 단순한 텍스트, 파일, 또는 숫자 형태로 준비됩니다.임베딩 데이터 생성데이터를 임베딩 모델에 입력합니다.임베딩 모델은 데이터를 벡터(숫자 배열)로 변환합니다.이 벡터는 데이터의 특성과 관계를 수치적으로 ..
자바 개념 면접 복기 및 복습
·
🗄️ Backend/Java
1. 객체지향 언어란 무엇이며, 등장한 이유는 무엇인가요?정의:객체지향 언어는 실 세계의 사물을 추상화하여, 멤버변수(데이터)와 메서드(동작)를 정의하고, 이를 객체로 표현하는 데서 출발합니다.등장 이유:복잡한 프로그램 구조를 단순화하고 유지보수를 용이하게 하기 위해 등장했습니다. 기능과 데이터를 객체로 묶어 프로그램에 반영함으로써 순차적 실행이 아닌 객체 간 상호작용을 통해 동작합니다.장점:코드 재사용성: 기존 코드를 활용하여 새로운 코드를 쉽게 작성 가능.코드 관리 용이성: 적은 노력으로 코드 수정 및 변경 가능.데이터 보호: 제어자와 메서드를 통해 데이터를 보호하고, 중복 제거로 코드 불일치 방지.2. 자바의 데이터 타입: 원시 타입과 참조 타입원시 타입(Primitive Type):변수에 값 자체..
GCP에서 Oracle DB 생성 및 연결 가이드
·
🗄️ Backend/GCP
이 가이드는 Google Cloud Platform(GCP)에서 Oracle 11g Database를 설정하고 외부에서 연결하는 과정을 정리한 문서입니다.특히 발생했던 문제들과 해결 방법을 포함하여, GCP 환경에서 Oracle Database를 처음 설정하거나 비슷한 문제를 겪고 있는 개발자들에게 실질적인 도움을 제공합니다.1. GCP에서 Oracle DB 생성1.1. GCP 프로젝트 및 API 활성화GCP Console에 접속하여 새 프로젝트를 생성합니다.Compute Engine API를 활성화하여 VM 인스턴스를 생성할 수 있도록 설정합니다.1.2. VM 인스턴스 생성VM 생성이름: oracle-db (저는 기본 생성된 이름으로 진행했습니다.)머신 유형: e2-medium (2vCPU, 4GB 메..
Spring Boot 기초: 웹 애플리케이션 설정
·
🗄️ Backend/Spring
Spring Boot는 Java 기반의 웹 애플리케이션을 빠르고 간편하게 개발할 수 있는 프레임워크입니다. 이번 포스트에서는 Spring Boot를 사용하여 간단한 웹 애플리케이션을 설정하고 실행하는 방법에 대해 상세히 설명합니다. 이 예제에서는 WebConfig, TestVO, HomeController 등을 활용하여 Spring Boot 프로젝트를 구성하고, 타임리프(Thymeleaf)를 사용한 템플릿 렌더링까지 다룹니다.1. Spring Boot 프로젝트 설정WebConfig.java - 스프링 설정 파일WebConfig.java는 Spring의 설정 파일로, 스프링 빈을 등록하고 프로퍼티 값을 주입받을 수 있는 역할을 합니다. 또한, @Value 애노테이션을 사용하여 application.prop..
HikariCP, MyBatis를 활용한 데이터베이스 연결 풀 설정 및 최적화
·
🗄️ Backend/Spring
Spring Framework는 Java 애플리케이션에서 데이터베이스와의 원활한 연결을 관리하기 위해 다양한 방법을 제공합니다.그 중에서도 HikariCP는 고성능 JDBC 커넥션 풀 라이브러리로 유명하며,MyBatis는 SQL 매퍼 프레임워크로 SQL 처리 및 객체 매핑을 간편하게 할 수 있게 돕습니다.이번 포스트에서는 Spring 환경에서 HikariCP와 MyBatis를 설정하고, 효율적으로 데이터베이스 연결을 관리하는 방법에 대해 설명합니다.1. HikariCP 설정 (고성능 JDBC 커넥션 풀)HikariCP란?HikariCP는 Java 애플리케이션에서 데이터베이스와의 연결을 효율적으로 관리하는 커넥션 풀 라이브러리입니다. 성능과 경량성에서 우수한 평가를 받으며, 고성능 애플리케이션에서 필수적인..
스프링 프레임워크에서 Redirect, Request, Response 처리 및 서비스 계층 구현
·
🗄️ Backend/Spring
Spring Framework는 다양한 웹 애플리케이션 개발을 지원하는 강력한 도구입니다.특히, @Controller, @Service, @Repository 등의 어노테이션을 사용하여 웹 애플리케이션의 각 계층을 명확하게 구분할 수 있습니다.이 글에서는 Spring의 Redirect, Request, Response 처리 방법과 서비스 계층 구현에 대해 깊이 있게 다뤄보고, 이를 실제 예시와 함께 설명합니다.  1. Spring에서 Controller 및 요청 처리Spring MVC에서는 @Controller 어노테이션을 사용하여 웹 애플리케이션의 요청을 처리하는 컨트롤러 클래스를 정의합니다. 이 클래스는 클라이언트의 요청을 받고, 적절한 서비스 로직을 처리한 후 뷰(View)로 데이터를 전달하는 역할..