전체 카테고리

1. $scope 함수로 정의 시 이를 호출하여 내부에서 스코프 변수값을 변경한 경우 바로 변경되나, 일반 함수(function)로 정의한 경우 값이 바로 변경되지 않는다. 2. 타 컨트롤러의 함수를 호출하거나 변수 값을 변경할 때는 다음과 같이 접근할 수 있다. 물론 타 컨트롤러의 스코프 함수/변수에 한해서 가능하다. const otherCtrl = $("[data-ng-controller=otherCtrl]").scope(); $scope.apply(function(scope) { scope.otherCtrlFunction(); scope.otherCtrlVar = ''; }) 3. Apply하는 방식은 아래 두 가지 방법 모두 가능하다. $scope.$apply(function() { $scope...
getServletContext().getRealPath() 컨트롤러로 전달되는 HttpServletRequest의 세션(혹은 HttpSession)으로부터 서블릿 컨텍스트를 받아 getRealPath() 메소드를 통해 실제 경로를 구할 수 있다. 이는 파일 다운로드 등에도 자주 사용된다. request.getSession().getServletContext().getRealPath(); 유의 개인 프로젝트 진행 시에, 분명 서블릿 컨텍스트는 "/"로 지정되어있는 상태에서 위와 같이 경로를 구하면 임시로 톰캣이 프로젝트를 실행시키는 위치를 받아왔다. 실제 프로젝트가 위치한 경로가 안나왔다... 회사 코드에서는 위의 코드로 프로젝트가 위치한 경로가 나왔는데 이 이유를 모르겠다..!
MyBatis에서는 #{변수}, ${변수}을 사용해 해당 변수를 넘겨준 파라미터 값으로 치환할 수 있다. 이 때, 둘은 쿼리가 실행될 때 차이점을 보인다. 아래의 두 쿼리문을 보자. SELECT * FROM MOVIES WHERE MOVIENAME=#{movieName} SELECT * FROM MOVIES WHERE MOVIENAME=${movieName} 위 쿼리문을 마이바티스를 통해 실행했을 경우 실제로는 아래와 같이 실행된다. SELECT * FROM MOVIES WHERE MOVIENAME='타이타닉'; SELECT * FROM MOVIES WHERE MOVIENAME=타이타닉; 이러한 차이 때문에 동적쿼리문을 작성할 때 테이블명 혹은 컬럼명이 입력해야 하는(따옴표가 없어야 하는) 부분에는 '#..
이미지 파일(BLOB 타입)을 데이터 베이스에서 가져와 실제 이미지화하여 이를 파일로 다운로드 하기 위해선 ImageIO 클래스의 read 함수를 통해 이미지를 받아와 이를 write 함으로써 가능하다. 참고로 아래 코드 중 'png'가 들어가는 부분에는 이미지의 확장자를 넣으면 된다. String image = itemVO.getImageData(); byte[] imageBlob = Base64.getDecoder().decode(imageDataStr.split(",")[1]); String fileName = "C:\Users\Admin\Downloads\new_image.png"; BufferedImage img = ImageIO.read(imageBlob); ImageIO.write(img, ..
1. 이미지 캡쳐할 영역 지정 첫 번째 인자로는 캡쳐할 영역의 element를, 두번째 인자로는 옵션을 전달할 수 있다. 아래와 같이 제이쿼리 선택자를 이용할 경우에는 '[0]'을 붙여주어야 한다. 또한, 캡쳐되는 영역에서 일부 요소들은 제외하고 싶다면 ignoreElements 옵션을 사용하여 특정 조건에 맞으면 return true(참이면 제외) 하여 제외시킬 수 있다. html2canvas($("#imgDiv")[0], { ignoreElements: (element) => { if (element.className === "ignoreElemId") { return true; } }, }).then(function (canvas) { var img = canvas.toDataURL("image/p..
1. Word 파일(.docx) 1) 바이너리 파일 작성 완료 후 바이트 배열로 만들기 InputFileStream is = new InputFileStream("/filePath"); XWPFDocument doc = new XWPFDocument(is); ... ByteArrayOutputStream os = new ByteArrayOutputStream(); doc.write(os); os.close(); doc.close(); byte[] xwpfBytes = os.toByteArray(); // xwpfBytes를 DB에 넣는 작업 수행 2) DB에서 바이트 배열 가져와서 파일로 다운로드 String fileName = "document.docx"; byte[] fileBytes = mapper..
1. 워드 파일 생성 File templateFile = new File(path, templateFileName); XWPFDocument doc = new XWPFDocument(new FileInputStream(templateFile)); 2. 테이블 생성(기존 템플릿 테이블 사용 시 POIWordUtil.copyTable() 사용 가능) XWPFTable tbl = doc.createTable(); POIWordUtil.copyTable(templateTable, tbl); XWPFTable tbl = doc.createTable(); XWPFTableRow row = tbl.createRow(); // 이미 존재하는 XWPFTableRow 삽입 시 addRow() 사용 가능 XWPFTableC..
· Backend/Java
회사의 SPA 어플리케이션 개선 작업을 하면서 스크립트로 서버와 통신하는 일이 잦다. 이전에 혼자 프로젝트를 진행하면서 크게 의식하지 않고 사용했던 부분을 회사 업무를 수행하면서 헷갈렸던 부분들에 대해 제대로 정리하게 됐다. ajax 를 사용해 서버로 데이터를 보낼 시 1. Object 형태로 전달 시에는 해당 변수명과 일치한다는 전제 하에 @RequestBody 사용 가능 1) JavaScript let obj = { name: '이름', company: '회사', department: '부서' } $.ajax({ url: "/example", type: "GET"/"POST", data: { dataName: obj }, success: function(result) { ... }, error: fu..
아래 예제에서는 obj2가 빈 객체와 obj를 합친 것으로, 실상은 obj 객체를 복사한 것으로 볼 수 있다. let obj = { name: "이름", age: 22, company: "회사명" } let obj2 = $.extend({}, obj);
· Backend/Java
배열을 리스트로 변환해 병합하려는 리스트들을 새로 생성한 리스트에 추가한다.(addAll) List list = new ArrayList(); List list2 = mapper.getList1(obj); List list3 = mapper.getList2(obj); list.addAll(list2); list.addAll(list3);
devYH
'분류 전체보기' 카테고리의 글 목록 (16 Page)