1. 구글 계정 설정1. 구글 계정 관리 - 보안2. 2단계 인증 설정 3. https://myaccount.google.com/apppasswords?pli=1&rapt=AEjHL4P8w5kYAfKVM2_3oI0BmvNBr5y26BQ9BdqvsygxCX-T8SqtdRqtzDeNu-wirFxYI1QISHwwPq4IFV-WS7-3UBpGn7L8iKu3oiFQkVEVxcYHufUNaoc 링크로 접속해 앱 비밀번호 생성4. 16자리 앱 비밀번호 확인 및 복사 2. 구글 메일 설정1. Gmail - 설정 - 전달 및 POP/IMAP 탭 클릭2. 모든 메일에 POP 사용하기 체크3. IMAP 사용 체크4. 나머지는 하고 싶은 대로 커스터마이징5. 스크롤 내려 변경 사항 저장 버튼 클릭 3. 의존성 + pro..
Web
사진을 업로드 한 후, 사용자가 업로드한 사진이 화면에 바로 반영되는 기능을 구현해보았다.아래는 파일 업로드 컴포넌트 코드이다.tailwind css와 일반 css가 혼재되어 있어서 깔끔하지 않음 주의import React, { useState } from "react";const Profile_picture = ({ onchange }) => { const [imagePreview, setImagePreview] = useState(null); const handleImageChange = (event) => { const file = event.target.files[0]; if (file) { const reader = new FileReader(); reader.o..
스프링 프레임워크에서는 컨트롤러(Controller)에서 뷰(View)로 데이터를 전달하는 여러 가지 방법이 있다.그 예로는 Model, ModelMap, ModelAndView가 있다.개념과 차이점을 알아보자. 1. 개념1) ModelModel이란?👉 뷰를 렌더링하는 데 사용되는 속성을 제공할 수 있는 가장 기본적인 개념(스프링 MVC에서 컨트롤러와 뷰 사이의 데이터를 전달하는 역할을 하는 인터페이스)뷰에 데이터를 제공하려면?👉 controller에서 데이터를 Model 객체에 추가하면, 이 Model 객체는 뷰로 전달되어서 뷰에서 사용될 수 있음Model에 데이터를 추가하는 방법👉 addAttribute() 메서드를 사용예) model.addAttribute("message", "Hello, ..
1. Server-Sent Events (SSE)- 정의SSE는 서버에서 클라이언트로 일방적으로 데이터를 전송하는 방식이다.클라이언트는 서버에 연결을 요청하고,서버는 연결이 열려 있는 동안 이벤트를 지속적으로 클라이언트에게 보낼 수 있다. - 특징작동 방식: 클라이언트는 EventSource 객체를 통해 서버에 연결하고, 서버는 특정 이벤트가 발생할 때마다 데이터를 클라이언트로 전송함통신 방향: 단방향 (서버 -> 클라이언트)프로토콜: 일반 HTTP 프로토콜을 사용하여 방화벽, 프록시 서버를 통과하기 쉬움. 추가적인 보안 설정 없이도 사용 가능연결 유지 및 재연결: 클라이언트 측에서 자동으로 재연결을 시도하는 기능 내장👉 연결이 끊어지면 자동 복구 시도전송 포맷: 서버는 일반적으로 텍스트 데이터를 전송..
1. 서블릿 Servlet- 등장 배경 웹이 1990년대 중반 급속도로 발전하면서 서버와 클라이언트 간 동적인 데이터 처리가 필요해졌다.이전에는 HTML로 정적 웹 페이지를 만들 수는 있었지만,사용자의 요청에 따라 실시간으로 변하는 페이지 생성 방법이 필요해졌다.따라서 서블릿이 등장하게 된다. - 특징자바로 작성된 서버 측 프로그램으로, 클라이언트의 요청을 받아 처리함동적인 웹 페이지 생성웹 서버와의 통신을 위해 HTTP 프로토콜 사용클라이언트의 요청 처리 후 응답 반환Java EE(Enterprise Edition)의 일부 - 문제점Java 코드만으로 HTML을 만들어야 하므로 매우 복잡하고 비효율적임👉 템플릿 엔진이 등장하게 됨 템플릿 엔진이란?HTML 문서에서 필요한 곳만 코드를 적용하여동적으로 ..
값에 null이어서 생기는 예외를 막기 위해 어노테이션을 사용하곤 한다.jakarta.validation.constraints 패키지 하위에 존재하는비슷하면서도 다른 세 가지 어노테이션을 비교하려고 한다. 1. @NotNull말 그대로 Null을 허용하지 않는다.그런데 Null만 허용하지 않으므로 ""(초기화된 String)이나 " "(공백)은 허용하게 된다.만약 ""이나 " "을 허용하지 않으면 이걸 사용해서는 안 된다.""와 " "을 허용하되, Null이 들어오게 되면 로직에 예외가 발생할 경우 사용해야 한다.정수값을 사용해야 할 경우 사용하면 좋다. (물론 그 외에도 두루 쓰임) 2. @NotEmpty@NotEmpty는 null과 "" 둘 다 허용하지 않는다.@NotNull에서 "" validati..
1. MVC 패턴이란? - 정의애플리케이션을 개발할 때 사용하는 디자인 패턴애플리케이션의 개발 영역을 Model, View, Controller로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식 - 장점UI 영역과 도메인(비즈니스 로직) 영역으로 구분되어 서로에게 영향을 주지 않으면서 개발과 유지보수가 가능함 - 구조Model 모델애플리케이션의 정보(데이터)를 나타냄웹 애플리케이션이 클라이언트의 요청을 전달받으면 요청 사항을 처리하기 위한 작업을 하는데,이때 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 모델이라고 함View 뷰텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소모델을 이용하여 웹 브라우저와 같은 애플리케이션의 화면에 보이는 리소스를 제공스프링 MVC에 포함된 Vi..
java.sql.ConnectionConnection 인터페이스는 데이터베이스와 네트워크 상의 연결을 의미함실제 구현 클래스는 JDBC 드라이버 파일 내부의 클래스Connection은 반드시 close() 해야 함: 연결이 종료되지 않으면 새로운 연결을 받을 수 없음try ~ catch ~ finally를 이용해서 종료하거나 try-with-resource 방식(자동으로 close()가 호출됨)을 이용함 java.sql.Statement/PreparedStatementJDBC에서 SQL을 데이터베이스로 보내기 위해 Statement/PrepareStatement 타입을 이용함Statement: SQL문 내부에 모든 데이터를 같이 전송PreparedStatement: SQL문을 미리 전달하고 나중에 데이터..
1. JPA(Query Method) 쿼리 메소드 사용하려는 Repository에 JpaRepository만 상속해주면 스프링 AOP 기능을 사용해 구현까지 자동으로 해준다.간단한 문법으로 객체의 CRUD가 가능하다.형태: find + ("객체") + By + "변수"사용 예시Board findById(Integer Id)// -> id를 사용해서 해당하는 게시글을 가져온다.List findByTitle(String title)// -> title 변수명을 사용해서 해당하는 모든 게시글을 가져온다.장점개발자가 사용하기 쉽도록 자동으로 쿼리를 만들어줌기본(Hibernate)으로 쿼리를 자동 생성함단점쿼리 작성에 유연하지 않음복잡한 조건을 사용하려면 메소드의 길이가 증가함매핑하여 사용하므로 DB에 직접적으로..
1. 컴포넌트 스캔이란? 스프링이 스프링 Bean으로 등록될 준비가 된 클래스들을 스캔하여 Bean으로 등록해주는 과정 자바에서 스프링 빈을 등록하기 위해 @Bean을 사용해야 하지만, 하나하나 등록하는 게 번거로울 때 컴포넌트 스캔을 통해 스프링 빈을 등록함 @Component 어노테이션이 붙어있는 클래스들은 전부 컴포넌트 스캔의 대상이 됨 @Configuration, @Service, @Repository, @Controller 등의 어노테이션에도 전부 @Component가 포함되어 있어 자동으로 컴포넌트 스캔의 대상이 됨 2. 탐색 방법 및 기본 스캔 대상 - 탐색 방법 1) servlet-context.xml 해당 태그를 사용해 패키지 이름을 지정하면, 애플리케이션 실행 시 해당 패키지에서 어노테..