최근에 비동기식으로 api를 호출해야 할 일이 있었다. [Controller] for{ BasicService.함수A(); } [BasicService] @Async 함수A() 대략 이런 구조로 짰는데, 개발서버에서는 문제없이 기동되더니 운영에서 톰캣을 기동하니 문제를 일으켰다. 대략적인 내용은 in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. ~~~ 블라블라 구글링해보니 순환참조 때문이라는데 순환참조는 각각의 빈들을 서로서로 참조하다가 엉켜버리는 상황인 듯 하다. A->..
일반적으로 여러개의 데이터를 select 해와서 한번에 insert 하는 쿼리는 하단과 같다. INSERT INTO RESULT_TB ( SEQ, NAME, AGE, GENDER ) SELECT RESULT_SEQ.NEXTVAL, NAME, AGE, GENDER FROM STUDENT_TB WHERE AGE >= 20; 그런데, RESULT_TB2 라는 테이블이 새로 생기고, 이제는 20살 이상의 학생들을 RESULT_TB, RESULT_TB2 모두 한번에 넣어줘야 하는 상황이 생겼다. 근데, RESULT_TB 의 시퀀스를 가지고 그대로 RESULT_TB2 테이블의 RESULT_SEQ 라는 컬럼에 바로 넣어줘야 하는 상황이다. 나..
기존 ajax로 form을 등록할 때, $.ajax({ type: 'POST', url: '~~~'. data: $(form).serialize(), dataType: 'json', success: function(data) { alert("성공"); } }); 이렇게 했는데, form에 첨부파일을 전송하기위해 enctype="multipart/form-data" 를 붙인뒤, 위의 ajax로 데이터를 전송하려고 하니 에러가 떴다. $.ajax({ type: 'POST', url: '~~~'. data: new FormData($(form)[0]), processData: false, contentType: false, dataType: 'json', success: function(data) { aler..
아래와 같이 두개의 LinkedHashMap 이 있다고 가정한다.LinkedHashMap aMap = { name=kildong, age=22, gender=female };LinkedHashMap bMap = { name=nara, age=25, gender=male }; (tip! 만약, mybatis를 이용해 db쿼리문에서 값을 받아와서 LinkedHashMap에 넣고자 한다면 오라클에선 nvl을 써서 null값도 다른값을 넣어서 다 갖고오는 방식으로 두 LinkedHashMap의 키의 갯수와 이름들은 반드시 맞춰줘야 함) 이제, 키의 갯수와 이름이 동일한 두개의 맵의 값을 비교해보자.ArrayList diffList = new ArrayList();Set aKeys = aMap.keySet();S..
xpath를 사용하면 원하는 태그의 value만 추출하기가 수월한데, 서칭결과 내 로컬에 있는 xml 파일들만으로 예제가 나와있었다.나의 경우는 외부 url에서 xml 파싱해와서 거기서 원하는 태그의 값만 뽑아오고 싶었던 상황. [전체흐름]외부 url xml 파싱 -> 파싱결과를 readLine을 통해 전체 xml을 String으로 형변환 -> 해당 String을 xpath를 통해 원하는 값만 추출 외부 url로 얻어온 xml홍길동20programmerfemale java import 경로 import javax.xml.xpath.XPath;import javax.xml.xpath.XPathConstants;import javax.xml.xpath.XPathFactory; java 코드URL obj = ..
이름 : ${row.name} / 나이 : ${row.age} 모달 내용해당 유저 이름은 ${row.name} 입니다. 라는 코드가 있을 때, 나는 foreach문을 돌면서 해당하는 row값이 모달에도 찍히길 원했다.하지만 결과는 list의 맨 첫번째 row값만 계속 모달창에 불려진다. 해결 방법은 모달 id에 일련번호를 붙이는 것이다. 아래는 해결 코드 (위에서 빨간글씨들만 추가해 주면 됨) 이름 : ${row.name} / 나이 : ${row.age} 모달 내용해당 유저 이름은 ${row.name} 입니다.
이번 프로젝트 때, 해쉬맵에 (키, 값 : no, count) 구조로 넣어두었는데, 그 중 count가 제일 높은 숫자인 no를 뽑아와야됐었다. 맵 엔트리를 써서 가능했다. Map map = new HashMap(); //임의로 맵에 값 넣음 (No, count수)map.put(1,5);map.put(2,3);map.put(5,4); for (Map.Entry entry : map.entrySet()) { if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) {maxEntry = entry; //compareTo를 이용해 제일 높은 map값이 maxEntry에 저장됨 }} //이러면 maxEntry에 최대 count수를 ..