목록Web (31)
개발합니다
https://hyoj-j.tistory.com/36?category=1265604 [Spring] poi 라이브러리를 이용한 엑셀 일괄 등록 Spring MVC + Maven 구조로 poi 라이브러리를 통해 엑셀 데이터를 읽고 DB에 저장하는 코드를 작성해봄. 스프링 강의는 많이 들었지만 전부 따라 하기만 했지 직접 구현해보는 건 처음이다 ... 그래도 hyoj-j.tistory.com 해당 포스팅에서 이어지는 내용입니다. MultipartHttpServletRequest를 써서 파일 업로드를 사용하는데 클래스를 찾을 수 없다고 나왔다. ~ 에러 메세지 ~ java.lang.classcastexception: org.apache.catalina.connector.requestfacade cannot b..
https://hyoj-j.tistory.com/36?category=1265604 [Spring] poi 라이브러리를 이용한 엑셀 일괄 등록 Spring MVC + Maven 구조로 poi 라이브러리를 통해 엑셀 데이터를 읽고 DB에 저장하는 코드를 작성해봄. 스프링 강의는 많이 들었지만 전부 따라 하기만 했지 직접 구현해보는 건 처음이다 ... 그래도 hyoj-j.tistory.com 해당 포스팅에서 이어지는 내용입니다. ajax를 통해 /excel/upload로 보내면 컨트롤러가 받는 구조인데 암만 버튼 눌러서 submit 해봐도 아무 반응이 없는 거다... F12로 DevTools 꺼내서 콘솔창 확인해봤더니 해당 URI를 찾지 못해서 404 에러가 나는 것을 확인했다. 안 그래도 MVC구조 처음 ..
Spring MVC + Maven 구조로 poi 라이브러리를 통해 엑셀 데이터를 읽고 DB에 저장하는 코드를 작성해봄. 스프링 강의는 많이 들었지만 전부 따라 하기만 했지 직접 구현해보는 건 처음이다 ... 그래도 완강 몇 번 하니까 어노테이션에도 익숙해지고, 구조가 잡히는 느낌이라 한 번 시도해봄! poi 라이브러리로 엑셀 데이터 읽는 부분은 다른 사람의 코드를 참고했다. ~ 구성 ~ 1. jsp에서 ajax를 통해 /excel/upload 주소로 업로드한 엑셀 파일 정보를 보냄 2. 해당 주소로 매핑된 contoller에서 정보를 받고, 적절한 service를 호출해준다 .xls 형식일 경우 xlsExcelReader() 메서드 호출 .xlsx 형식일 경우 xlsxExcelReader() 메서드 호출..
자주 사용하면서도 정확하게 이해하지 못한 부분들이라 한번 정리 하는 시간을 가진다. final이란? final 키워드는 엔티티를 한 번만 할당한다. final 필드는 초기값이 저장되면 최종적인 값이 되어 프로그램 실행 도중 수정이 불가능하다. final은 클래스, 메소드, 변수 각각에 전부 붙을 수 있다. static이란? static을 붙이면 메모리에 딱 한 번만 할당되어 메모리를 효율적으로 사용할 수 있다. static은 변수나 함수에 붙을 수 있다. static + final = 같은 값을 같은 주소(메모리)에 지정해서 메모리 낭비 없이 사용하겠다는 것 private static final : 재할당 불가능. 메모리에 한 번 올라가면 같은 값을 클래스 내부의 전체 필드, 메소드에 공유. privat..
스프링은 외부 설정 파일이나, VM 아규먼트와 같이 시스템 환경 변수와 같은 환경 정보를 읽을 수 있는 런타임 환경 서비스 추상화인 Environment 인터페이스를 제공하고 있다. 스프링 런타임 환경 추상화를 이용하면 다양한 소스로부터 일관된 방식으로 환경 정보를 읽을 수 있기 때문에 코드를 변경하지 않고도 얼마든지 설정 정보를 작성하는 방식을 변경할 수 있다. 환경 추상화(Environment Abstraction)란? 프로파일(profile)과 프로퍼티 소스(property-source)로 구성되며, 컨테이너와 통합 된 서비스 추상화이다. 이를 통해 실행 환경에 따라 빈을 구성할 수 있고, 일관된 방식으로 외부 설정 정보를 관리하고, 접근할 수 있다. 개발자는 environment 인터페이스나 애노..
람다식이란? 식별자 없이 실행 가능한 함수. 함수를 따로 만들지 않고 코드 한 줄에 함수를 써서 그것을 호출하는 방식이다. 사용법 (매개변수, ...) -> { 실행문 ... } 매개변수는 오른쪽 실행문을 실행하기 위해 필요한 값을 제공하는 역할이다. 매개변수 이름은 자유롭게 지정 가능하며, 인자 타입도 명시하지 않아도 된다. 매개변수가 하나이면 괄호를 생략해도 된다. a -> a * a 람다식의 바디부분 표현식이 하나일 경우에도 중괄호를 생략할 수 있다. 중괄호가 생략된 람다식에서는 세미콜론을 붙이지 않는다. 한가지 예외로 람다식 바디에 return문이 있는 경우엔 중괄호를 생략할 수 없다. (a, b) -> { return a > b ? a : b } 예제 @FunctionalInterface int..
DELETE FROM user_table TRUNCATE TABLE user_table [DELETE] DML(Data Manipulation Language) 종류 중 하나이다. delete문은 where절 사용이 가능하고, 테이블에 있는 데이터를 하나하나 선택하여 제거하는 방식. where절을 쓰지 않고 테이블 내에 모든 데이터를 삭제하더라도, 내부적으로는 한줄한줄 일일히 제거하는 과정을 거친다. -> 쿼리문 처리 속도가 길다. 따라서 원하는 데이터만 골라서 삭제할 때는 delete를 사용하고, 테이블의 전체 데이터를 삭제하고자 할 때는 truncate를 사용하는 것이 좋다. delete를 사용해서 삭제한 데이터는 commit 전에는 rollback을 통해 되돌릴 수 있다. [TRUNCATE] DDL..
1. 테이블 컬럼 추가하기 (ALTER TABLE ADD) user_table 테이블에 user_name 컬럼을 추가하고 싶을 때 ALTER TABLE user_table ADD (user_name VARCHAR2(13)); 2. 테이블 컬럼 수정하기 (ALTER TABLE MODIFY) user_table 테이블에 user_age 컬럼을 NUMBER(3) 타입으로 수정할 때 ALTER TABLE user_table MODIFY (user_age NUMBER(3)); 3. 테이블 컬럼 삭제하기 (ALTER TABLE DROP) user_table 테이블에 user_name 컬럼을 삭제할 때 ALTER TABLE user_table DROP COLUMN user_name; 4. 테이블 컬럼 이름 변경하기 ..
ajax란? Asynchronous JavaScript and XML 약자 자바스크립트를 이용해서 비동기식으로 서버와 통신하는 방식. 꼭 xml을 이용할 필요는 없고, 최근에는 json을 더 많이 이용한다. $.ajax(settings) 으로 사용한다. data : 서버에 전송할 데이터, key/value 형식의 객체 dataType : 서버가 리턴하는 데이터 타입 (xml, json, script, html) type : 서버로 전송하는 데이터의 타입 (POST, GET) url : 데이터를 전송할 URL success : ajax통신에 성공했을 때 호출될 이벤트 핸들러 - 예제 data에 담긴 POST 형식의 데이터를 url로 전달하고, json 타입으로 리턴받는다. 통신에 성공했을 시 반환 받은 j..
폼이란? 서버로 데이터를 전송하기 위한 수단이다. - .focus() | .blur() | .change() | .select() input 엘리먼트에 focus가 갔을 떄 focus input 엘리먼트에 focus가 사라졌을 때 blur input 엘리먼트의 값이 변경되었을 때 alert창이 뜬다. input 엘리먼트의 값이 선택됐을 때 select - .submit() | .val() form 태그에 submit이 일어났을 때, 만약 input 엘리먼트의 첫번째 = 의 값이 correct일 경우 Validated... span 값을 변경하고 return true; 를 통해 submit이 완료된다. (form action 실행) 만약 input 엘리먼트의 첫번째 = 의 값이 correct가 아닐 경우 ..