본문 바로가기
spring/게시판

게시판만들기(검색기능)(7)

by coie 2021. 2. 15.

오늘은 검색 기능을 추가했다!

그런데

전에 했던 방식을 보여드리니

요즘은 패키지를 나누어서

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 이렇게 나누는 것이

기능이 실행되지 않을 때 조금 더 찾기 수월한 것 같다.