jQuery
jdxWidget library - datepicker, grid 대부분
Fusioncharts library(모든차트) / c3, d3(Active Dashboard)
jquery.nanoscroller / jquery.coockie / jquery.chosen(Combo Box) ..
npm install -g grunt-cli
gem install sass
frontend
sass - cache(grunt설치 후 보임) : sass 캐시파일, 네비게이터 표시X, SVN 공유X
dist - src 하위 app/xx.js에서 minify하면 dist로 이동한다. 배포용 파일이 생성되는 곳
..
src - 개발용 javascript files
GruntFile.js - grunt config javascript (svn 공유 X)
webapp
resources - 메뉴얼 및 javascript
WEB-INF - xx.jsp
reports - 사용자정의통계 다운로드 xxx.jrxml(보고서파일)
backend
com.seculayer.web
업무단위별로 나누어진다.
*Util.java(common/util/..) 자주쓰는함수는 개발되어있다.
레이아웃종류
[default] - 기본
[modal-page] ModalPopup
함수선언 - [exmodal-page] exModalPopup
함수선언 depth 4개까지 확장가능
[expand-page] - togglePage
함수선언
..
템플릿종류
Layout 안 템플릿들이 있다.
TemplateAndPage => ../common/tpl/xx.jsp
선언 X -> default_template
..
@ui.component
class 지정 -> design 호출
ui.api.document
참고 _alert
..
cd /CloudESM/logs/ls 로그정보가 쌓인다.
tail -f ./catalina.out
Logger.info/debug(cd /CloudESM/app/www/ROOT/WEB-INF..
기타. 빌드 방식
작업한양이 너무많으면 .war 압축파일로 보내준다. .war
빌드하기전에 미리 해놓는다.
.war
빌드 전 Project - Clean
컴파일 된거 모든파일들 재컴파일하고 클린해주기!
기타. SQL
SELECT / UPDATE 컴마 뒤쪽에 붙여서 주석처리 편하게 할 것. 개발 시 ..
일반적으로 URL은 다음과 같은 규칙으로 작성
["/" + {menupath} + "/" + {page_id} + "" + {action} + "." + {ext}]
page_id : 업무를 대표하는 단어(사용자 : comuser , 자산 : asset)
action : [list, form, view, insert, update, delete]
. list : 목록 페이지/데이타
. form : 입력/수정 Form
. view : 상세 페이지/데이타
. insert : 입력
. update : 수정
. delete : 삭제
ext
. html : 화면에 표시될 페이지
. do : 입력/수정/삭제등 처리
. json : 데이타 조회
예) /management/collector_list.html (콜렉터 목록페이지)
화면 표시부분과 데이터 조회/처리를 분리
예) 기존 : comuser_list.do => 변경 : comuser_list.html(화면) + comuser_list.json(데이터 조회/처리)
첫 화면은 기존 default_template을 사용, 부분 페이지(modal, exmodal, togglePage)는 partial_template을 사용
예) ModelAndView mv = new ModelAndView(default_template); // Template = "/common/tpl/default_template";
ModelAndView mv = new ModelAndView(partial_template);
모든 데이타 송수신 방식은 json 형식을 사용하므로 @RequestBody, @ResponseBody로 Controller 변경
Grid를 제외한 모든 요청에 대한 결과는 JsonResultEntity 객체에 담아서 전달
예) public @ResponseBody JsonResultEntity insert(HttpSession session, @RequestBody Map<String, Object> map) {}
화면의 Grid Library에서 사용되는 요청과 ~~.html 은 parameter 방식사용하고 결과는 GridResultEntity를 전달
예) public @ResponseBody Map<String,Object> getList(@RequestParam Map<String,Object> map)
Grid에서 Paging 처리시 recordstartindex와 pagesize를 사용하므로 mapper에서 해당 변수명으로 변경
예) LIMIT #{recordstartindex}, #{pagesize}
<choose>
<when test="recordstartindex==null">
LIMIT 0, 10
</when>
<otherwise>
LIMIT #{recordstartindex}, #{pagesize}
</otherwise>
</choose>
대메뉴단위에서 업무 단위로 Mapper.xml 분리
코드성 정보는 화면에서 선택하는 용도로 사용할 경우 jsp에서 직접 사용,
결과 데이타의 코드는 SQL 또는 서버 로직으로 값을 변환
기존 Controller에서 Transaction 및 다중처리(업무 로직) 부분이 있는 경우 Service에서 처리되도록 변경
#{}은 PreparedStament이다. #{} 구문은 ? 로 변경되어 DBMS에 SQL문이 캐싱되어진다.
추후에 바인딩되기 때문에 ?값이 달라져도 같은 컴파일이 된 내용을 재사용할 수 있다.
또한 ''가 자동으로 생성된다.
그렇기때문에 Table명이나 Column명이 들어갈 때는 ${}을 통해 쿼리문을 작성한다.
${} Statment이다. ${}구문은 ? 아닌 새로운 쿼리로 실행된다.
따라서 SQL문 자체가 변경되고 컴파일되며, SQL Injection에 취약하다.
또한 '' 가 자동으로 생성되지 않는다.
cd ./CloudESM/tool/mac_address.sh
https://10.1.9.110:8443/
ipconfig -all
물리적주소 : A8-xx-xx
http://localhost:8080/
참고 https://velog.io/@lzhxxn/JSON-Parsing%ED%8C%8C%EC%8B%B1%EC%9D%B4%EB%9E%80
참고 https://velog.io/@lzhxxn/Today-I-learned.-what-can-do
참고 https://velog.io/write?id=598b365b-f225-4d2b-8010-ec66af4d88c2
grunt 쓰는구나 신기방기