soozya
[FRONT, BACK] 글 목록보기 (Spring MyBatis) 본문
[👩🏻💻소스코드]
[FRONT]
(Community.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ page import="java.util.Date, Board.*"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>::함께 여행::</title>
<link href="css/other.css" rel="stylesheet">
<link href="css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
<div class="left_title"><a href="main.jsp">함께 여행</a></div>
<h2 class="com1 text-center"><a href="list.do"><b>커뮤니티</b></a></h2>
<p> <hr>
<div class="list">
<div>
<button class="btn btn-primary wr_bt" onclick="location.href='writeform.do'">글쓰기</button>
</div>
<p> <p>
<table class="table table-hover com_tb">
<thead>
<tr>
<th class="text-center" width="15%">글 번호</th>
<th class="text-center" width="40%">글 제목</th>
<th class="text-center" width="15%">작성자</th>
<th class="text-center" width="20%">작성일</th>
<th class="text-center" width="10%">조회수</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}">
<tr>
<td class="text-center"> ${list.num}</td>
<td class="text-left"><a href="view.do?num=${list.num}">${list.title}</a></td>
<td class="text-center">닉네임</td>
<td class="text-center">
<fmt:formatDate value="${list.cdate}" timeStyle="medium" pattern="yyyy-MM-dd" />
</td>
<td class="text-center"> ${list.readc}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div> <!-- class="main" -->
<jsp:include page="footer.jsp" />
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
[BACK]
(tripboard.xml)
<!-- 1.글목록보기 -->
<select id="list" resultType="board">
select * from tripboard order by num desc
</select>
(SqlMapBoardDAO.java)
public class SqlMapBoardDAO extends SqlSessionDaoSupport implements BoardDAO {
@Override
public List list() throws DataAccessException{
//selectList : 한개 이상을 호출하라 때
return getSqlSession().selectList("list");
}
(BoardDAO.java)
public interface BoardDAO {
//1.글 목록보기
public List list() throws DataAccessException;
(ListAction.java)
package Board;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
//Controller인터페이스 : Request 처리+처리결과를 ModelAndView를 이용하여 view에 반환
public class ListAction implements Controller {
BoardDAO dao;
public void setDao(BoardDAO dao) { //setter메서드
this.dao = dao;
System.out.println("List의 setDao()호출: "+dao);
}
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
System.out.println("ListAction의 handleRequest() 호출됨!");
List list=dao.list();
//화면에 출력할 list.jsp에 전달할 페이지와 전달할 값 설정
ModelAndView mav=new ModelAndView(); //이동할 페이지(공유)와 보내줄 데이터 담기
mav.setViewName("community"); //이동할 페이지명
mav.addObject("list",list); //키명, 저장값
return mav; // =community.jsp
}
}
[💬설명]
1️⃣ tripboard.xml : sql 구문에서 조회를 위한 select~로 시작하는 경우 태그 역시 select를 사용
- resultType : sql구문에서 반환값이 있는 경우에 사용되며, 대부분 select 구문에서 쓰임
- 여기에서 쓰이는 board는 SqlMapConfig.xml에서 설정했던 BoardCommand에 해당함
2️⃣ SqlMapBoardDAO.java
- 인터페이스(BoardDAO) 구현을 위해 implements 사용함
- getSqlSession()을 이용하여 SqlSession 객체를 편히 얻어오기 위해 SqlSessionDaoSupport을 상속받음
➡ getSqlSession() = tripboard.xml의 sql 구문을 호출하는 것
- selectOne : 레코드 한 개만 가져올 때
selectList : 레코드를 한 개 이상 가져올 때
3️⃣ BoardDAO.java
- DataAccessException : spring전용 예외처리 클래스로, try ~ catch 생략 가능함
4️⃣ ListAction.java
# 14~19) BoardDAO를 호출해서 받아옴
# 29) 이동할 페이지, 화면 출력을 위한 객체(mav) 생성
30) setViewName() : 이동할 페이지명
31) addObject : 값 받아오기(키명, 저장값)
[❌ 발생한 에러]
- 에러 메시지
Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for list
# MyBatis나 다른 SQL 매핑 프레임워크를 사용할 때 발생하는 일반적인 오류로, SQL 문장에 대한 매핑이나 설정이
올바르게 이루어지지 않았을 때 발생한다고 함..!
# 저기보면 SqlMapBoardDAO.java:15라인에 문제가 있다고 뜨길래 가서 찾아보니 tripboard.xml의 id에 list가 아닌
community라고 파일 이름을 써서 list로 고치고 다시 시도해서 해결함!
[💻결과]
'👩🏻💻프로젝트 > 👩🏻개인프로젝트' 카테고리의 다른 글
[React] Git과 연결하기 (0) | 2023.11.07 |
---|---|
[BACK] 글 삭제하기 (Spring MyBatis) (0) | 2023.09.20 |
[FRONT, BACK] 글 상세보기 (Spring MyBatis) (0) | 2023.09.20 |
[FRONT, BACK] 글 쓰기 (Spring MyBatis) (0) | 2023.09.19 |
[SPRING MyBatis] 게시판 만들기 기본 설정 (0) | 2023.09.15 |