package com.config;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MySqlSessionFactory {
static SqlSessionFactory sqlSessionFactory = null;
static {
String resource = "com/config/Configuration.xml";
InputStream inputStream=null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
}//end static 블럭
// ServiceImpl에서 필요한 SqlSession 리턴하는 메서드
// new 없이 사용하기 위해서 static 지정한다.
public static SqlSession getSession() {
SqlSession session =
sqlSessionFactory.openSession();
return session;
}
}
BoardDAO.java
package com.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.dto.BoardDTO;
public class BoardDAO {
// 전체 목록
public List<BoardDTO> list(SqlSession session){
List<BoardDTO> list = session.selectList("BoardMapper.list");
return list;
}
}
BoardService.java
package com.service;
import java.util.List;
import com.dto.BoardDTO;
public interface BoardService {
public List<BoardDTO> list();
}
BoardServiceImpl.java
package com.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.config.MySqlSessionFactory;
import com.dao.BoardDAO;
import com.dto.BoardDTO;
public class BoardServiceImpl implements BoardService {
@Override
public List<BoardDTO> list() {
List<BoardDTO> list = null; //return 하기 위해 밖에서 선언
SqlSession session = MySqlSessionFactory.getSession();
try {
// DAO 연동코드
BoardDAO dao = new BoardDAO(); //객체생성
list = dao.list(session);
}finally {
session.close();
}
return list;
}
}
BoardListServlet.java
package com.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dto.BoardDTO;
import com.service.BoardService;
import com.service.BoardServiceImpl;
/**
* Servlet implementation class BoardListServlet
*/
@WebServlet("/list")
public class BoardListServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//BoardService 연동
BoardService service = new BoardServiceImpl();
List<BoardDTO> list = service.list(); //다형성
// 이전에는 서블릿에서 응답처리를 했음. => list.jsp한테 위임
// list.jsp 에서 List<BoardDTO>를 보여주기 위해서는
// List<BoardDTO>를 scope에 저장해야 된다. 목록보기는 request scope가 가장 최적임.
/*
* request scope ( <=여기에 저장 )
* session scope
* application scope
*/
request.setAttribute("boardList", list);
// 요청위임. 목록보기는 request scope에 저장했기 때문에 포워드로 사용.
/*
* 포워드(forward) <= 사용
* 리다이렉트(redirect)
*/
request.getRequestDispatcher("list.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}