본문 바로가기

[개발] Programming197

자바 쿠키 다루기 (쿠기 생성, 조회, 삭제) 자바 쿠키 다루는 방법 쿠키는 4개의 속성과 하나의 데이터를 가지는 구조체이다. 서버는 응답에 Set-Cookie 헤더를 포함시키는 방식으로 쿠키를 설정한다. 쿠키는 key, 값 쌍과 선택적인 어트리뷰트들로 구성된다. 자바 쿠키 구조 쿠키의 기본 구조는 다음과 같다. Set-Cookie: name=value; expires=[Date]; domain=[Domain]; path=[Path]; [secure] 자바 쿠키 특징 유효기간 쿠키가 생성되면 기본적으로 브라우저가 종료될 때까지는 쿠키의 데이터를 사용할 수 있다. 하지만 유효 기간을 지정하면 브라우저가 종료되어도 지정한 기간 동안은 쿠키 데이터를 읽고 쓸 수 있게 된다. 유효 기간이 지나면 쿠키 데이터는 소멸된다. 실제로 파일이 지워지지는 않더라도 데.. 2018. 11. 8.
자바 HashMap vs Hashtable 차이점, 예제 HashMap VS HashTable 둘의 차이점을 최대한 요약해서 정리해보자면 1. HashMap은 단일 스레드 적합하며 null을 허용하지만 동기화가 안된다.2. HashTable은 멀티 스레드에 적합하고 동기화되지만 null을 입력할 수 없고 동기화에 따른 성능의 저하가 발생한다. 아래는 상세한 차이점. HashMap vs Hashtable HashMap 1) 비동기식이다. 멀티 스레드에는 적합하지 않다. 2) key, value에서 하나의 null key와 다수의 널 value를 허용한다. 3) HashMap is a new class introduced in JDK 1.2. 4) 속도가 비교적 빠르다. 5) 아래 코드를 사용하면 동기화가 가능하다. Map m = Collections.synchr.. 2018. 11. 8.
자바, 몇몇 특수문자로 split이 안될 때 해결 방법 자바 내장함수 split()을 사용하다보면 몇몇 특수 문자로는 split이 안되는 경우가 있다. 예로, 아래 문자열을 각각 ' | '와 ' ^ '으로 split 하려 시도하면 원하는 결과가 안나온다. abc가나다 | 라마 ^ 바사 tmp = "abc가나다 | 라마 ^ 바사".split("|"); // 결과: "abc가나다 | 라마 ^ 바사" 이럴 땐 \\을 붙이면 해결된다. tmp = "abc가나다 | 라마 ^ 바사".split("\\|"); // 결과: "abc가나다", "라마 ^ 바사" tmp = "abc가나다 | 라마 ^ 바사".split("\\^"); // 결과: "abc가나다 | 라마", "바사" 즉 특수 문자를 '특수 문자'가 아닌 일반 문자로 인식시키기 위해서는 \를 붙여야 하는데, \를 하.. 2018. 11. 8.
LOB의 종류와 CLOB을 자바 스트링으로 변환시키는 방법 LOB (Large OBject) - LOB은 TEXT, 그래픽, 이미지, 비디오, 사운드 등 구조화되지 않은 대형 데이터를 저장하는데 사용한다. - 일반적으로 테이블에 저장되는 구조화된 데이터들은 크기가 작지만, 멀티미디어 데이터는 크기가 크다. - 크기가 큰 데이터는 DB에 저장하기 힘들기 때문에 OS상 존재하는 파일을 데이터베이스가 접근하게 된다. - LONG, LONG RAW 데이터 유형은 예전에 사용던 것이고, 현재는 대부분 LOB 데이터 유형을 사용한다. - TO_LOB 함수를 이용하여 LONG 및 LONG RAW 를 LOB 으로 변경할 수 있다. 종류 - CLOB: 문자 대형 객체 (Character). Oracle Server는 CLOB과 VARCHAR2 사이에 암시적 변환을 수행한다. -.. 2018. 11. 7.
자바 SimpleDateFormat으로 Date 타입 String 타입으로 변환 ​ Date 타입의 날짜 데이터를 문자열로 변환하는 방법은 다음과 같다. 간단하게 코드를 통해 예시를 보여주면, String dateString = null; // 변환할 날짜 포멧을 원하는 형식으로 지정 가능 SimpleDateFormat sd = new SimpleDateFormat("yyyy/MMM/​dd"); try{ dateString = sd.format( indate ); // indate는 변환할 날짜 }catch (Exception ex ){ System.out.println(ex); } 위 소스에서 'yyyy/MMM/​dd' 이부분을 'yyyy-MMM-​dd' 이런식으로 변경해줄 수도 있다. 2018. 11. 7.
iBATIS, CDATA를 적는 목적 xml 문서내 쿼리안에 , & 등의 특수문자가 포함 될 경우 에러를 방지하기 위해 를 추가해준다. SELECT * FROM DUAL WHERE A C ]]> CDATA를 사용하지 않고 iBatis에서 사용하려면, 다음과 같이 처리하면 된다. SELECT * FROM DUAL WHERE A > B AND B < C 또한 내에서 다이나믹 쿼리는 쓰지 못한다. 2018. 11. 7.
iBatis 오라클 NUMBER 타입, java.math.BigDecimal cannot be cast to java.lang.String 에러 해결 방법 오라클 쿼리 리턴 데이터 타입이 NUMBER 인 경우 컨트롤러 단 HashMap에서 get 할 때 'java.math.BigDecimal cannot be cast to java.lang.String' 오류 발생 * myNumber 데이터 타입은 NUMBER String pNum = numMap.get("myNumber")); > java.math.BigDecimal cannot be cast to java.lang.String NUMBER 타입을 string 변수에 담으려다 발생한 오류이다. * 아래와 같이 변환해주면 호출이 가능함. String pNum = String.valueOf(numMap.get("myNumber")); 2018. 11. 6.
MyBatis, 쿼리 파라미터 # 와 $ 의 차이점 마이바티스에서 #, $의 차이는 옵티마이저 동작의 여부이다. select * from testTable where id = #{testId} select * from testTable where id = ${testId} $의 경우 #와는 달리 SQL 인젝션 공격에 취약한 단점이 있지만, 장점은 옵티마이져가 실행되기 때문에 적절한 플랜으로 쿼리가 돌아간다. 예를 들어, EMPLOYEE 테이블에 POSITION 이라는 컬럼에 아래와 같은 데이터가 있다고 가정하자. 사원 900명 대리 500명 로얄패밀리 10명 경영진 2명 테이블에서 '사원'이나 '대리'를 자주 추출할 때에는 Full Scan이 유리하고 상대적으로 적은 '로얄패밀리'나 '경영진'을 추출할 때에는 Index 스캔이 유리하다. 이때 '$'를 사.. 2018. 11. 5.
자바스크립트 대문자 소문자 변환 함수 toUpperCase(), toLowerCase() 대문자로 변환 : toUpperCase() 라는 함수를 사용하면, 영문 알파벳이 모두 대문자로 변환된다. 예) 123456789 var orgStr = "abcDEFghi123한글"; orgStr = orgStr.toUpperCase(); console.log("orgStr = " + orgStr); Colored by Color Scriptercs 결과: 콘솔에 'orgStr = ABCDEFGHI123한글' 이 찍힌다. 소문자로 변환 : toLowerCase() 라는 함수를 사용하면, 영문 알파벳이 모두 소문자로 변환된다. 예) 123456789 var orgStr = "abcdefghi123한글"; orgStr = orgStr.toLowerCase(); console.log("orgStr = " + .. 2018. 11. 5.