Homework.
더보기
1) 리스트에서 해당 제목누르면 상세페이지로 넘어가게하기
2) 상세페이지 - 버튼 목록버튼 누르면 리스트 페이지띄우기
단, 메인페이지에서 게시판 버튼을 클릭하면 페이지 넘어가는데,
로그인을해야만 메인페이지랑,게시판 목록,상세페이지를들어갈 수 있다.
작성순서
JSP -> Servlet -> Service -> DAO -> SqlMapConfig.xml -> mapper.xml -> DB
JSP
/board/list.jsp 게시판 목록 페이지
더보기
<%@page import="kr.or.ddit.vo.BoardVO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시판 목록</title>
</head>
<body>
<%
List<BoardVO> boardList = (List<BoardVO>)request.getAttribute("boardList"); //request.getAttribute("boardList") 값은 Object형
%>
<h1>게시판 목록</h1>
<hr/>
<table style="width:100%;" "height:100%;" border="1">
<thead>
<tr style="width:100%;">
<th width="6%">번호</th>
<th width="">제목</th>
<th width="10%">작성자</th>
<th width="14%">작성일</th>
<th width="6%">조회수</th>
</tr>
</thead>
<tbody>
<%
if(boardList == null && boardList.size() == 0){
%>
<tr>
<td colspan="5">조회하신 게시물이 존재하지 않습니다.</td>
</tr>
<%
}else {
for(int i = 0; i < boardList.size(); i++){
BoardVO boardVO = boardList.get(i);
%>
<tr>
<td><%=boardVO.getNo() %></td>
<td><a href="/board/detail.do?no=<%=boardVO.getNo()%>"><%=boardVO.getTitle() %></a></td>
<td><%=boardVO.getWriter() %></td>
<td><%=boardVO.getRegdate() %></td>
<td><%=boardVO.getHit() %></td>
</tr>
<%
}
}
%>
</tbody>
</table>
<hr/>
<p>
<input type="button" value="등록"/>
</p>
</body>
</html>
잠깐! get 방식은 어떻게 사용될까?
- a 태그 사용 시
<a href="board/boardList.do"> - ajax 사용시
type="method" - URL에 파라미터를 포함시켜 요청
URL에 데이터를 포함 - 주로 데이터를 조회할 경우 사용(SELECT)
- Get이라는 영어단어의 뜻인 '가져오다'라는 방식을 따라, 어떠한 정보를 가져와 조회할 때 사용하는 방식
- 캐싱
:한번 접근한 뒤 다음번 요청엔 더 빠르게 접근하기 위해 데이터를 저장해두는데 이를 캐싱이라고 한다.
Get방식은 캐싱이 가능하기때문에,
Post방식보다 속도적인 면에서 빠르다.
Post방식
- form 태그<form action="" method="post 또는 get"></form>
- ajax 사용시
type="post" - URL에 데이터가 노출되지 않음
Get방식과 다르게 URL에 데이터가 노출되지 않는다.
서블릿 페이지
request.setAttribute()를 할 수 있는 이유는 뭘까?
페이지이동방식이 forward방식이라서 request에 담는다,
또한, 내장객체인 request, session, application, pageContext 들은 setAttribute() 가 가능하다.
반면에 페이지 이동방식 redirect는?
session만 담을수있다.
package kr.or.ddit.board.web;
import java.io.IOException;
import java.sql.SQLException;
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 kr.or.ddit.board.service.BoardServiceImpl;
import kr.or.ddit.board.service.IBoardService;
import kr.or.ddit.vo.BoardVO;
@WebServlet("/board/list.do")
public class BoardRetrieveServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private IBoardService boardService = BoardServiceImpl.getInstance();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<BoardVO> boardList = null;
try {
boardList = boardService.selectBoardList();
} catch (SQLException e) {
e.printStackTrace();
}
request.setAttribute("boardList", boardList);
request.getRequestDispatcher("/WEB-INF/views/board/list.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
mapper.xml
where 1=1 은 뭘까?
동적쿼리를 만들기 위한 개발자들의 기본설정
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="board">
<select id="selectBoardList" resultClass="boardVO">
select * from board
where 1=1 <!-- where 1=1 => 동적쿼리를 만들기 위한 설정 -->
order by no desc
</select>
</sqlMap>
IDAO / DAOImpl.java
IService/ServiceImpl.java
두 파일 모두 Exception을 던진다.(throws SQLException)
예외처리는 서블릿페이지에서 서비스를 호출할 때 처리!
public List<BoardVO> selectBoardList() throws SQLException;
public BoardVO selectBoard(int no) throws SQLException;
@Override
public List<BoardVO> selectBoardList() throws SQLException {
//board라는 namespace 안에 selectBoardList라는 아이디를 가진쿼리를수행
return smc.queryForList("Board.selectBoardList");
}
@Override
public BoardVO selectBoard(int no) throws SQLException {
return (BoardVO) smc.queryForObject("board.selectBoard", no);
}
'공부 기록노트 > java' 카테고리의 다른 글
[Java] CRUD - 댓글 등록 연습중. (0) | 2023.01.17 |
---|---|
[Java] Eclipse) iBatis 프레임워크 활용한 Mapper 작성/ JavaResources 셋팅 (0) | 2023.01.08 |
[Java] Homework - DB연동하여 로그인 화면 처리 (0) | 2023.01.08 |
[Java] 이클립스 자동 새로고침 설정 (1) | 2023.01.05 |
[Java] android studio를 이용하여 별찍기 (0) | 2023.01.01 |