본문 바로가기
IT/Java

spring 예제 part.8

by 성준하이 2021. 12. 22.
반응형

저번 시간에 이어서 이번엔 책 입력을 하고 난 다음의 페이지를 만들어볼것이다.

 

데이터는 데이터베이스로 입력은 되나 다음 페이지를 만들어두질 않아서 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  (0) 2021.12.21
spring 예제 part.6  (0) 2021.12.20
spring 예제 part.5  (0) 2021.12.19

댓글