반응형
저번 시간에 이어서 이번엔 책 입력을 하고 난 다음의 페이지를 만들어볼것이다.
데이터는 데이터베이스로 입력은 되나 다음 페이지를 만들어두질 않아서 404 에러가 떴을것이다.
상세화면 주소를 보여주기 위해서는 /detail?bookId=1 주소로 매핑을 할것이다.
책 상세보기 쿼리는
select title,category, price, insert_date from book where book_id=1
이런 식으로 쿼리가 짜지므로 저번에 만든 book_SQL.xml파일에 추가한다!
- bookSQL.xml 파일에 select 쿼리 추가
<select id="select_detail" parameterType="hashMap"
resultType="hashMap">
<![CDATA[
select
title,
category,
price,
insert_date
from
book
where
book_id = #{bookId}
]]>
</select>
- bookDao.java 에 메서드 추가
public Map<String, Object> selectDetail(Map<String, Object> map) { return this.sqlSessionTemplate.selectOne("book.select_detail", map);
}
- bookServiceImpl.java 에 서비스 클래스 메서드 작성
@Overridepublic Map<String, Object> detail(Map<String, Object> map){ return this.bookDao.selectDetail(map);
}
- bookService.java 에 슈퍼타입 지정
Map<String, Object> detail(Map<String, Object> map);
- url에 /detail?bookId=1 에 매칭이 되는 쿼리 스트링을 컨트롤러 메서드에 추가
@RequestMapping(value = "/detail", method = RequestMethod.GET)
public ModelAndView detail(@RequestParam Map<String, Object> map) {
Map<String, Object> detailMap = this.bookService.detail(map);
ModelAndView mav = new ModelAndView();
mav.addObject("data", detailMap);
String bookId = map.get("bookId").toString();
mav.addObject("bookId", bookId);
mav.setViewName("/book/detail");
return mav;
}
get 방식으로 받고 주소의 시작을 detail로 할 예정이라 이렇게 지정하였다.
- 보일 페이지인 detail.jsp 파일 추가
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=utf-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<title>책 상세</title>
</head>
<body>
<h1>책 상세</h1>
<p>제목 : ${ data.title } </p>
<p>카테고리 : ${ data.category }</p>
<p>가격 : <fmt:formatNumber type="number" maxFractionDigits="3" value="${data.price}" /></p>
<p>입력일 : <fmt:formatDate value="${data.insert_date}" pattern="yyyy.MM.dd HH:mm:ss" /></p>
<p>
<a href="/update?bookId=${bookId}">수정</a>
</p>
<form method="POST" action="/delete">
<input type="hidden" name="bookId" value="${bookId}" />
<input type="submit" value="삭제" />
</form>
<p>
<a href="/list">목록으로</a>
</p>
</body>
</html>
그리고 나서 서버를 재실행 후에 localhost:8080/detail?bookId=1 이라고 주소창에 써본다면 상세 페이지가 보인다.
그럼 처음에 등록한 bookId 가 1인 레코드의 정보가 보일것이다.
반응형
'IT > Java' 카테고리의 다른 글
spring 예제 part.10 (0) | 2021.12.24 |
---|---|
spring 예제 part.9 (0) | 2021.12.23 |
spring 예제 part.7 (1) | 2021.12.21 |
spring 예제 part.6 (1) | 2021.12.20 |
spring 예제 part.5 (1) | 2021.12.19 |
댓글