'프로그래밍 > Library' 카테고리의 다른 글
[eclipse] 이클립스 + Mantis (0) | 2009.10.27 |
---|---|
[Utils] Paros 사용법 (0) | 2009.09.06 |
[Subclipse] ignore (0) | 2009.04.02 |
[firebug] 파이어버그 가이드 (0) | 2009.03.20 |
[MD5] MD5 암호화 (0) | 2009.03.13 |
[eclipse] 이클립스 + Mantis (0) | 2009.10.27 |
---|---|
[Utils] Paros 사용법 (0) | 2009.09.06 |
[Subclipse] ignore (0) | 2009.04.02 |
[firebug] 파이어버그 가이드 (0) | 2009.03.20 |
[MD5] MD5 암호화 (0) | 2009.03.13 |
테이블 정보 상세보기
F4 : Table, View, Proc, Funct, Package를 DESC(테이블명 위에 커서를 두고 F4키)
자동완성
Ctrl+. : Table Completion (매칭되는 테이블목록 출력)
Ctrl+T : Columns Dropdown (해당테이블의 컬럼목록 표시)
SQL문 실행
F5 : SQL Editor내의 모든 SQL문 실행
Ctrl+Enter : 현재 커서의 SQL문 실행
F9 : SQL문 실행 후 Grid에 출력
히스토리(과거 수행SQL문 조회)
F8 : 과거에 실행한SQL문 HISTORY 목록
Alt+Up : History UP
Alt+Down : History DOWN
텍스트 대/소문자 변환
CTRL+L : 텍스트를 소문자로
CTRL+U : 텍스트를 대문자로
주석처리
Ctrl+B : 주석처리
Ctrl+Shift+B : 주석해제
편집 창 전환(이동)
F6 : SQL Editor와 결과창간의 이동
F2 : SQL Editor창 전체화면 전환
Shift+F2 : Grid Output창 전체화면 전환
기타 단축키
F7 : 화면을 모두 CLEAR
Ctrl+Shift+F : 쿼리문을 보기좋게 정렬
Ctrl+F9 : SQL문 Validate (SQL문을 수행하지 않음)
[Toad] tab 간격 조정하기 (0) | 2010.02.02 |
---|---|
[ORACLE] 특수문자 입력 (0) | 2009.10.21 |
[oracle10g] 페이징 시 rownum 사용하기 (0) | 2009.04.06 |
[Oracle] [펌] sqlplus 사용법 (0) | 2009.03.24 |
[펌] MSSQL 함수모음 (0) | 2009.01.14 |
<!--[if ie]>
<style type="text/css">
html {
overflow: scroll;
overflow-x: auto;
}
</style>
<![endif]-->
[servlet] servlet (0) | 2009.09.04 |
---|---|
[jQuery] jQuery 예제 02 (0) | 2009.09.04 |
[ajax] 소스 (0) | 2009.08.19 |
[javascript] 이미지 파일 업로드 시 이미지의 사이즈 알아내기2 (0) | 2009.07.30 |
[javascript] 이미지 파일 업로드 시 이미지의 사이즈 알아내기 (0) | 2009.07.29 |
/** * BP설명 이미지, BP브랜드 이미지를 삭제한다.(ajax) */ function deleteBpFile(fileType) { var mbrNo = document.getElementById("mbrNo").value; // 이미지 삭제 링크 숨기기 if(fileType == "BP_DESC") { document.getElementById("deleteBpDesc").style.display = "none"; //document.getElementById("linkBpDesc").style.display = "none"; } else { document.getElementById("deleteBpBrand").style.display = "none"; } var parameter = "mbrNo=" + mbrNo + "&fileType=" + fileType; //alert(parameter); var req = newXMLHttpRequest(); req.onreadystatechange=getReadyStateXmlHandler(req, fileDeleted); req.open("POST", "${pageContext.request.contextPath}/manage/deleteBpFile.omp", true); // 비동기처리여부 req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(parameter); } /** * ajax 응답(xml)을 받아서 처리 */ function fileDeleted(xml) { var bodyTag = xml.getElementsByTagName("body")[0]; var typeTag = bodyTag.getElementsByTagName("type")[0]; //alert(typeTag); var type = typeTag.firstChild.nodeValue; //alert(type); var resultTag = bodyTag.getElementsByTagName("result")[0]; var result = resultTag.firstChild.nodeValue; if(result == "Y") { // 파일 링크 지우기 if(type == "BP_DESC") { document.getElementById("linkBpDesc").style.display = "none"; } else { document.getElementById("linkBpBrand").style.display = "none"; } } else { // 파일 삭제 링크 다시 보여주기 if(type == "BP_DESC") { document.getElementById("deleteBpDesc").style.display = ""; } else { document.getElementById("deleteBpBrand").style.display = ""; } } } // ajax call <span id="linkBpDesc"><strong><s:a href="%{url}"><s:property value="%{umBpInfo.bpDescImgName}"/></s:a></strong></span> <span id="deleteBpDesc"><a href="#" onclick="deleteBpFile('BP_DESC'); return false;">이미지 삭제</a></span> |
// Action // BP회원 관련 파일 - BP설명이미지, BP브랜드이미지 파일 삭제 public String deleteBpFile() { log.debug("<< ManageAction.deleteBpFile... >>"); HttpServletRequest request = this.getRequest(); String mbrNo = request.getParameter("mbrNo"); String fileType = request.getParameter("fileType"); log.debug("mbrNo = " + mbrNo); log.debug("fileType = " + fileType); String xml = this.manageService.deleteBpFile(mbrNo, fileType); setInputStream(new ByteArrayInputStream(xml.getBytes())); return SUCCESS; } // 설정파일 <!-- 파일 삭제 --> <action name="deleteBpFile" class="com.omp.bp.cms.manage.action.ManageAction" method="deleteBpFile"> <result type="stream"> <param name="inputName">inputStream</param> <param name="contentType">text/xml</param> <param name="bufferSize">4096</param> </result> </action> // Service // BP추가 파일 삭제 후, 결과를 XML형식으로 반환 @SuppressWarnings("unchecked") public String deleteBpFile(String mbrNo, String fileType) throws ServiceException { log.debug("<ManageServiceImpl> deleteBpFile..."); StringBuffer xml = null; UserMemberBpInfo umbi = null; try { // DB에서 파일 경로를 얻음 umbi = this.manageDAO.getMemberBpinfo(mbrNo); if(umbi == null) { throw new ServiceException("BP추가 파일 삭제 중 BP회원 정보 읽기 실패", "getMemberBpinfo FAIL"); } // 파일경로 변경 - 앞에 /data 붙이기 umbi = DataUtil.makeFilePathFromDB(umbi); // fileType에 따라 파일 삭제 if(StringUtils.equalsIgnoreCase(fileType, "BP_DESC")) { File f = new File(umbi.getBpDescImgPath()); if(f.exists() && f.isFile()) { if(!f.delete()) { throw new ServiceException("BP추가 파일 삭제 중 설명 파일 삭제 실패", "delete FAIL"); } else { log.debug("BP 설명 물리 파일 삭제"); // DB 갱신 - 파일 경로 삭제 Map map = new HashMap(); map.put("mbrNo", mbrNo); map.put("fileType", fileType); if(!this.manageDAO.deleteBpFile(map)) { throw new ServiceException("BP추가 파일 삭제 중 DB 갱신 실패", "update db FAIL"); } log.debug("BP 설명 파일 경로 삭제"); } } } else if(StringUtils.equalsIgnoreCase(fileType, "BP_BRAND")) { File f = new File(umbi.getBpTbnailImgPath()); if(f.exists() && f.isFile()) { if(!f.delete()) { throw new ServiceException("BP추가 파일 삭제 중 브랜드 파일 삭제 실패", "delete FAIL"); } else { log.debug("BP 브랜드 물리 파일 삭제"); // DB 갱신 - 파일 경로 삭제 Map map = new HashMap(); map.put("mbrNo", mbrNo); map.put("fileType", fileType); if(!this.manageDAO.deleteBpFile(map)) { throw new ServiceException("BP추가 파일 삭제 중 DB 갱신 실패", "update db FAIL"); } log.debug("BP 브랜드 파일 경로 삭제"); } } } // 삭제 결과를 XML로 작성 xml = makeXmlForDeleteBpFileResult(fileType, true); } catch(Exception e) { log.debug("BP추가 파일 삭제 실패", e); xml = makeXmlForDeleteBpFileResult(fileType, false); } return xml.toString(); } private StringBuffer makeXmlForDeleteBpFileResult(String fileType, boolean isSucceeded) { StringBuffer xml = new StringBuffer(); xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); xml.append("<body>"); xml.append("<type>"); xml.append(fileType); xml.append("</type>"); xml.append("<result>"); xml.append(isSucceeded ? "Y" : "N"); xml.append("</result>"); xml.append("</body>"); log.debug("DELETE BP FILE - XML"); log.debug(xml.toString()); return xml; } |
[jQuery] jQuery 예제 02 (0) | 2009.09.04 |
---|---|
[javascript] IE6.0 프레임 - 가로 스크롤바 버그 (0) | 2009.08.21 |
[javascript] 이미지 파일 업로드 시 이미지의 사이즈 알아내기2 (0) | 2009.07.30 |
[javascript] 이미지 파일 업로드 시 이미지의 사이즈 알아내기 (0) | 2009.07.29 |
[html] HtmlCleaner를 이용한 html 파싱 (1) | 2009.07.27 |
[struts2] <s:if> 사용법2 (0) | 2010.08.04 |
---|---|
[struts2] Workflow interceptor (0) | 2010.03.02 |
[Struts2] 스트러츠2태그에 기본값 설정하기 (0) | 2009.07.30 |
[Strust2] <s:radio> 사용법 (1) | 2009.07.29 |
[Struts2] Model-driven interceptor (0) | 2009.05.27 |
<s:select name="parentCategoryId" list="parentCategoryList" listKey="key" listValue="value" headerKey="" headerValue="선택" onchange="setCategoryListComboByParentCategory();"></s:select> 이 jsp를 결과로 하는 액션클래스에서 parentCategoryId를 멤버변수로 get/set 함수를 갖고 있으면, 액션클래스에서 parentCategoryId에 설정한 값이 위의 태그의 기본값으로 설정된다. <s:select name="contentInfo.categoryId" list="categoryList" listKey="value" listValue="label" headerKey="" headerValue="선택" onchange="setExtMetaByCategoryId();"></s:select> 마찬가지. 단 contentInfo 클래스의 categoryId 멤버변수값 |
[struts2] Workflow interceptor (0) | 2010.03.02 |
---|---|
[Strust2] 가이드 문서, 레퍼런스 문서 (0) | 2009.07.30 |
[Strust2] <s:radio> 사용법 (1) | 2009.07.29 |
[Struts2] Model-driven interceptor (0) | 2009.05.27 |
[Struts2] <s:checkbox> 사용법 (0) | 2009.05.08 |
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="image_util.js"></script> <script type="text/javascript"> function fileCheck(formObj) { if(formObj.fileName.value == "") { alert("이미지를 선택해주세요."); return false; } if(formObj.checkUploadImgOkYn.value != "Y") { alert("업로드 할 수 없는 이미지 파일입니다."); return false; } return true; } </script> </head> <body> <form name="F" onsubmit="return fileCheck(this);"> <input type="file" name="fileName" onChange="checkUploadImg(this.value, 'checkUploadImgOkYn', 'jpg' ,1600, 1200, 500)" > <input type="hidden" name="checkUploadImgOkYn" id="checkUploadImgOkYn" value="N"> <br> <input type="submit"> </form> </body> </html> |
// 이미지 파일 관련 javascript /** * 파일 확장자를 반환 * @param filePath 파일 path * @return 확장자 */ function getFileExtension(filePath) { var lastIndex = -1; lastIndex = filePath.lastIndexOf('.'); var extension = ""; if ( lastIndex != -1 ) { //extension = filePath.substring( lastIndex+1, filePath.len ); extension = filePath.substring( lastIndex+1); } else { extension = ""; } return extension; } // 이미지.onload시의 callback 함수에 파라미터를 넘기기 위한 전역변수 var g_objId = ""; // 이미지 체크 후, 그 결과를 설정할 input태그의 id. ex) <input type="hidden" name="checkUploadImgOkYn" id="checkUploadImgOkYn" value="N"> var g_widthLimit = 0; // 이미지 최대 가로길이 var g_heightLimit = 0; // 이미지 최대 세로길이 var g_fileSizeLimit = 0; // 이미지 최대 파일크기 /** * 이미지 업로드 태그에서 부를 함수. ex) <input type="file" name="fileName" onChange="checkUploadImg(this.value, 'checkUploadImgOkYn', 'jpg' ,1600, 1200, 500)" > * @param imgSrc 이미지 파일 * @param objId 이미지 체크 후 결과를 설정할 input태그의 id * @param fileExt_limit 이미지 파일 확장자 제한 * @param width_limit 이미지 최대 가로길이 * @param height_limit 이미지 최대 세로길이 * @param fileSize_limit 이미지 최대 파일크기 * @return 없음. 체크에 성공하면 objId에 Y를 설정. 실패하면 N을 설정함. */ function checkUploadImg(imgSrc, objId, fileExt_limit, width_limit, height_limit, fileSize_limit) { var widthLimit = 0; var heightLimit = 0; var fileSizeLimit = 0; var fileExtLimit = ""; if(typeof width_limit != "undefined") { // 제약조건이 있으면 widthLimit = width_limit; } if(typeof height_limit != "undefined") { // 제약조건이 있으면 heightLimit = height_limit; } if(typeof fileSize_limit != "undefined") { // 제약조건이 있으면 fileSizeLimit = fileSize_limit; } if(typeof fileExt_limit != "undefined") { // 제약조건이 있으면 fileExtLimit = fileExt_limit; } else { // 이미지 파일만 업로드해야 하므로 조건이 없으면 기본설정 fileExtLimit = "jpg,gif,png"; } // global 변수에 저장. callback함수에 인자 넘기기 불가하기 때문 g_objId = objId; g_widthLimit = widthLimit; g_heightLimit = heightLimit; g_fileSizeLimit = fileSizeLimit; // IE 체크 if(navigator.userAgent.toLowerCase().indexOf("msie") == -1) { // IE가 아니면 var msg = "파일 확장자 : " + fileExtLimit; msg = (widthLimit != 0) ? msg + " , 이미지 가로 길이 : " + widthLimit : msg; msg = (heightLimit != 0) ? msg + " , 이미지 가로 길이 : " + heightLimit : msg; msg = (fileSizeLimit != 0) ? msg + " , 이미지 가로 길이 : " + fileSizeLimit : msg; alert("인터넷 익스플로러가 아닌 경우에는 업로드할 그림을 확인할 수 없습니다.\n다음의 조건에 맞는 파일을 업로드해 주세요.\n" + msg); document.getElementById(g_objId).value = "Y"; return; } if(typeof imgSrc == "undefined" || imgSrc == "") { alert("선택된 파일이 없습니다."); } var ext = getFileExtension(imgSrc); //alert(ext); if (ext == "") { alert('올바른 파일을 입력하세요'); return; } else if(fileExtLimit != "" && ext.toLowerCase().indexOf(fileExtLimit.toLowerCase()) == -1) { // 제약조건이 없으면 체크 안 함 alert(fileExtLimit + " 형식의 파일만 가능합니다."); return; } LoadImg(imgSrc); } /** * 이미지를 로드 * @param imgSrc 이미지 파일 path * @return */ function LoadImg(imgSrc) { var imgInfo = new Image(); imgInfo.onload = img_Loaded; imgInfo.onerror = function() { // always called alert("이미지 파일의 로드에 실패했습니다."); document.getElementById(g_objId).value = "N"; }; imgInfo.src = imgSrc; } /** * image.onload의 callback 함수. image가 load 되면 불려진다. * @return */ function img_Loaded() { /*var imgSrc, imgWidth, imgHeight, imgFileSize; imgSrc = this.src; imgWidth = this.width; imgHeight = this.height; imgFileSize = this.fileSize; alert(imgWidth);*/ var objId = g_objId; var widthLimit = g_widthLimit; var heightLimit = g_heightLimit; var fileSizeLimit = g_fileSizeLimit; //alert(widthLimit); //alert(heightLimit); if (this.src == "" || this.width <= 0 || this.height <= 0) { alert("이미지 파일의 로드에 실패했습니다."); document.getElementById(objId).value = "N"; return; } // 제약조건 확인 if(widthLimit != 0 && this.width > widthLimit) { alert("선택한 이미지의 가로 길이가 허용치인 " + widthLimit + " 를 초과했습니다.\n선택한 이미지의 가로 길이는 " + this.width + " 입니다."); document.getElementById(objId).value = "N"; return; } if(heightLimit != 0 && this.height > heightLimit) { alert("선택한 이미지의 세로 길이가 허용치인 " + heightLimit + " 를 초과했습니다.\n선택한 이미지의 세로 길이는 " + this.height + " 입니다."); document.getElementById(objId).value = "N"; return; } if(fileSizeLimit != 0 && this.fileSize > fileSizeLimit*1024) { alert("선택한 이미지 크기가 허용치인 " + fileSizeLimit + "KB 를 초과했습니다.\n선택한 이미지의 크기는 약 " + Math.ceil(this.fileSize/1024) + "KB 입니다."); document.getElementById(objId).value = "N"; return; } // 제약조건 이내라면 document.getElementById(objId).value = "Y"; //이미지 사이즈 저장 //document.F.imgWidth.value = imgWidth; //document.F.imgHeight.value = imgHeight; //alert("this.width = " + this.width); //alert("this.height = " + this.height); //alert(document.getElementById(objId).value); } |
[javascript] IE6.0 프레임 - 가로 스크롤바 버그 (0) | 2009.08.21 |
---|---|
[ajax] 소스 (0) | 2009.08.19 |
[javascript] 이미지 파일 업로드 시 이미지의 사이즈 알아내기 (0) | 2009.07.29 |
[html] HtmlCleaner를 이용한 html 파싱 (1) | 2009.07.27 |
[javascript] 스크립트로 style, class 변경 (1) | 2009.07.24 |