no message
parent
95a03372e9
commit
aab4008098
@ -1,244 +0,0 @@
|
||||
### VM options 추가
|
||||
|
||||
|
||||
### 테스트 서버 기동 방법
|
||||
```text
|
||||
1) git레포지터리 main 브랜치 반영시 젠킨스 자동 실행
|
||||
2) 젠킨스 직접 실행(1단계 실패시)
|
||||
젠킨스 관리자 페이지 로그인 -> DEV-FIMS 빌드
|
||||
3) 톰캣 직접 기동(2단계 실패시)
|
||||
원격접속
|
||||
-> 톰캣 디렉토리(/application/FIMS) 이동
|
||||
-> ./stop.sh, ./deploy.sh, ./start.sh 순서로 실행
|
||||
```
|
||||
|
||||
#### IDE plugin
|
||||
```text
|
||||
|
||||
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
|
||||
```text
|
||||
1) 폰트 확인
|
||||
WhatFont : 웹페이지 내 폰트 종류 확인 가능
|
||||
2) 색상 확인
|
||||
ColorZilla : 웹페이지 내 색상코드 확인 가능
|
||||
```
|
||||
#### 유틸 프로그램
|
||||
```text
|
||||
1) 색상 확인
|
||||
picpick : 화면캡처프로그램. 스포이드 툴로 색상코드 확인 가능
|
||||
2) git 클라이언트 프로그램
|
||||
소스트리 : 수정한 소스 중에서 줄 단위 커밋 가능
|
||||
```
|
||||
|
||||
## 팝업 공통처리 : 등록 / 변경 / 삭제 팝업
|
||||
```html
|
||||
|
||||
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
|
||||
```js
|
||||
{
|
||||
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 사용법 강좌](https://www.youtube.com/watch?v=1I3hMwQU6GU&t=4031s)
|
||||
[css flex / grid 강좌1](https://www.youtube.com/watch?v=7neASrWEFEM)
|
||||
[css flex / grid 강좌2](https://www.youtube.com/watch?v=eprXmC_j9A4)
|
||||
[css flex / grid 강좌3](https://www.youtube.com/watch?v=DxwBN7vdr-A&list=PLFeNz2ojQZjso4ZJVeeMWR72l8s9V8Ym9)
|
||||
|
||||
## JSP에서 el태그(${})에 JSTL <c:out>을 사용해야 하는 이유
|
||||
```text
|
||||
jsp에서 다양한 방식으로 서버사이드 데이터를 출력할 수 있다.
|
||||
그 중 가장 많이 쓰는건 el태그인데 그 이유는 el태그 사용법이 ${}로 매우 간단하기때문이다.
|
||||
|
||||
el태그만 써도 화면에 값이 잘 출력되는데 왜 굳이 <c:out>를 사용할까?
|
||||
```
|
||||
#### 결론: XSS 방어하기 위해!
|
||||
```text
|
||||
<c:out>를 사용하면 escapeXml속성을 활용할 수 있다.
|
||||
escapeXml를 true로 설정함으로써 가장 간단하게 XSS(링크)를 방어할 수 있다.
|
||||
```
|
||||
|
||||
```js
|
||||
// 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"/>
|
||||
```
|
||||
1. escapeXml = true의 경우, text 그대로 출력된다.
|
||||
2. escapeXml = false 인 경우나 el태그인 경우, alert창이 실행된다.
|
||||
|
||||
따라서 XSS 방어하기 위해서는 <c:out>을 사용하는 게 좋다.
|
||||
|
||||
# 윈도우 팝업 호출시 blockUI 적용
|
||||
```js
|
||||
// 팝업호출하는 화면단 : ~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
|
||||
```text
|
||||
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 여러개
|
||||
|
||||
```xml
|
||||
|
||||
<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 사용해야 한다
|
||||
```java
|
||||
|
||||
@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><br/>
|
||||
Rest API-prod: <http://211.119.124.9:8090/swagger-ui/index.html><br/>
|
||||
배치: <http://211.119.124.9:28090/swagger-ui/index.html><br />
|
||||
|
||||
### documentation
|
||||
부트스트랩 documentation : <https://getbootstrap.kr/docs/><br/>
|
||||
sneat documentation : <https://demos.themeselection.com/sneat-bootstrap-html-admin-template/documentation/><br/>
|
||||
|
@ -1,3 +0,0 @@
|
||||
Manifest-Version: 1.0
|
||||
Class-Path:
|
||||
|
Loading…
Reference in New Issue