
JSON (JavaScript Object Notation) JSON data : name-value 형태의 쌍으로 collection 타입 data는 , 로 나열 객체는 {} 로 표현 배열은 [] 로 표현 XML 사용시 파싱과 같은 복잡한 문제를 해결 XML에 비해 상대적으로 구문이 짧음 단, JSON은 전달받은 데이터의 무결성을 직접 검증 (XML은 스키마 이용) 텍스트 기반이므로 어떠한 프로그래밍언어와 플랫폼에서도 사용 가능 JSON 자료형 수 (Number) 문자열 String) : 끈따옴표로 구분 참/거짓 (Boolean) 배열 (Array) 객체 (Object) null (비어 있는 값) { "name": "신짱구", "age": 7, "married": false, "family": { "f..

Event 웹 페이지에서 여러 종류의 상호작용이 있을 때 마다 이벤트가 발생 JavaScript를 사용해 DOM에서 발생하는 이벤트를 감지하여 대응하는 여러 작업 수행 가능 이벤트는 일반적으로 함수와 연결이 되고,이벤트 발생 전에는 실행되지 않다가 이벤트가 발생할 경우 실행 Event Handler (Listener) 이벤트 발생시 실행해야 하는 함수 Event 종류 마우스 이벤트 이벤트 설명 onclick 마우스로 Element를 클릭 했을 때 발생 ondblclick 마우스로 Element를 더블 클릭 했을 때 발생 onmouseup Element에 마우스 버튼을 올렸을 때 발생 onmousedown Element에서 마우스 버튼을 눌렀을 때 발생 onmouseover 마우스를 움직여서 Element..

Swagger 간단한 설정으로 프로젝트의 API 목록을 웹에서 확인 및 테스트 할 수 있게 해주는 Library Swagger를 사용하면 Controller에 정의되어 있는 모든 URL을 바로 확인할 수 있음 API 추가 또는 변경 시 문서에 적용해야하는 불편함 해결 💡 FrontEnd 개발자는 화면과 로직에 집중하고, BackEnd 개발자가 만든 문서 API를 보며 데이터 처리! Swagger 적용 1. dependency 추가, 설정 pom.xml io.springfox springfox-boot-starter 3.0.0 io.springfox springfox-swagger2 3.0.0 io.springfox springfox-swagger-ui 3.0.0 root-context.xml 2. Swa..

Ajax (Asynchronous JavaScript and XML) 웹에서 화면을 갱신하지 않고 데이터를 서버로부터 가져와 처리하는 방법 (화면의 일부만 갱신 가능) 화면 갱신이 없으므로 사용자는 편리하지만, 동적으로 DOM을 구성해야 하므로 구현이 복잡 언어나 프레임워크가 아닌 구현하는 방식을 의미 CORS error가 발생할 수 있음 💡 일반 요청에 대한 응답 - data를 입력 후 event 발생 - Ajax를 적용하지 않은 요청은 서버에서 data를 이용하여 logic 처리 - logic 처리에 대한 결과에 따라 응답 page를 생성하고 client에 전송 (화면 전환 발생) 💡 Ajax 요청에 대한 응답 - data를 입력 후 event 발생 - Ajax를 적용하면 event 발생시 서버에서 ..

DOM ( Document Object Model ) HTML 문서나 XML 문서에 접근하기 위한 일종의 인터페이스 문서 내의 모든 요소의 목적과 특징을 정의하고, 각각의 요소에 접근하는 방법을 제공 DOM 객체 가져오기 태그 이름(tag name)을 이용한 선택 💡 getElementsByTagName(tagname) : 태그이름이 tagname과 일치하는 element 배열 얻기 var selectedItem = document.getElementsByTagName("li"); // 모든 요소를 선택 for (var i = 0; i < selectedItem.length; i++) { selectedItem.item(i).style.color = "red"; // 선택된 모든 요소의 텍스트 색상을 변..

Spring Boot 스프링(Spring)을 더 쉽게 이용하기 위한 도구 * Spring의 경우 Application을 개발하려면 사전에 많은 작업을 해야했음 ( library 추가, dependency 설정, SpringFramework가 처리해야 하는 여러 가지 구성 및 설정파일 등 ) Spring Boot의 장점 project에 따라 자주 사용되는 library들이 미리 조합되어 있음 복잡한 설정을 자동으로 처리 내장 서버를 포함해서 tomcat과 같은 WAS를 추가로 설치하지 않아도 개발 가능 WAS에 배포하지 않고도 실행할 수 있는 JAR 파일로 Web Application을 개발 가능 Project 생성 Project 구조 src/main/java : java source directory H..

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..

메모리 관리 배경 프로그램은 반드시 메모리로 불러와야 실행할 수 있다! 💡CPU가 직접 접근할 수 있는 유일한 저장 공간 = Main Memory , registers Register → 1 CPU clock (or less) 에 접근 가능 (굉장히 빠른 저장 공간) Main memory → many cycles (*memory stall : main memory에 접근 하는 메모리 멈춤 시간) 중간에 cache(register 보다는 느리고, main memory 보다는 빠름!!)를 사용함으로써 메모리 접근 시간을 줄일 수 있다!! ( = 메모리 효율을 높일 수 있다!!) 💡 보조 기억장치(하드디스크) → 주 기억장치(메모리) → CPU 프로세스는 독립적인 메모리 공간(Stack, Data, Code,..

내용 정리 겸 지금까지 학습한 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()에서 리턴 값이..