You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.8 KiB
7.8 KiB
VM options 추가
테스트 서버 기동 방법
1) git레포지터리 main 브랜치 반영시 젠킨스 자동 실행
2) 젠킨스 직접 실행(1단계 실패시)
젠킨스 관리자 페이지 로그인 -> DEV-FIMS 빌드
3) 톰캣 직접 기동(2단계 실패시)
원격접속
-> 톰캣 디렉토리(/application/FIMS) 이동
-> ./stop.sh, ./deploy.sh, ./start.sh 순서로 실행
IDE plugin
1) 표기법 변경
[인텔리제이]
CamelCase 플러그인 : kebab-case, SNAKE_CASE, PascalCase, camelCase, snake_case 또는 space case 간에 쉽게 전환
(Shift + Alt + U)
2) Git 관련
[인텔리제이]
Git Commit Template : 템플릿을 이용해 commit 내역을 관리
3) mybatis관련
[인텔리제이]
MyBatisX : mapper에서 xml을 편하게 이동
4) 메이븐 의존성 트리
[이클립스]
별도 플러그인 없이 pom.xml 오픈 > dependency hierarchy 탭에서 확인
[인텔리제이]
maven helper : pom.xml 오픈 > dependency Analyzer 탭에서 확인
브라우저 plugin
1) 폰트 확인
WhatFont : 웹페이지 내 폰트 종류 확인 가능
2) 색상 확인
ColorZilla : 웹페이지 내 색상코드 확인 가능
유틸 프로그램
1) 색상 확인
picpick : 화면캡처프로그램. 스포이드 툴로 색상코드 확인 가능
2) git 클라이언트 프로그램
소스트리 : 수정한 소스 중에서 줄 단위 커밋 가능
팝업 공통처리 : 등록 / 변경 / 삭제 팝업
1) 변수 정의
<c:set var="isUpdate" value="${!empty 조건값}"/>
<c:set var="bizName" value="권한"/>
2) title include
<div class="popup">
<div class="container-window1">
<!-- popup title -->
<%@include file="/WEB-INF/jsp/include/fims/title-biz-popup.jsp"%>
<div class="container-window-btn1">
<span colspan="4">
<a href="#" class="btn btn-blue" id="btnRegist">등록</a>
<a href="#" class="btn btn-blue" id="btnModify">변경</a>
<a href="#" class="btn btn-red" id="btnRemove">삭제</a>
<a href="#" class="btn btn-lightgray" onclick="window.close()">닫기</a>
</span>
</div>
<!--팝업 버튼 -->
<%@include file="/WEB-INF/jsp/include/fims/btns-biz-popup.jsp"%>
columns style
{
header: '롤 명',
name: 'roleNm',
width: 150,
sortingType: 'desc',
sortable: true,
filter: 'select',
renderer: {
styles: {
//fontWeight: 'bold',
background: (props) => props.value === 'Y' ? 'cyan' : 'red'
},
attributes: {
'data-type': 'default',
title: (props) => `title: ${props.formattedValue}`
},
classNames: ['blue']
}
}
참조 - 필수
git 사용법 강좌 css flex / grid 강좌1 css flex / grid 강좌2 css flex / grid 강좌3
JSP에서 el태그(${})에 JSTL <c:out>을 사용해야 하는 이유
jsp에서 다양한 방식으로 서버사이드 데이터를 출력할 수 있다.
그 중 가장 많이 쓰는건 el태그인데 그 이유는 el태그 사용법이 ${}로 매우 간단하기때문이다.
el태그만 써도 화면에 값이 잘 출력되는데 왜 굳이 <c:out>를 사용할까?
결론: XSS 방어하기 위해!
<c:out>를 사용하면 escapeXml속성을 활용할 수 있다.
escapeXml를 true로 설정함으로써 가장 간단하게 XSS(링크)를 방어할 수 있다.
// 1.escapeXml = true 인 경우(디폴트)
<c:out value="<script type='text/javascript'>alert('테스트');</script>"/>
// 2.escapeXml = false 인 경우 == el태그와 동일
<c:out value="<script type='text/javascript'>alert('테스트');</script>" escapeXml="false"/>
- escapeXml = true의 경우, text 그대로 출력된다.
- escapeXml = false 인 경우나 el태그인 경우, alert창이 실행된다.
따라서 XSS 방어하기 위해서는 <c:out>을 사용하는 게 좋다.
윈도우 팝업 호출시 blockUI 적용
// 팝업호출하는 화면단 : ~Form.jsp
$.blockUI({message: '' ,css: {width: '100%', height: '100%'}
//모달창 외부 클릭시 닫기
,onOverlayClick: () => {
$.unblockUI();
popup?.self?.close();
}
});
popup = CmmPopup.open(url, params, popOption, popTitle);
// 팝업창
// event에 아래 코드 추가
$(window).on("unload", function (e) {
window.opener?.unblockUI();
window.opener?.callbackSearch();
return null;
});
$("#btnClose").on('click', () => {
window.close()
});
JSP include
1. 정적인 방식(static=directive)
- 동적인 방식보다 빠르다.
- 파라미터를 주고 받을 수 없다.
- 변수 공유
- 해당 jsp페이지가 컴파일될 때, 참조하는 파일(include)도 함께 컴파일 된다.
=> 두 파일의 코드가 합쳐진 상태로 컴파일 된다.
<%@ include file="파일경로/파일명"%>
2. 동적인 방식(dynamic)
- 정적인 방식보다 느리다.
- 파라미터(데이터)를 주고 받을 수 있다.
- 페이지가 request 될 때 , 포함할 jsp 페이지를 다시 request를 하는 과정을 가진다.
2-1. 액션태그 사용
- <jsp:param> 태그로 데이터 전송 가능
<jsp:include page="파일경로/파일명">
<jsp:param value="myValue" name="myKey"/>
</jsp:include>
전달받은 쪽 - 전달받은 값 : <%= request.getParameter("myKey") %>
<jsp:include> 액션 태그로 포함하는 페이지에서만 유효.
2-2. 코어태그(JSTL) 사용
- <c:param> 태그로 데이터 전송 가능
<c:import url="파일경로/파일명" charEncoding="utf-8"/>
<c:import url="파일경로/파일명"
var="데이터를 저장할 변수명"
scope="변수의 공유 범위"
varReader="리소스의 내용을 Reader 객체로 읽어올 때 사용"
charEncoding="읽어온 데이터의 캐릭터셋 지정">
<c:param name='' value='${}'/>
</c:import>
Mybatis select key 여러개
<selectKey keyColumn="aaaId,bbbId" keyProperty="aaaId,bbbId"
resultType="cokr.xit.fims.biz.ec.CctvCrackdownDTO$ExtrlRegltCntc" order="BEFORE">
SELECT LPAD(IFNULL(MAX(CAST(aaa_id AS UNSIGNED))+1, 1), 12, '0') AS aaaId
, LPAD(IFNULL(MAX(CAST(bbb_id AS UNSIGNED))+1, 1), 20, '0') AS bbbId
FROM tb_aaa
</selectKey>
<!--
주의사항
selectKey 여러개 가져올 때는 반드시,
콤마 한 다음 반드시 붙여줘야 한다(space가 있으면 오류 발생)
keyColumn="fileLinkId,crdnId" keyProperty="fileLinkId,crdnId"
-->
상속 구조의 lombok builder 사용 -> @SuperBuilder 사용해야 한다
@Data
@NoArgsConstructor
@AllArgsConstructor // 반드시 필요
@SuperBuilder
public static class Parents {
private String crdnId;
private String vhrno;
}
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public static class Child extends Parents {
private String crdnId;
private String vhrno;
}
외부연계 참조 : 서버로그 경로 - /data/fims/logs
Rest API-dev: http://211.119.124.9:18090/swagger-ui/index.html
Rest API-prod: http://211.119.124.9:8090/swagger-ui/index.html
배치: http://211.119.124.9:28090/swagger-ui/index.html
documentation
부트스트랩 documentation : https://getbootstrap.kr/docs/
sneat documentation : https://demos.themeselection.com/sneat-bootstrap-html-admin-template/documentation/