분류 전체보기 62

[자바웹개발워크북] 2. 웹과 데이터베이스

/* * * 자바웹개발워크북의 내용을 정리하기 위한 포스팅입니다. * MariaDB, JDBC, Lombok, ConnectionPool, VO/DTO, CRUD예제, Log4j2 */ 1. @Test : 테스트코드 혹은 테스트메소드라고 하는데 @Test를 적용하는 메소드는 반드시 public으로 선언되어야 하고, 파라미터나 리턴타입이 없이 작성합니다. 2. Assertions.assertEquals() : 말그대로 '같다고확신한다'는 의미이고, 두변수의 내용이 같아야만 테스트가 성공하게 됩니다. EX) Assertions.assertEquals(v1, v2); 3. 코드설명 @Test public void testConnection() throws Exception { Class.forName("org..

개발/JAVA 2022.12.24

[자바웹개발워크북] 1. 웹프로그래밍의 시작

/* * * 자바웹개발워크북의 내용을 정리하기 위한 포스팅입니다. * 서블릿/JSP, GET/POST, PRG패턴, HTTPServlet, EL/JSTL */ 1. intellij를 통해 프로젝트 생성 시 'Jakarta EE'항목으로 생성하려면 Java Enterprise로 생성합니다. 2. 톰캣9버전을 사용한 이유 : 톰캣10버전은 서블릿 버전이 5버전으로 시작되면서 javax가 아닌 jakarta로 시작되는 형태로 패키지명이 변경되어 서블릿을 작성할 때 문제가 발생할 수 있습니다. 3. intellij에서 exploded된 artifact를 못찾는 문제발생 : 긴 경로를 수정해주기위해 기존 '.war'를 제거하고 artifact를 (exploded)가 포함된 항목으로 지정 후 실행시켰더니 오류가 발..

개발/JAVA 2022.12.16

로컬에서 CORS policy관련 에러가 발생하는 이유

다음 html파일을 로컬환경에서 크롬브라우저로 실행 시켰더니 Access to script at 'file:///경로/hello.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https, isolated-app. 이와 같은 에러메시지가 발생했습니다. 1. 발생원인 의 특성 먼저 MDN의 javascript modules에 관한 설명에 따르면 문제가 된 부분같이 type을 module로 설정한 태그가 포함된 HTML 파일을 로컬에서 로드할 경우..

개발/typescript 2022.10.10

자바스크립트의 비동기처리(Promise, async, await)

주로 다음과 같은 작업들을 비동기적으로 처리하게 됩니다. Ajax Web API 요청 서버쪽에서 데이터를 받와아야 할 때, 요청을 하고 서버에서 응답을 할 때 까지 대기를 해야 되기 때문에 작업을 비동기적으로 처리합니다. 파일 읽기 주로 서버 쪽에서 파일을 읽어야 하는 상황에는 비동기적으로 처리합니다. 암호화/복호화 암호화/복호화를 할 때에도 바로 처리가 되지 않고, 시간이 어느정도 걸리는 경우가 있기 때문에 비동기적으로 처리합니다. 작업 예약 단순히 어떤 작업을 몇초 후에 스케쥴링 해야 하는 상황에는, setTimeout 을 사용하여 비동기적으로 처리합니다. 비동기 작업을 다룰 때에는 callback 함수 외에도 Promise, 그리고 async/await 라는 문법을 사용하여 처리 할 수 있습니다. ..

카테고리 없음 2022.10.07

자바스크립트의 Scope에 대한 이해

1. Scope 란? 우리가 변수 혹은 함수를 선언하게 될 때 해당 변수 또는 함수가 유효한 범위를 의미합니다. Scope 는 총 3가지 종류가 있습니다. Global (전역) Scope: 코드의 모든 범위에서 사용가능. Function (함수) Scope: 함수 안에서만 사용가능. Block (블록) Scope: if, for, switch 등 특정 블록 내부에서만 사용가능. const value = 'hello!'; function myFunction() { console.log('myFunction: '); console.log(value); } function otherFunction() { console.log('otherFunction: '); const value = 'bye!'; conso..

개발/javascript 2022.10.06

spread와 rest

이번에는 ES6 에서 도입된 spread 와 rest 문법에 대해서 알아보겠습니다. 서로 완전히 다른 문법인데, 은근히 헷갈립니다. 1. spread spread 라는 단어가 가지고 있는 의미는 '펼치다', '퍼뜨리다' 입니다. 이 문법을 사용하면, 객체 혹은 배열을 펼칠수있습니다. const slime = { name: '슬라임' }; const cuteSlime = { name: '슬라임', attribute: 'cute' }; const purpleCuteSlime = { name: '슬라임', attribute: 'cute', color: 'purple' }; console.log(slime); console.log(cuteSlime); console.log(purpleCuteSlime); 이 코..

개발/javascript 2022.10.06

비구조화 할당(구조분해) 문법

비구조화 할당 문법을 사용하면 다음과 같이 객체 안에 있는 값을 추출해서 변수 혹은 상수로 바로 선언할 수 있습니다. const object = { a: 1, b: 2 }; const { a, b } = object; console.log(a); // 1 console.log(b); // 2 그리고, 함수의 파라미터에서도 비구조화 할당을 할 수 있습니다. const object = { a: 1, b: 2 }; function print({ a, b }) { console.log(a); console.log(b); } print(object); 그런데 여기서 만약 b 값이 주어지지 않았다고 가정해보겠습니다. const object = { a: 1 }; function print({ a, b }) { con..

개발/javascript 2022.10.06

조건문 스마트하게 사용하기

1. 특정 값이 여러 값중 하나인지 확인해야 할 때 만약 특정 값이 여러 값 중 하나인지 확인을 해야 하는 상황이 생겼다면 이러한 시도를 해볼 수 있습니다. function isAnimal(text) { return ( text === '고양이' || text === '개' || text === '거북이' || text === '너구리' ); } console.log(isAnimal('개')); // true console.log(isAnimal('노트북')); // false 비교값이 많아질 수록 코드가 길어집니다. 이문제의 해결방법은, 배열을 만들고 배열의 includes 함수를 사용하는 것입니다. function isAnimal(name) { const animals = ['고양이', '개', '거..

개발/javascript 2022.10.06

함수의 기본 파라미터

함수의 기본 파라미터를 설정하는 방법에 대해서 알아보겠습니다. 여기 원의 넓이를 구하는 함수가 있습니다. function calculateCircleArea(r) { return Math.PI * r * r; } const area = calculateCircleArea(4); console.log(area); // 50.26548245743669 여기서 Math.PI 는 원주율 파이(π) 값을 가르킵니다. 만약 이 함수에 r 값을 넣어주지 않으면 어떤 결과가 나타날까요? function calculateCircleArea(r) { return Math.PI * r * r; } const area = calculateCircleArea(); console.log(area); // NaN 결과는 NaN 이..

개발/javascript 2022.10.02

단축평가 논리계산법

논리 연산자를 조금 더 유용하게 사용하는 방법에 대해서 배워보겠습니다. true && true // true true && false // false true || false // true false || true // true 논리 연산자를 사용 할 때에는 무조건 우리가 true 혹은 false 값을 사용해야 되는 것은 아닙니다. 문자열이나 숫자, 객체를 사용 할 수도 있고, 해당 값이 Truthy 하냐 Falsy 하냐에 따라 결과가 달라집니다. 예를 들어서, const dog = { name: '멍멍이' }; function getName(animal) { return animal.name; } const name = getName(dog); console.log(name); // 멍멍이 그런데 만약..

개발/javascript 2022.10.02