Spring/03 MyBatis로 게시판 만들기

08 게시판 검색 기능 추가하기(2)

라타노 2023. 7. 23. 14:00
반응형

게시판 검색 기능 추가하기(2)

1) 실습

- 게시판 검색 기능 추가하기(1) 2-1) 실습에서 이어진다

 

 

BoardServiceImpljava

 

BoardService.java

 

 

- Board 컨트롤러로 가기 전에 pagepageSizeSearchCondition.java에 만들어 주었다

(+option ,keyword) 따라서 PageHandler.java를 수정하여 Board 컨틀로러의 List를 변경한다

 

 

PageHandler.java(수정)

>> SearchCondition.javapagepageSize을 가지고 있고

     추가로 option, keyword의 값을 가지고 있다\

>> 생성자에 doPaging( )호출하게 하였다

 

>> 이전에 page값을 sc.getPage( )sc.getPageSize( )로 가져울 수 있도록 변경하였다

>> 나머지 pagepageSize getter and setter 삭제

     SerachCondition scgetter and setter를 추가

     sc가 포함된 toString으로 변경(기존 toString삭제)

 

 

BoardController.java(변경)

>> BoradController.java에 모든 메서드에

      pagepageSize를 받는 매개변수를 지우고 SerchCondition sc로 변경

 

 

BoardController.java(변경 이전)

- SerchCondition sc로 변경되기전 코드 참고용으로 가져왔다

 

 

결과 확인

>> boardList.jspquerString에서 에러가 발생

 

 

SearchCondition.java

>> 검색 결과를 받고 목록으로 돌아 올때

     값들을 유지하기 위해 getQueryString( )을 만들었다

>> UriCompoentsBuilderUriCompoents를 만들어 준다

>> boardMapper.xmloffset값을 전달

 

 

결과 확인

 

 

 

 

2) MyBatis의 동적 쿼리 실습

boardMapper.xml(동적 쿼리 수정)

>> test= 이후에는 (“ ”)(‘ ’) 둘 다 사용가능

<when>에서 문자열을 사용해야되므로 1차로(‘ ’)으로 묶고 2차로 문자열을 (“ ”)로 묶는다

 

 

 

BoardDaoImplTest.java

>> boardMapper.xml에 동적 쿼리 테스트 진행 결과는 통과하였다

 

 

 

결과 확인

>> 동적 쿼리 변경 결과는 이상없이 잘 출력되었다

 

 

 

 

3) 문제점

>> 입력란에 <scrpot>alert을 입력하게되면 태그를 인식하여 출력된다

 

 

 

해결 방안

board.jsp

- title 입력란

- content 입력란

 

 

boardList.jsp

- title 출력란

>>  <c:out value=“ ”/>의 안에 태그</> 명령어는 모두 텍스트로 변환한다

 

 

결과 확인

>> 텍스트로 변경되었다 해커나 다른 외부침입을 막을 수 있다

 

 

 

추가로 jsp 버전으로 오류가 발생하는 경우

_rt 로 해결 할 수 있다

 

board.jsp

 

boardList.jsp

>> 가끔 버전 불일치로 문제가 발생하면 _rt를 붙이면 해결 된다

 

 

 

반응형