오전
Exception
1조 코드보며 리뷰
- CustomTransactionException, SqlDeleteFailedException, SqlInsertFailedException, SqlUpdateFailedException... 각 클래스를 만들어서 처리하는 것 보다 서비스 선언부에 throws SQLException 하는 것이 간단하다
- DAO에서부터 던져줘야 한다, DAO에서 throws 해주지않으면 서비스, 컨트롤러까지 올 수 없다.
우리조 코드
- throws exception ㄴㄴ 예외종류를 명확하게 지정해줘야 보안상 문제를 줄일 수 있음
- LOGGER 상수아닌데 상수로해놓음
- logger.error(this.getClass().getName() + " " + e.getMessage());
- 보안상 e.printStackTrace는 위배됨
- 혹여라도 문제가 되서 errorPage가 없는 경우 웹페이지에 에러 내용이 다 보이게 됨
- debug 레벨 말고 error로
- select만했을때 select error 내보낸다쳐도 select+insert오류나면 어쩔껀데..? 차라리 SERVER_ERROR_MSG 하나 만들어서 내보내는게 낫다
- 보통 프로젝트에서는 보안상의 문제도 고려하여 오류를 자세히 내보내지 않는다, '오류발생' 간단하게 alert 혹은 에러페이지로 이동
- 대신 logger에서 확실히 찍어줘야함
Logger와 System.out
- sysout으로 찍는 습관 버려라
- 나중에 개발끝나고 sysout 지우는 것도 일임
- logger 찍는 습관 키울것!!
화면
우리조
- 변수명 what으로 넘기는것 수정
- 관리사무소에서 조회하는 벤더 공지사항 ui가 벤더ui로 되어있음
로그인화면
인덱스
입주관리
- 상세보기 모달이 필요할듯
- 스크린사이즈 맞춰서 공백로우생기는거
- jquery 벨리데이터 td이상하게 붙는거
- 모달 닫기누르면 필수항목입니다 없어져야함
전자결재
4조
- input type="number" 여도 validation 체크 필요
- 15000.0 여도 number이기때문에 NumberFormatException 발생
오후
thread-safe, thread-notsafe
- 1조 CustomPaginationInfo 를 BaseController에 빼둔거 보고 조언하심
- 한 메서드를 3명 동시에 탔을때 괜찮으면 safe
- 서버에 컨트롤러 인스턴스 1개생기는데, 여러명이 동시접근해서 검색조건 다르게하면 먼저접속한사람 검색조건이 다음사람에게 적용될 가능성이 높음
메서드 변수 vo로
egov perspective에서 data source
- 커넥션 연결할 수있음
- 드라이브 연결
- 3.8에서는 잘됨 , 3.9는 잘안됨, 3.7은 ibatis만 됨
- DB info에서 커넥션 추가한것 선택한후 query test 할 수 있음
- vo도 만들수있음
리팩토링
- 중복되는 코드 드래그하여 우클릭 refactor 후 extract method 하면 밑에 부분에 생김
발표시
- 어떤 기능(security, mybatis)를 썼다기 보다는 사용자를 고려했다는 것을 말하는게 중요
- 엑셀 다운로드 됩니다 (x)
- 엑셀 다운로드시 템플릿을 적용하여 사용자가 쉽게.. 어쩌구 (O)
- 등록 됩니다!! (X)
- 단건등록은 이렇게 화면에서 입력 하면 되고, 다량의 데이터등록시 엑셀 업로드를 활용하여~ 어쩌구 (O)
우리조
개인정보 마스킹
- 제이쿼리 마스킹 플러그인
- 수정화면에서 대시보이도록
테이블
- 왼쪽정렬 (회사명 길이다다름)
- 금액 (컴마)
- 들쭉날쭉은 왼쪽정렬
- 돈은 오른쪽정렬
우편번호찾기
엑셀
인덱스
- 관리사무소 직원이 대쉬보드에서 뭘 보고싶을까?
- 계약만료가 가까운게 있다던지
- 신규 등록된 입주자에 대한 정보
- 관리자가 확인해야할 사항 위주로 포지션을 잡고 아무생각없이 넣으면안된다
- 그래프가 좋을것같아! -> 이런생각만가지고 넣으면안됨
- 고지서 기한 이라던지 업무관련 내용으로 인덱스
사이트관리 -공지사항
- 등록에 목록버튼이없다
- 공지사항에 필독으로 고정하는게 필요, 고정풀면 다시 원래 글번호 위치로
- 공지사항 넘버링 역순으로 되어야함 (최신순)
fn
- 기존에 ho 짯던 코드에 startsWith 보다는 length 3-4자리로 비교
<select class="custom-select col-md-4 searchSelect" name="hoStart">
<option value="0000">전체</option>
<c:forEach items="${hoList}" var="item">
<c:set var="ho" value="${item.ho}"/>
<c:if test="${fn:startsWith(ho,'0')}">
<option value="${ho }">${fn:substring(ho,1,4)}</option>
</c:if>
<c:if test="${not fn:startsWith(ho,'0')}">
<option value="${ho }">${ho }</option>
</c:if>
</c:forEach>
</select>