최프 - 210130토 수업

갓김치·2021년 1월 30일
0

최종프로젝트

목록 보기
8/19

오전수업

  • 서비스 인터페이스 안만들어도 transactional 쓸수있다
  • 인터페이스에 I 붙이지 않는다 (Java 7 doc기준)
  • 쿼리 일렬로, 쉼표 통일할것
  • 엑셀 관련한 라이브러리는 jxml로 써라
  • 스프링최초역사로 거슬러올라가서 얘기하자면..
    • 옛날에는 interface를 만들었다.. 외국인은 규칙을 좋아한다?
    • mysql, oracle, 에서 자유롭게하려고 인터페이스
    • 하지만 우리 시스템은 굳이 interface필요없다고 생각하면 cglibnodab? 을 넣어서 개발한 사람들도있었음
    • 스프링 3.0대로 넘어오면서 인터페이스 없이 작동하도록 기본적으로 변경됨 혹은 옵션만 넣어주면 되도록
      • <aop:config proxy-target-class="true"/> 버전에 따라 이걸로 충분히 인터페이스 없이 개발가능
    • 우린 인터페이스가 필요 없는 사람들이라는 부장님의 의견,,

  • redirect 대신 forward 해라...
    • 리다이렉트하면 중구문화동 검색해, 2페이지 들어가서 뭐 고치고 저장눌렀더니 처음으로 돌아가게됨
    • 인서트,업데이트 치고 리다이렉트하면안된다...
    • 리다이렉트대신 포워드해라
    • 근데 이때 문제점은 f5 눌렀을 때 중복등록방지가 안된다
      - 저장용토큰(유일한아이디)을 만들어서 브라우저로 보내주고 세션에 하나 올려놔 그리고 저장을 하면 히든값으로 saveToken이 날아올거고, 그 세션에있는 token과 같다면 저장을해주고 세션에 있는걸 날려버려, 그리고 다시 f5누르면 세션에 값이 없으니 비교할 수 가 없음, 그럼 다시 조회화면이나 목록으로 건너가도록.
      이렇게 게시판하나를 잘 만들면 그 다음 기능도 비슷한 로직으로 구현할 수 있음

  • getmapping ,postmapping 하지말고 requestmapping 주소를 따로써라
    • form 화면으로 보낼땐 boardInsertView.do
    • 등록할땐 boardInsert.do 이런식으로

crud 컨트롤러 분리하지말고 한컨트롤러내에서 메서드 분리


비밀번호 암호화, 파일 apache commons 사용해라

  • io, compress(압축관련), codec(sha-256)
  • 예전엔 poi로 만들었는데, 그렇게 되면 구리게나옴
  • jxls.sourceforge.net/getting_started.html 이거써라



오후수업

  • 컨트롤러 굳이 행위별로 나누지않아도된다
    • 컨트롤러 클래스 파일이 너무 많아지기때문에..
    • 소규모프로젝트인 경우는 나눠서 쓰기도하지만 거의 그렇게 하지 않음
  • 보드지울때
    • 있으면 바로 지우는게아니라, 서비스단에서 글 userid와 session id와 같을때만 지울수있도록, jsp단에서만 막는게아닌 자바단에서도 막아줘야한다

form:select

<select name="boardFormVO.searchBoardVO.searchCondition">
	<c:forEach items="${codeList}" var="item">
	    <option value="${item.code}">${item.codeNm}</option>
    </c:forEach>
</select>

// 위 코드를 이렇게 쓸 수 있음
<form:select path="searchBoardVO.searchCondition" cssClass="use">
	<form:options items="${codeList}" itemValue="code" itemLable="code"/>
</form:select>
  • selected가 적용됨
  • form:select를 안쓰면 if문 넣어서 eq로 비교하여 selected를 적용시켜줘야함
@ModelAttribute("board")
public BoardVO board() {
	return new BoardVO();
}

예외처리

  • ServiceResult를 switch-case로 분기해서 처리하기보다는 exception을 던져서 try-catch로 해주는게 낫다
  • model.addAttribute("message", NotyVO(오류입니다)) 같은 중복코드는 BaseController 에 함수로 빼놓고 상속받아라..

게시글 단건 상세조회

  • board, attachList, replyList 따로 조회해서 받아서 model에 넣으려면 컨트롤러에서 처리
profile
갈 길이 멀다

0개의 댓글