게시판 목록을 화면에 띄워보자.

  • src/main/webapp/web-INF/views에 폴더를 새로 만들자.
  • 그 후 jsp 파일을 만든다.

home.jsp 코드를 바꿔주자.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
	<title>Home</title>
</head>
<body>
<h1>
	메인페이지
</h1>
<P>  The time on the server is ${serverTime}. </P>
<a href='<c:url value='/board/list'/>' role="button" class="btn btn-outline-info">들어가기</a>
</body>
</html>


list.jsp에서 코드를 바꿔주자.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<meta charset="UTF-8">
<title>list</title>
</head>
<body>
<form name="userForm">
<h1>List page</h1>
<table>
 <thead>
  <tr>
  <th scope="col">번호</th>
  <th scope="col">ID</th>
  <th scope="col">성함</th>
  <th scope="col">목표</th>
  <th scope="col">작성일</th>
  <th scope="col">작성시간</th>
  </tr>
 </thead>
 
 <tbody>
	 <c:forEach items="${list}" var="list">
	 <tr>
            <td class="text_ct">${list.no}&nbsp;</td>
            <td class="text_ct">${list.id}&nbsp;</td>
            <td class="text_ct">${list.name}&nbsp;</td>
            <td class="text_ct">${list.goal}&nbsp;</td>
            <td class="text_ct"><fmt:formatDate value="${list.date}" pattern="yyyy/MM/dd" /></td>
            <td class="text_ct"><fmt:formatDate value="${list.time}" pattern="HH:mm:ss" /></td>
	 </tr>
	</c:forEach>
 </tbody> 
</table>
</form>
</body>
</html>


board 폴더에 list.jsp를 만들었으니 이 board페이지로 이동시켜줄 controller를 만든것이다.

package com.myproject.myapp;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.board.domain.BoardVO;
@Controller
@RequestMapping("/board/*")
public class BoardController {

    @RequestMapping(value="/list", method=RequestMethod.GET) //url mapping
    public void getList() throws Exception{

    }
}



boardMapper.xml

  • 이제 DB안에 있는 내용을 불러오자.
  • 다시 한번 말하지만 여기는 쿼리문을 작성하는 곳이다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.board.mappers.board">
	<!-- 게시물 목록 -->
	<select id="list" resultType="com.board.domain.BoardVO">
		select
	 		no, id, name, goal, date, time
	 	from i_can_do_it
	</select>
</mapper>


DAO 생성

  • HTTP Request를 Web Application이 받게 되면 Thread를 생성하게 되는데 비즈니스 로직이 DB로부터 데이터를 얻어오기 위해 매번 Driver를 로드하고 Connection 객체를 생성하게 되면 엄청 많은 커넥션이 일어난다.
  • 그래서 DAO를 하나 만들어 DB 전용 객체로만 쓰기 위해 dao package 를 만들어준다.
  • src/main/java 하위에 만들어준다.

package com.board.dao;
import java.util.List;
import com.board.domain.BoardVO;
public interface boardDAO {
	public List<BoardVO> list();//조회
}

클래스 추가


package com.board.dao;
import java.util.List;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import com.board.domain.BoardVO;
@Repository
public class boardDAOImpl implements boardDAO {
	 @Inject
	 private SqlSession sql;
	 
	 private static String namespace = "com.board.mappers.board";
	// 게시물 목록
	// @Override
	 public List<BoardVO> list() {
	     return sql.selectList(namespace + ".list");
	 }
}


Service 생성

  • Service는 비지니스 로직이 들어가는 부분이다. Controller가 Request를 받으면 적절한 Service에 전달하고, 전달 받은 Service는 비즈니스 로직을 처리한다. DAO로 데이터베이스를 접근하고, DTO로 데이터를 전달받은 다음, 적절한 처리를 해 반환한다.


package com.board.service;
import java.util.List;
import com.board.domain.BoardVO;
public interface boardService {
	public List<BoardVO> list();
}



package com.board.service;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import com.board.dao.boardDAO;
import com.board.domain.BoardVO;
@Service
public class boardServiceImpl implements boardService {
	 @Inject
	 private boardDAO dao;
	 
	 // 회원 목록
	 @Override
	 public List<BoardVO> list() {
	     return dao.list();
	 }
}


BoardController.java

  • VO를 list로 받아와서 service를 연결시켜주는 코드를 추가해준다.

package com.myproject.myapp;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.board.domain.BoardVO;
import com.board.service.boardService;
@Controller
@RequestMapping("/board/*")
public class BoardController {
	@Inject
	private boardService service;
    @RequestMapping(value="/list", method=RequestMethod.GET) //url mapping
    public String getList(Model model) throws Exception{
        List<BoardVO> list = service.list();
        model.addAttribute("list", list);
        //board/list.jsp로 포워딩
        return "board/list";
    }
}


root-context.xml

  • domain, dao, service를 사용하겠다고 선언한다.

<context:component-scan base-package="com.board.domain" />

		<context:component-scan base-package="com.board.dao" />

		<context:component-scan base-package="com.board.service" />


Tags:

Categories:

Updated:

Leave a comment