오늘은 검색 기능을 추가했다!
그런데
전에 했던 방식을 보여드리니
요즘은 패키지를 나누어서
VO, DAO, SERVICE, CONTROLLER로 사용해서
나누는 게 좋다는 소리를 들어...
설 기간 동안 전에 만든걸 다 분리를 했다.
그리고 하면서 여러 사람들의 코드를 보면서
공부도 하고...ㅎ...
어찌 되었든 먼저
검색을 위한 SearchCriteria이다.
검색은 범위 (searchtype), 검색어 keyword이다.
criteria를 상속받으므로 Criteria를 전부 SearchCriteria로 바꾸면 된다.
pagemaker 수정
pagemaker에 makeSearch를 넣어준다.
이거는 설날 기간 동안 혼자 공부하면서 몇 분은 사용하고 사용 안 하는 분도 계시던데
uricomponents는 url을 자바에서 작성을 하는 것이다.
먼저 newInstance로 생성 후
queryparam은
list? name=safd와 같이
필드 값과 변숫값을 정해주는 것이라고 보면 된다.
저렇게 지정해주면 앞으로 따로 선언을 하지 않아도 된다.
또한 가끔 url을 틀리게 입력하는 경우가 있어 아주 좋은 기능이다.
mapper
저번의 mapper에서 조금씩 바꾼 것인데
차이점은 include라는 것과 sql이 생겨난 것이다.
include는 말 그대로 포함이고
refid로 id를 찾은 후,
sql안의 조건 문제 만족할 경우 해당하는 sql문을 삽입한다.
아닐 경우(맨 처음 list를 클릭했을 시)에는 아무것도 삽입을 안 한다.
boarddao
boardvo를 만들어서
위와 같이 선언한다.
막상 분리하면서 느낀 거지만
기본적으로 interface로 선언 후
그것을 implements로 상속하여 재정의 하면 끝.
의외로 간단하고 전 보다 알기 쉽다? 라느느낌을 받았다.
boardDaoImpl
boarddao를 상속받은 클래스이다.
여기서 재정의를 해주면 되는데 dao의 경우 기본적으로
mapper에서 선언한 sql문들을 읽고 실행하는 느낌.
그다음은 boardservice이다.
dao에서 적은 것은 같다.
boardserviceimple
service 어노테이션의 경우 찾아보았는데
스프링으로 해당하는 클래스는 service이다!라고 알려주는 어노테이션이다.
그 후 아래에서는
autowired로 객체화한 후,
위의 2가지 선언을 오버라이드 해준다.
여기서는 boarddao를 객체화하는 것.
controller
여기서는 먼저 위의 service를 객체화한 후,
그것을 controller에서 사용하는 건데
막상 이렇게 하니
코드가 너무 깔끔해져서
앞으로는 이렇게 해야지... 다짐했다.
위의 코드들은 저번 코드에서 위치들만 바뀌었을 뿐
가지고 있는 내용은 동일하다.
마지막 list 본문
먼저 각 option에 값을 선언하는데
코어 라이브러리의 경우에는 ==를 eq라고 선언한다.
만약 값들이 일치하면 selected 아니면 ''
그리고 검색 버튼을 눌렀을 경우에는 j쿼리를 이용하여
현재 url에서
searchtype와 keyword의 값을 읽어온다.
저렇게 해둔 이유는
만약 후에 수정을 해야 할 경우 대비해서이다.
이렇게 해서 실행하면
위 와 같이 화면이 나오게 된다
검색 기능이... 생각하는 것 이상으로
신경 써야 할 부분이 많은 것 같다
또한 dao,service 이렇게 나누는 것이
기능이 실행되지 않을 때 조금 더 찾기 수월한 것 같다.
'spring > 게시판' 카테고리의 다른 글
게시판 만들기(댓글 목록)(9) (0) | 2021.02.17 |
---|---|
게시판 만들기(페이지 유지)(8) (0) | 2021.02.16 |
게시판 만들기(페이징)(6) (0) | 2021.02.09 |
게시판 만들기(게시물 삭제)(5) (0) | 2021.02.09 |
게시판 만들기(게시글 수정)(4) (0) | 2021.02.08 |