pom.xml json을 사용하기 위해 다음과 같이 dependency를 추가해주었다! com.fasterxml.jackson.core jackson-databind 2.15.0 ++ 각각의 Repo파일에 @Mapper annotation을 붙여준다! CatRestController.java RequestBody import에 주의 ...!!!!!!!!!!!! 해야 한다!! 2개다!! 꼭 import org.springframework.web.bind.annotation.RequestBody 로 import하자!! 그렇지 않으면 null 값으로 들어온다^^ package com.ssafy.cat.controller; import java.sql.SQLException; import java.util.Li..
REST : HTTP URI를 통해 제어할 자원을 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원을 제어하는 방식의 아케텍처 기존의 전송 방식과는 달리 서버는 요청 받은 리소스에 대해 순수한 데이터를 전송 기존의 GET/POST 외에 PUT, DELETE 방식을 사용하여 리소스에 대한 CRUD 처리 가능 💡 REST 구성 자원 (Resource) - URI 행위 (Verb) - HTTP Method 표현 (Representations) * 잘 표현된 HTTP URI로 리소스를 정의하고 HTTP method로 리소스에 대한 행위를 정의 * 리소스는 JSON, XML과 같은 여러 가지 언어로 표현할 수 있음 기존 Service와 REST Service 기존 Ser..
web.xml 설정을 위한 설정파일 (여러 xml파일을 인식하도록 각 파일을 가리켜 줌) 최초로 WAS가 최초로 구동될 때, 각종 설정을 정의 ( 서블릿, 한글 인코딩 등) 404 /error/404 contextConfigLocation /WEB-INF/spring/root-context.xml encoding org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encoding /* appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml 1 appServl..
지난번에 JDBC를 이용해 진행했던 간단한 Spring MVC 실습을 MyBatis로 대체해보려고 한다!! 1. XML 파일 수정 MyBatis를 사용하기 위해 pom.xml에 dependency를 추가해준다! org.mybatis mybatis 3.5.13 org.mybatis mybatis-spring 2.1.0 mybatis를 spring에서 사용하기 위해서 root-context.xml에 다음과 같이 sqlSessionFactory를 등록해주고, mybatis-spring:scan을 통해 repo를 스캔해준다!! 2. Mapper 만들기 이제 더 이상 RepoImpl 클래스가 필요하지 않다!! 다음과 같이 resources 폴더 안에 mapper 폴더를 만들고, MyBatis를 사용하여 RepoI..
MyBatisJava Object와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM FrameworkSQL을 별도의 파일로 분리해서 관리 (유지 보수성 향상)Object - SQL 사이의 parameter mapping 작업을 자동으로 해 줌JDBC 코드와 수동으로 셋팅하는 파라미터와 결과 매핑을 제거 (코드의 중복과 작성 생략 가능) https://mybatis.org/mybatis-3/ko/index.htmlMyBatis – 마이바티스 3 | 소개마이바티스는 무엇인가? 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 mybatis.org MyBatis-Spring 연동MyBat..
pom.xml Apache Commons FileUpload라이브러리를 이용하기 위해 dependency를 추가해준다! commons-fileupload commons-fileupload 1.5 servlet-context.xml file upload를 처리할 multipart resolver를 빈으로 등록해준다! regist.jsp 파일을 전송할 때는 enctype을 "multipart/form-data"로 설정해주어야 한다! 사용자 정보 입력 아이디 비밀번호 이름 이메일 나이 이미지 MainController.java controller에서 파일을 처리해주는 코드이다! *resources/upload 폴더를 만들고, 안에 아무 파일이나 하나를 만들어 놓아야 인식 가능!! @PostMapping("/r..
내용 정리 겸 지금까지 학습한 Spring, JSP, MVC 패턴 등을 적용한 간단한 실습을 해보자!! DB 만들기 아주 간단한 table 2가지를 만들어서 진행! drop database if exists animal; create database if not exists animal DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs ; use animal; drop table if exists user; create table if not exists user( id varchar(10) primary key, pw varchar(10) not null, name varchar(20) not null ); insert into user values ..
Interceptor : Request 객체를 컨트롤러의 핸들러로 도달하기 전에 낚아채서 개발자가 원하는 추가작업을 한 후 핸들러로 보낼 수 있도록 해주는 것 추가적인 작업 로그인 체크, 권한 체크 등 관련 메소드 preHandle() 컨트롤러가 호출되기 전에 실행 false를 반환하면 request를 바로 종료 postHandle() 컨트롤러 수행 후 호출 비동기적 요청 처리 시에는 처리되지 않음 preHandle()에서 리턴 값이 false인 경우 미실행 적용 중인 인터셉터가 여러개인 경우, preHandle() 역순으로 호출 afterCompletion() view를 통해 클라이언트에 응답을 전송한 뒤 실행 요청 처리 중에 사용한 리소스를 반환해주기 적절한 메소드 preHandle()에서 리턴 값이..
AOP(Aspect Oriented Programming) 관점 지향 프로그래밍 어떤 로직을 기준으로 핵심 관심 사항과 공통(부가) 관심 사항으로 나누어 모듈화 핵심 관심 사항 : 적용하고자 하는 핵심 비즈니스 로직 공통(부가) 관심 사항 : 핵심 로직을 실행하기 위해 행해지는 부가적인 로직 ex) DB 연결, 로깅 등 분리한 부가 기능을 Aspcet라는 독특한 모듈 형태로 만들어서 설계하고 개발 (공통 모듈을 손쉽게 적용 가능) 💡 한 마디로 AOP란? 부가기능을 Aspcet로 정의하여, 핵심기능에서 부가기능을 분리함으로써 핵심기능을 설계하고 구현할 때 객체지향적인 가치를 지킬 수 있도록 도와주는 개념 (실무에서는 호불호가 갈린다고 한다) 💡 AOP 등장 배경 기존 OOP에서 공통관심사항을 여러 모듈에..
Spring 자바 기반의 엔터프라이즈 급 어플리케이션을 만들 수 있는 Framwork JEE가 제공하는 다양한 기능을 제공하는 것 뿐만 아니라, DI나 AOP같은 기능도 지원 개발자가 복잡하고 실수하기 쉬운 Low Level에 신경 쓰지 않고, Business Logic 개발에 전념할 수 있도록 해줌 프레임워크와 라이브러리의 차이점 "제어 흐름이 어디에 있는가" 프레임워크는 전체적인 흐름을 쥐고 있으며 애플리케이션의 코드는 프레임워크에 의해 사용됨 (프레임워크) 라이브러리는 개발자가 전체적인 흐름을 만들며 라이브러리를 가져다 씀 (개발자) IoC (Inversion of Control, 제어의 역전) 객체지향 언어에서 Object 간의 연결 관계를 런타임에 결정 객체 간의 관계가 느슨하게 연결됨 (loo..
Maven : 자바용 프로젝트 관리 도구 (자바 프로젝트들을 위한 빌드 자동화 도구) 💡 빌드란? 프로젝트를 위해 작성한 Java코드나 여러 자원들(.xml, .jar, .properties)를 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물 Maven 장점 라이브러리 관리를 용이하게 해줌 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 네트워크를 통해서 자동으로 다운받아 줌 프로젝트의 작성부터 컴파일, 테스트 등 프로젝트 라이프사이클에 포함되는 각 테스트를 지원 Maven LifeCycle clean, build, site 세 가지 Lifecycle을 제공 모든 빌드 단위에 대한 Lifecycle이 예약되어 있어서 개발자가 임의로 변경 불가 각 Lifecy..
JDBC (Java DataBase Connectivity) 자바 언어로 데이터베이스 프로그래밍을 하기 위한 라이브러리 자바 프로그래밍 언어로 만들어진 클래스와 인터페이스로 이루어진 API로서 ANSI SQL 지원 SQL문을 실행할 수 있는 함수 호출 인터페이스 JDBC 특징 DBMS 종류에 독립적인 자바 프로그래밍 가능 DB가 달라지더라도 동일한 API를 사용하게 해줌 (드라이버 및 URL만 수정하면 가능) 자바가 가지는 플랫폼에 독립적이라는 특성과 DBMS에 독립적인 특성을 가짐 JDBC 기능 데이터베이스에 연결 설정 SQL 문장을 DBMS에 전송 SQL 문장 전송 후 결과를 처리할 수 있음 JDBC API: java.sql package Driver (interface) 드라이버에 대한 정보를 가지..
DAO (Data Access Object) 실제로 DB에 접근하는 객체 (CRUD 기능 수행) DB에 접근하기 위한 로직 & 비즈니스 로직을 분리하기 위해 사용 DTO (Data Transfer Object) 계층 간 (Controller, View, Business Layer) 데이터 교환을 위한 Java Beans 로직을 가지지 않는 데이터 객체 ( getter, setter 메소드만 가진 클래스 ) VO (Value Object) : DTO와 유사하지만, read-only 특징을 가짐 (setter x) Entity 실제 데이터베이스 테이블과 1:1로 매핑되는 클래스 DB 테이블 내에 존재하는 컬럼만을 속성(필드)으로 가짐 Entity 클래스는 상속을 받거나 구현체여서는 안됨 💡 CRUD 란? :..
💡 Servlet, JSP 왜 쓸까? 동적 웹 어플리케이션을 제작하기 위해서는 프로그래밍 언어를 이용해야하기 때문에 Servlet이나 JSP를 사용한다! = 한 마디로, Java로 웹 어플리케이션을 만들어야 하는데, Java를 사용하기 위해서!! * 동적 웹 페이지 : 등록된 자원들 중 사용자의 요청에 따라 다른 결과들이 나오는 페이지 Servlet Java 코드 내 HTML 코드 자바를 사용하여 웹 서버에서 동적으로 생성한 웹 페이지를 웹 브라우저에 돌려줌 Servlet Life-Cycle 단순한 클래스가 서블릿 클래스가 되기 위해서는 서블릿 생명주기를 가져야 함 init(), service(), destroy() 순서의 생명주기를 추상 메소드로 갖는 인터페이스 = servlet 인터페이스 init()..
JavaScript 란? HTML, CSS와 함께 웹을 구성하는 요소 중 하나로, 웹 브라우저에서 동작하는 유일한 프로그래밍 언어 컴파일 없이 한줄 한줄 해석하며 바로 명령어를 실행하는 인터프리터 언어 HTML의 특정 요소를 선택하여 다양한 이벤트(ex. 마우스 클릭)에 따라 특정 동작을 하도록 기능을 넣을 수 있음 사용 방법 내부 스크립트 <script>태그를 HTML문서안에 넣어서 사용 주로 <body> 아래에 사용 외부 스크립트 자바스크립트 파일을 `.js` 확장자 파일로 저장한 후 불러옴 기본 문법 주석 // 한줄 주석 /* 블록 주석 */ 변수 JavaScript는 변수를 선언할 때 타입을 명시하지 않고 var 키워드를 사용하여 선언 JavaScript는 동적타입(Dynamic / Weak Ty..