08 게시판 검색 기능 추가하기(2)
게시판 검색 기능 추가하기(2)
1) 실습
- 게시판 검색 기능 추가하기(1) 2-1) 실습에서 이어진다
BoardServiceImpljava
BoardService.java
- Board 컨트롤러로 가기 전에 page와 pageSize을 SearchCondition.java에 만들어 주었다
(+option ,keyword) 따라서 PageHandler.java를 수정하여 Board 컨틀로러의 List를 변경한다
PageHandler.java(수정)
>> SearchCondition.java에 page와 pageSize을 가지고 있고
추가로 option, keyword의 값을 가지고 있다\
>> 생성자에 doPaging( )호출하게 하였다
>> 이전에 page값을 sc.getPage( )와 sc.getPageSize( )로 가져울 수 있도록 변경하였다
>> 나머지 page와 pageSize getter and setter 삭제
SerachCondition sc의 getter and setter를 추가
sc가 포함된 toString으로 변경(기존 toString삭제)
BoardController.java(변경)
>> BoradController.java에 모든 메서드에
page와 pageSize를 받는 매개변수를 지우고 SerchCondition sc로 변경
BoardController.java(변경 이전)
- SerchCondition sc로 변경되기전 코드 참고용으로 가져왔다
결과 확인
>> boardList.jsp의 querString에서 에러가 발생
SearchCondition.java
>> 검색 결과를 받고 목록으로 돌아 올때
값들을 유지하기 위해 getQueryString( )을 만들었다
>> UriCompoentsBuilder가 UriCompoents를 만들어 준다
>> boardMapper.xml에 offset값을 전달
결과 확인
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를 붙이면 해결 된다