일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- pyqt
- jsp
- 생활코딩
- html
- 이클립스
- 배열
- 자바문제
- servlet
- python
- spring
- nodejs
- Android
- 단축키
- 맥
- 반복문
- Java
- 컬렉션프레임워크
- 객체지향
- ibatis
- Mac
- ddit
- JDBC
- 대덕인재개발원
- FastAPI
- Homebrew
- Oracle
- Error
- crud
- API
- 자바
Archives
- Today
- Total
romworld
Spring 07 - 도서 CRUD(6) - 검색 기능 본문
<list.jsp> 추가
body 태그 바로 첫줄에 검색 기능을 만들어보자.
<!-- 검색 시작 -->
<p>
<!--
action 속성 및 그 값이 생략 시 , 현재 URI(/list)를 재요청.
method는 GET(form 태그의 기본 HTTP 메소드는 GET임)
-->
<!-- <form action="/list" method="get"> -->
<form>
<input type="text" name="keyword" value="${param.keyword}"
placeholder="검색어를 입력해주세요." />
<!-- /list?keyword=새롬이 -->
<input type="submit" value="검색" />
</form>
</p>
<!-- 검색 끝 -->
<BookController.java>
list메서드를 고쳐준다.
// 1)요청URI : /list
// 요청파라미터 : {}
// 2)요청URI : /list?keyword=새롬이
// 요청파라미터 : {"keyword" :"새롬이"
// 요청 파라미터 : {}
// 방식 : get
// 스프링에서 요청파라미터를 매개변수로 받을 수 있음
//required=false 파라미터가 넘어오는 게 없을 수도 있다.
@RequestMapping(value="/list",method=RequestMethod.GET)
public ModelAndView list(ModelAndView mav,
@RequestParam(value="keyword", required=false) String keyword) {
List<BookVO> bookVOList = this.bookService.list(keyword);
log.info("bookVOList : " + bookVOList);
// 데이터
mav.addObject("data", bookVOList);
// jsp(뷰) : book폴더에 있는 list.jsp를 forwarding(jsp를 해석, 컴파일하여 html로 리턴)
mav.setViewName("book/list");
return mav;
}
파라미터에 keyword라는 매개변수를 추가했으므로 dao, service에 있는 list 메소드에 파라미터를 똑같이 추가해준다.
또한 mapper도 고쳐준다
<book_SQL.xml>
<!--
책 목록
parameterType : String keyword
WHERE 1 = 1은 늘 참(true)임
조건이 2개 이상일 때 where + and
조건이 1개일 때 생략 + where이어야 함
=> WHERE 1 = 1로 개선
조건이 2개 이상일 때 and + and
조건이 1개일 때 생략 + and이어야함
-->
<select id="list" parameterType="String" resultType="bookVO">
WITH T AS(
SELECT ROW_NUMBER() OVER(ORDER BY BOOK_ID DESC) RNUM
, BOOK_ID, TITLE, CATEGORY, PRICE, INSERT_DATE, CONTENT
FROM BOOK
WHERE 1 = 1
<if test="keyword!=null and keyword!=''">
AND(
TITLE LIKE '%' || #{keyword} || '%'
OR CATEGORY LIKE '%' || #{keyword} || '%'
OR CONTENT LIKE '%' || #{keyword} || '%'
)
</if>
)
SELECT T.RNUM, T.BOOK_ID, T.TITLE, T.CATEGORY, T.PRICE
, T.INSERT_DATE, T.CONTENT
FROM T
</select>
검색을 해보면 (26을 입력했을 때)
해당 항목만 검색되는 걸 볼 수 있다.
list.jsp에서 input value="${param.keyword}"를 해줌으로써 검색 기록이 지워지지 않고 고정된다.
도 서 C R U D 끝났으므로 다음 편에선 부트스트랩을 적용해보자!
'Spring' 카테고리의 다른 글
Spring 09 - LPROD 테이블을 이용한 CRUD (0) | 2023.01.25 |
---|---|
Spring 08 - 도서 CRUD(7) - 부트스트랩 적용하기, 타일즈(Tiles) (1) | 2023.01.25 |
Spring 06 - 도서 CRUD(5) - delete,select(책목록) PL/SQL문 (0) | 2023.01.25 |
Spring 05 - 도서CRUD(4) - update, JSTL (fmt) (0) | 2023.01.20 |
Spring 04 - 도서CRUD(3) - select문 , detail 페이지 (0) | 2023.01.20 |
Comments