DELETE
servlet
// 해당 번호를 삭제하기 위해 id 생성
int id = Integer.parseInt(request.getParameter("id"));
// 해당 번호 지우기
SecSql sql = SecSql.from("DELETE");
sql.append("FROM article");
sql.append("WHERE id = ?;", id);
// 가져온 걸 제거
DBUtil.delete(conn, sql);
// 제거가 성공했다면, 알림창 활성화
response.getWriter()
.append(String.format("<script>alert('%d번 글이 삭제됨'); location.replace('list');</script>", id));
JSP
<td>
<a onclick="if ( confirm('정말 삭제하시겠습니까?') == false ) { return false; }"
href="doDelete?id=<%=articleRow.get("id")%>">del</a>
</td>
페이지 네이션
servlet
// page 초기값 1로 설정
int page = 1;
if (request.getParameter("page") != null && request.getParameter("page").length() != 0) {
page = Integer.parseInt(request.getParameter("page"));
}
// 한 페이지당 10개의 항목만 보여지게 설정
int itemsInAPage = 10;
int limitFrom = (page - 1) * itemsInAPage;
// article 테이블에 있는 모든 행의 총 갯수
SecSql sql = SecSql.from("SELECT COUNT(*)");
sql.append("FROM article;");
int totalCnt = DBUtil.selectRowIntValue(conn, sql);
int totalPage = (int) Math.ceil(totalCnt / (double) itemsInAPage);
// article 테이블에 자료들을 불러오는데 위에 정한 limitFrom부터 itemsInAPage까지만 불러오기
sql = SecSql.from("SELECT *");
sql.append("FROM article");
sql.append("ORDER BY id DESC");
sql.append("LIMIT ?, ?;", limitFrom, itemsInAPage);
List<Map<String, Object>> articleRows = DBUtil.selectRows(conn, sql);
request.setAttribute("page", page);
request.setAttribute("articleRows", articleRows);
request.setAttribute("totalCnt", totalCnt);
request.setAttribute("totalPage", totalPage);
request.getRequestDispatcher("/jsp/article/list.jsp").forward(request, response);
JSP
list.jsp에 추가
/* 페이지네이션을 하기 위해 필요한 정보들 */
int cPage = (int) request.getAttribute("page");
int totalCnt = (int) request.getAttribute("totalCnt");
int totalPage = (int) request.getAttribute("totalPage");
<style type="text/css">
.page {
font-size: 1.4rem;
}
.page>a {
color: black;
text-decoration: none;
}
.page>a.cPage {
color: red;
text-decoration: underline;
}
</style>
<div class="page">
<%
for (int i = 1; i <= totalPage; i++) {
%>
<a class="<%=cPage == i ? "cPage" : ""%>" href="list?page=<%=i%>"><%=i%></a>
<%
}
%>
</div>
INSERT(WRITE)
DoWriteServlet
// 제목과 내용을 입력한 것을 가져오기
String title = request.getParameter("title");
String body = request.getParameter("body");
// 가져온 제목과 내용을 DB에 저장
SecSql sql = SecSql.from("INSERT INTO article");
sql.append("SET regDate = NOW(),");
sql.append("updateDate = NOW(),");
sql.append("title = ?,", title);
sql.append("`body` = ?;", body);
int id = DBUtil.insert(conn, sql);
response.getWriter()
.append(String.format("<script>alert('%d번 글이 작성됨'); location.replace('list');</script>", id));
writerServlet
@WebServlet("/article/write")
public class ArticleWriteServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/jsp/article/write.jsp").forward(request, response);
}
}
JSP
<title>글쓰기</title>
</head>
<body>
<h2>글쓰기</h2>
<a href="../home/main">메인으로 이동</a>
<form action="doWrite" method="post">
<div>
제목 : <input type="text" placeholder="제목 입력" name = "title"/>
</div>
<div>
내용 :
<textarea type="text" placeholder="내용 입력" name = "body"></textarea>
</div>
<button type="submit">작성</button>
</form>
</body>