
컨테이너 : 자바의 객체를 관리하는 공간을 말합니다. 내부의 Bean 라이프 사이클을 관리하며 추가 기능을 제공합니다.자바 객체를 스프링에서는 Bean(빈)이라고 합니다.과거에는 주로 XML을 사용하여 스프링 애플리케이션의 설정과 빈 등록을 수행했습니다. 하지만 현재에

Spring : 객체를 관리할 수 있는 컨테이너를 제공합니다.자바의 오픈소스 애플리케이션 프레임워크 중 하나로 특정 기술에 종속되지 않고 객체를 관리할 수 있는 프레임워크를 제공합니다.컨테이너로 자바 객체를 관리하면서 의존성 주입과 제어의 역전을 통해 결합도를 낮추게

핵심적인 비즈니스 로직(핵심 관점)으로부터 횡단 관심사(부가기능)를 분리하여 모듈화합니다. 즉 AOP는 부가기능을 따로 관리하는 것을 의미합니다.횡단 관심사란? 애플리케이션에서 코드가 중복되고 강력하게 결합되어 다른 로직과 분리할 수 없는 애플리케이션 로직입니다.모듈화

🔔 'Spring @Controller, @RequestMapping'에 대해서 알아보자! 💟 @Controller @Controller: Spring MVC에서 컨트롤러 클래스를 나타냅니다. 컨트롤러 클래스는 클라이언트로부터의 요청을 처리하고, 해당 요청에 대

🔔 '@RequestParam'에 대해서 알아보자! 💟 @RequestParam @RequestParam: HTTP 요청 파라미터를 메서드의 파라미터로 바인딩하는 데 사용됩니다. 클라이언트가 전달한 파라미터의 값을 가져와 메서드의 파라미터에 할당합니다. 기본적으

Controller\`는 클라이언트의 요청에 따라 서버에서 이를 처리하는 역할을 합니다.\`Model\`은 데이터를 관리하는 역할을 합니다.\`View\`는 화면을 담당하는 뷰 템블릿입니다.웹페이지를 화면에 보여주고 클라이언트의 요청을 받아 처리하고 데이터를 관리하는

🔔 Spring MVC에서 모델에 여러 유형의 데이터 전달하기 모델에 다양한 데이터 유형을 전달하는 방법이 있습니다. 데이터 유형에는 HashMap, ArrayList, JavaBeans 등이 포함됩니다. 💟 활용 예제 🟦 HashMap HashMap을 사

Lombok은 @Getter, @Setter, @ToString, @EqualsAndHashCode, @NoArgsConstructor, @AllArgsConstructor 등과 같은 Annotation을 제공하여 소스 코드에서 자동으로 getter, setter, t

Redirect(리다이렉트) : 웹 서버가 웹 브라우저(클라이언트)에게 다른 페이지로 이동하라고 응답하는 기능입니다.리다이렉트를 지시한 JSP 페이지가 있을 경우(sub16.jsp)웹 브라우저는 실질적으로 요청을 두 번하게 됩니다.RedirectAttributes :

1\. DB와 연결하기Connection은 DB와 연결을 나타내는 객체이며 DB와의 통신을 담당합니다.📢 Datasource를 빈으로 DB 정보를 저장해놓으면 Spring이 알아서 관리해줍니다. Datasource 빈만 주입해주면 됩니다.2\. 실행 준비쿼리를 보내고

PreparedStatement : SQL 쿼리를 미리 컴파일하여 데이터베이스에 전송하기 전에 파라미터로 전달된 값을 삽입할 수 있습니다. SQL Injection 방지SQL Injection : 공격자가 악의적인 SQL 쿼리를 실행하도록 함으로써 데이터베이스에 접근하

동적 매개변수 처리: SQL 쿼리에서 ?가 몇 개인지 알 수 없을 때, Spring JDBC를 사용하여 동적으로 매개변수를 처리하는 방법을 보여줍니다.모델과 뷰 간 데이터 전달: Controller에서 처리된 데이터를 JSP 뷰로 전달하는 과정에서 categoryLis

🔔 '페이징(Paging) 처리'에 대해서 알아보자! 💟 페이징(Paging) 처리 페이징(Paging)은 페이지 단위로 데이터를 나누는 과정에서는 각 페이지에는 일정한 개수의 데이터가 포함되며, 사용자는 페이지를 전환하거나 페이지 번호를 직접 입력하여 원하는

🔔 'Spring JDBC를 활용한 DB에 데이터 삽입하기'에 대해서 알아보자! 💟 @GetMapping과 @PostMapping @PostMapping : 새로운 데이터 생성 및 수정할 때 @GetMapping : 데이터를 검색(조회)할 때 💟 DB에 데이터

🔔 'Spring JDBC를 활용한 DB에 데이터 삭제하는 방법'에 대해서 알아보자! 💟 DELETE DELETE : 데이터베이스 테이블에서 하나 이상의 레코드를 삭제하는 데 사용됩니다. DELETE FROM 테이블명 WHERE 컬럼명 = 삭제하고 싶은 컬럼값;

🔔 'Spring JDBC를 활용한 DB에 데이터 수정하는 방법'에 대해서 알아보자! 💟 UPDATE UPDATE : 데이터베이스 테이블에서 하나 이상의 레코드를 삭제하는 데 사용됩니다. >UPDATE 테이블명 SET 컬럼명 = 바꿀값, 컬렴명 = 바꿀값, .

MyBatis : DB 액세스를 위한 자바 ORM 프레임워크입니다. SQL 쿼리와 자바 객체를 자동으로 매핑하는 기능을 가지고 있습니다.동적쿼리에서 많이 사용합니다.JDBC 보다 코드가 간결합니다. 조회 결과의 컬럼명과 리턴타입의 객체 프로퍼티명이 같으면 값을 바인딩(

Mapper 인터페이스를 만들고 @Mapper 어노테이션을 사용하여 해당 인터페이스를 Mapper로 등록한다는 것을 MyBatis에게 알려줍니다. 자바 클래스에서 해당 Mapper를 사용하겠다는 의존성을 주입해줍니다.이렇게 함으로써 자바 코드에서 Mapper를 사용하여

🔔 'Spring MVC : Controller, Service, Mapper'에 대해서 알아보자! 💟 Spring MVC : Controller, Service, Mapper @Controller, @Service, @Mapper는 주로 스프링 프레임워크에서 사

🔔 'Dynamic SQL'에 대해서 알아보자! 💟 Dynamic SQL SQL 쿼리를 동적으로 사용할 수 있게 해주는 기능입니다. 조건에 따라 추가 및 생략이 가능해집니다. `, , , , , ` 등의 XML 태그를 사용합니다. `` 태그를 사용하여 동적 SQL

🔔 '@Transanction'에 대해서 알아보자! 💟 트랜잭션 트랜잭션은 데이터베이스의 일관성 무결성을 보장하기 위해 사용합니다. START TRANSACTION : 트랜잭션 시작합니다. COMMIT : 트랜잭션 내의 모든 작업을 영구적으로 데이터베이스에 적용하

스프링 프레임워크 기반의 애플리케이션에서 보안을 구현하고 관리하기 위한 강력한 보안 프레임워크입니다. 인증(Authentication): 사용자의 신원을 확인하고 인증하는 기능을 제공합니다. 누군가가 자신이 주장하는 사람임을 증명합니다.(신분증)인가(Authorizat

간단한 게시판을 만들기 :1\. 글쓰기 기능(C)2\. 작성된 글을 보여주는 기능(R)3\. 게시물 삭제하는 기능(D)4\. 게시물 수정하는 기능(U)Board 자바 빈을 생성합니다.BoardController@GetMapping("/add") : localhost:8

회원가입 :1\. 회원가입 기능(C)2\. 가입된 회원 목록 보여주는 기능(R)3\. 회원 정보 수정하는 기능(U)4\. 회원 정보 삭제하는 기능(D)Member 자바 빈을 생성합니다.MemberController@GetMapping("signup") : /signup

1\. JSTL 함수 라이브러리를 선언합니다.<c:forEach> 태그에서 varStatus를 사용합니다. varStatus의 속성은 index, count, first, last 등이 있습니다.fn:length() 함수를 사용하여 memberList의 길이를 구

🔔 '게시판 페이징 처리하기'에 대해서 알아보자! Controller 처음 게시판 목록에 들어갔을 때 page=1이 보이게 하기 위해 @RequestParam(defaultValue="1")로 설정합니다. addAllAttributes은 Map에 포함된 을 현재

🔔 '로그인 페이지 만들기'에 대해서 알아보자! > 로그인 : 글 작성 시 작성자는 로그인한 사람의 이메일 로그인한 사람만 글쓰기 가능 작성자 자신 글만 수정가능 회원목록은 관리자(admin)만 접근 가능 회원정보는 본인과 관리자만 볼 수 있게 접근 회원정보는 본

🔔 '게시판 회원권한 설정'에 대해서 알아보자! > 로그인 : 글 작성 시 작성자는 로그인한 사람의 이메일 로그인한 사람만 글쓰기 가능 작성자 자신 글만 수정/삭제 가능 자신의 회원정보만 수정/삭제 가능 회원 탈퇴 시 게시글 삭제 💟 글 작성 시 작성자는 로그인

로그인 :회원정보는 본인과 관리자만 볼 수 있게 접근합니다.1\. 권한(authority) 테이블 만들기 사용자 ID에 따른 권한 정보를 저장합니다.2\. MemberMapper에서 멤버 아이디에 의해 저장된 권한 정보 조회하기UseDetails에 권한 주입하기사용자

네이버, 카카오, 구글 등 플랫폼을 사용해서 로그인을 처리할 때 많이 사용합니다.자신의 계정 정보를 웹페이지와 공유하지 않고 네이버, 카카오, 구글 등과 같은 애플리케이션에 의해 로그인을 할 수 있습니다.접근 토큰을 발급반아 사용합니다.OAuth2는 인증/인가에 대한

🔔 'OAuth2 카카오 로그인'에 대해서 알아보자! 💟 카카오 로그인 구현하기 application.properties 파일 먼저 설정해줍니다. 카카오에서 로그인 api 애플리케이션 등록한 다음 클라이언트 ID와 클라이언트 secret 받아서 설정해줍니다. 카

📖 내용 이 프로젝트는 사용자가 소셜 로그인을 통해 간편하게 가입하고, 게시글을 작성하고 관리할 수 있는 게시판 서비스를 개발하는 것을 목표로 합니다. 🙋♂️ 역할 회원가입 클라이언트는 이메일, 패스워드, 닉네임을 입력 받아 서버로 해당 회원 정보를 전송

HTTP 요청을 만들고 응답을 처리하는 JavaScript 라이브러리입니다. 주로 웹 애플리케이션에서 서버와의 통신을 담당합니다. 또한, Axios를 사용하면 HTTP GET, POST, PUT, DELETE 등의 메서드를 사용하여 서버에 요청을 보낼 수 있습니다. 또

Javascript 객체(Object) 문법으로 구조화된 데이터를 문자열로 표현합니다. Javascript 객체 리터럴 문법을 따르며 Javascript의 기본 데이터 타입인 문자열, 숫자, 배열, 불리언, 객체가 포함합니다. JSON의 프로퍼티명은 큰 타옴표로 묶어줘

🔔 '응답하기'에 대해서 알아보자!클라이언트가 서버에게 요청을 하고 서버에서 클라이언트에게 응답할 때 객체를 직렬화하여 JSON으로 보내면 axios는 파싱해서 자바스크립트 객체로 만들어 화면애 표시합니다.React(App.jsx)버튼을 클릭하면 handleClick

BoardWrite.jsx(React)제목, 본문, 작성자 값을 받아서 저장 버튼을 누르면 POST 요청으로 서버에게 title, content, writer 값을 넘깁니다.서버에게 title, content, writer 값을 넘겨야 하기 때문에 상태를 설정합니다.B

MemberSignup.jsx(React)email, password, nickName의 상태를 관리하기 위해서 useState() 훅을 사용합니다.가입 버튼(handleMemberSaveClick)을 클릭하면 여러 번 누르는 것을 방지하기 위해 Loading(isLo

Member.jsx(React)수정 페이지에서 이메일, 비밀번호, 닉네임, 가입일시를 가져오기 위해서 /api/member/${id} 경로로 GET 요청을 해서 member 객체를 받아오는데 그 때 member 객체의 비밀번호를 빈 값으로 가져옵니다. 화면에 보여주기

MemberLogin.jsx(React)로그인 성공하면 localStorage에 토큰 저장 후 메인으로 이동하고 실패하면 localStorage에서 토큰을 삭제합니다.MemberController.javaMemberService.javapublic Map<Stri

BoardWrite.jsx(React)기존에는 작성자를 따로 기입했는데 작성자를 따로 기입하지 않고 LoginProvider에서 닉네임을 받아옵니다.LoginProvider에서 닉네임을 받아오는 과정은 login을 했을 때 setNickName으로 nickName을 업

🔔 '권한 설정 및 토큰'에 대해서 알아보자! 💟 회원목록 admin일 때만 볼 수 있게 변경 권한 테이블 member_id를 맏아서 권한을 지정해주기 위해 권한 테이블을 작성합니다. MemberController.java @PreAuthorize("ha

useSearchParams()페이징 처리를 할 때 쿼리 스트링으로 page 파라미터를 받아오기 위해서 useSearchParams() 훅을 사용합니다.useSearchParams의 훅은 \[searchParams, setSearchParams] 형태의 배열을 반환합니

BoardController.javatype, keyword는 쿼리 매개변수로 전달되지 않을 수 있습니다. 기본적으로는 null일 수 있습니다. keyword 경우에는 null이 아닌 빈 문자열로 설정합니다.BoardService.javaselect, input에 맞게

BoardWriter.java(React)multiple : 여러 파일 선택 가능합니다.accept : 파일 유형 지정합니다.onChange{} : 파일을 선택하면 선택된 파일들을 files 상태 변수에 업데이트 합니다. 에서 반환되는 FileList 객체에는 map

🔔 '게시판 파일 첨부(AWS S3)'에 대해서 알아보자! AWS S3 : AWS에서 제공하는 객체 스토리지 서비스입니다. 웹에서 접근 가능한 대규모 데이터 저장소를 제공하며 파일 저장, 데이터 백업 등에 사용됩니다. 💟 AWS S3 설정하기 AppConf

Board.java(React)하트를 클릭했을 때 빈 하트에서 꽉 채워진 하트로 바뀌면서 숫자도 증가하고 애니메이션도 같이 진행되어야 합니다./api/board/like 경로로 서버에 요청 본문에 board의 id를 가지고 Put 요청을 하면 서버에서 id에 해당하는

🔔 '게시물 댓글 기능'에 대해서 알아보자! BoardView.jsx에 CommentComponent를 추가하고 CommentComponent에서 CommentWrite랑 CommentList 컴포넌트를 나눕니다. 💟 댓글 작성하기 CommentWrite.j

🔔 '프로필 사진'에 대해서 알아보자! 💟 프로필 사진 추가하기 Member.java 파일 이름(profile)과 파일 경로(aws 경로 : awsProfile)를 설정하고 profile이 null일 때 이미 저장되어 있는 기본 프로필 이미지 경로로 가고 n

Duration 클래스는 두 시간 사이의 간격을 계산해줍니다. 아래 코드는 Comment 클래스에 inserted라는 시간 필드를 가지고 있으며, 이 필드가 현재로부터 얼마나 지났는지를 형식화하여 반환하는 메서드를 포함하고 있습니다.inserted는 댓글이 작성된 시간

🔔 '웹 크롤링하고 DB에 저장하기'에 대해서 알아보자! 💟 웹 크롤링 하는 방법 웹 크롤링 : 웹 크롤링을 통해 데이터를 수집하고, 이를 데이터베이스에 저장하는 방법입니다. Java에서 웹 크롤링을 하기 위해서는 Jsoup 라이브러리를 사용하여 웹 페이지에서

@Result 어노테이션은 데이터베이스와 자바 객체 간의 매핑을 쉽게 할 수 있도록 도와줍니다.DB의 컬럼 값을 자바 객체의 필드에 매핑할 수 있습니다.ProductMapper.java@Result(property = "id", column = "id"): id 필드는

이 프로젝트를 통해 사용자 인증, 데이터 보안, CRUD 기능 구현, 실시간 데이터 처리, 웹 크롤링 등 다양한 기술적 구현을 목표로 삼고 있습니다.클라이언트는 사용자의 정보인 이메일, 패스워드, 닉네임, 프로필 사진을 입력하여 해당 회원 정보를 서버로 전송하여 데이터

🔔 'DispatcherServlet '에 대해서 알아보자! 💟 DispatcherServlet 정의 프론트 컨트롤러 라고도 한다. HTTP 프로토콜로 들어온느 모든 요청을 먼저 받아서 적합한 컨트롤러에 위임(Delegate request)하는 역할을 한다. 클라

🔔 'DispatcherServlet vs Servlet'에 대해서 알아보자! 💟 Servlet 서블릿(Servlet)은 자바의 웹 기술 중 하나로, HTTP 요청과 응답을 처리하는 데 사용되는 인터페이스입니다. 웹 애플리케이션에서 클라이언트(예: 브라

여기서 Spring MVC는 HTTP 요청 파라미터(form-data, query string 등)를 DTO에 매핑합니다.동작 방식:DocDto 기본 생성자로 객체 생성setter 호출로 각 필드에 값 주입그래서 @Setter가 없으면 값이 들어가지 않고, DTO의 필