전체 글
-
파일 업로드 validation checkJavaScript 2023. 8. 13. 15:26
파일 업로드를 구현하면서 마주했던 상황에 대해 정리하고자 한다. * 예제는 jQuery로 작성되었습니다. (필요하다면 javascript로 전환해 사용권장드립니다.) 1. 필수로 파일을 1개 이상 등록해야하는 경우 2. 파일의 확장자를 체크해야 하는 경우 3. 파일 이름에 특정 기호가 들어갔는지 확인해야하는 경우 function validation_file() { // 1. 하나 이상의 파일 필수 등록 if ($("#fileId").val().trim() == "") { alert("파일을 등록해주세요."); $("#fileId").focus(); return false; } // 2. 파일 확장자 체크 const FILE_NAME = $("#fileId").val(); const FILE_LENGTH ..
-
자바 데이터 타입Java 2023. 8. 13. 15:24
데이터 타입 자바에서 데이터 타입은 크게 기본형 타입과 참조형 타입이 있다. 기본형 타입(Primitive type) 기본값이 있기 때문에 Null이 존재하지 않는다. 실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다. 컴파일 시점에 담을 수 있는 크기를 벗어나면 에러를 발생시키는 컴파일 에러가 발생한다. 논리형 타입 : boolean (기본값 : false / 할당 메모리 : 1byte) 정수형 타입 : byte (기본값 : 0 / 할당 메모리 : 1byte) 타입 : short (기본값 : 0 / 할당 메모리 : 2byte) 타입 : int (기본값 : 0 / 할당 메모리 : 4byte) 타입 : long (기본값 : 0L / 할당 메모리 : 8byte) 실수형 타입 : float (기..
-
자바 예외 종류 및 Exception 처리Java 2023. 8. 13. 15:00
Error와 Exception의 차이 Error 시스템에 비정상적인 상황이 생겼을 때 발생한다. 개발자가 미리 예측이 어렵다. Exception 개발자가 구현한 로직에서 발생한다. Exception이 발생할 상황을 예측해 처리할 수 있다. Exception 클래스의 구조 모든 예외 클래스는 Throwable 클래스를 상속받고 있다. RuntimeException은 CheckedException과 UnCheckedException을 구분하는 기준이다. RuntimeException을 제외한 모든 클래스는 CheckedException이다. CheckedException 반드시 예외 처리를 해야한다. 컴파일 단계에서 확인이 가능하다. 롤백을 하지 않는다. IOException, SQLException, Cl..
-
프로세스(Process) & 스레드(Thread) 정리WEB & CS 2023. 8. 13. 14:45
* 프로세스와 스레드를 공부하기 전에 알아두면 좋은 정보 메모리 구조 code 실행 명령을 포함하는 코드들 cpu가 처리 data 전역변수(global)와 정적(static)변수가 저장 프로그램이 종료되면 소멸된다. heap 동적 메모리 영역 사용자가 관리할 수 있는 메모리 메모리의 낮은 주소에서 높은 주소 방향으로 할당 stack 지역변수, 매개변수등의 일시적인 데이터가 저장 함수 호출이 완료되면 소멸 Last-In First-Out방식에 따라 동작 * context swiching cpu에서 여러 프로세스를 돌아가면서 작업을 처리하는 과정 인터럽트를 발생시켜 CPU에서 실행중인 프로세스를 중단하고 다른 프로세스를 처리하기 위한 과정 현재 실행중인 프로세스의 상태(context)를 먼저 저장 다음 프로..
-
spring MVC & servlet 정리Spring Framework 2023. 8. 13. 14:31
servlet 동적 데이터를 처리하기 위해 CGI기반 프로그램 CGI의 단점을 보안하여 process가 아닌 thread 사용과 싱글톤 패턴을 사용해 하나의 구현체를 재사용하며 서버에서 많은 리소스 소모를 해결한다. http 요청에 대해 간편하게 사용하도록 API를 제공해준다. (http servlet 상속) init, destory, service를 통해 servlet의 생성주기를 servlet container가 관리한다. 요청 들어온 url에 맞는 servlet이 없으면 컨테이너에서 생성 사용하지 않는 servlet이 있다면 컨테이너에 보관 요청 들어온 url이 컨테이너에 있으면 꺼내서 재사용한다. init() : 클라이언트로부터 최초로 서블릿 요청이 있을 때 실행 service() : 클라이언트로..
-
spring 의존성 주입(DI)Spring Framework 2023. 8. 11. 21:00
DI (의존성 주입) 의존성 : 한 클래스가 변경되면 다른 클래스에 영향을 미치는 것 주입 대상이 여러개일 때, 우선 순위별로 먼저 찾는다. 타입(1순위) @Qualifier(2순위) @Primary(3순위) 이름(4순위) 의존성 주입 패턴 (3가지가 존재한다.) 생성자 주입 1순위 객체의 최초 생성 시점에 의존성을 1회만 주입해준다. final을 사용할 수 있어서 불변을 보장해준다. (추천 방법) final이 있어 NullPointException을 방지할 수 있다. 완전한 생성자라는 가정하에, new 키워드로 객체를 생성해줄 경우 NullPointException이 발생될 수 있지만, 생성자 주입은 방지할 수 있다. 객체 생성시점에 의존성 주입을 하니까 NullPointException을 방지 필드 ..
-
spring 제어의 역전 (Ioc)Spring Framework 2023. 8. 11. 20:53
IOC - 제어의 역전 객체를 외부에서 제어해 변수의 값에 변경이 자유로워졌다. 객체의 제어권을 객체 내부로부터 분리시킨다. 객체지향의 장점을 극대화 값의 변경에 따른 유연한 코드 작성 응집도를 높이고 결합도를 낮추며 변경에 유연한 코드를 작성할 수 있는 구조로 만든다. 예시 public class Ex { SubEx subEx; // 내부에서 직접 관리 (제어권이 객체 내부에 존재) : 변수를 내부에서 직접 초기화 public Ex() { this.subEx = new SubEx(); } // 변수를 받아 간접적으로 관리 (제어의 역전) : 외부로부터 인자를 받아 초기화 : 외부에서 관리한다. SubEx1 subEx1; SubEx2 subEx2; public Ex(SubEx1 subEx1, SubEx2..
-
json 파라미터 xss필터 처리 (request, response)Spring Framework 2023. 8. 11. 20:44
api 개발 중, naver lucy는 json 데이터에 필터 처리가 안되어 추가로 설정해주었습니다. request 받은 json 데이터에 xss 필터 처리 방법 - Controller 진입 전에 필터링 처리를 완료 1. naver lucy 관련 maven, xml파일 추가 - naver lucy github 참고 2. XssConfig.class 파일을 추가 - json 객체를 java 객체로 변환 후 json형식의 데이터를 String으로 전환 후 xss 필터링 처리 public class XssConfig extends JsonDeserializer { @Override public String deserialize(JsonParser p, DeserializationContext ctxt) thr..