Spring Project 8.
93067 ワード
📌 プロジェクト第8話
今回の目標は
1.文章リストを表示する(完了11.7)
2.文章リストページング(11.8完了)
3.文章を詳しく読む(11.8完成)
4.文章削除⭕(11.8完了)
5.文章の修正(11.8完成)
1.記事リストを表示
1)索引ページの変更<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="layout/header.jsp" %>
<div class="container">
<c:forEach var="board" items="${boards}">
<div class="card m-2">
<div class="card-body">
<h4 class="card-title">${board.title}</h4>
<a href="#" class="btn btn-primary">상세보기</a>
</div>
</div>
</c:forEach>
</div>
<%@include file="layout/footer.jsp" %>
2) BoardService
3) BoardController
2.ページング記事リスト
1)索引ページの変更<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="layout/header.jsp" %>
<div class="container">
<c:forEach var="board" items="${boards.content}">
<div class="card m-2">
<div class="card-body">
<h4 class="card-title">${board.title}</h4>
<a href="#" class="btn btn-primary">상세보기</a>
</div>
</div>
</c:forEach>
<ul class="pagination justify-content-center">
<c:choose>
<c:when test="${boards.first}">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number-1}">Previous</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number-1}">Previous</a></li>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${boards.last}">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number+1}">Next</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number+1}">Next</a></li>
</c:otherwise>
</c:choose>
</ul>
</div>
<%@include file="layout/footer.jsp" %>
2)BoardServices修正
3.文章を詳しく読む
1)索引ページの変更<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="layout/header.jsp" %>
<div class="container">
<c:forEach var="board" items="${boards.content}">
<div class="card m-2">
<div class="card-body">
<h4 class="card-title">${board.title}</h4>
<a href="/board/${board.id}" class="btn btn-primary">상세보기</a>
</div>
</div>
</c:forEach>
<ul class="pagination justify-content-center">
<c:choose>
<c:when test="${boards.first}">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number-1}">Previous</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number-1}">Previous</a></li>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${boards.last}">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number+1}">Next</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number+1}">Next</a></li>
</c:otherwise>
</c:choose>
</ul>
</div>
<%@include file="layout/footer.jsp" %>
2) detail.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="../layout/header.jsp" %>
<div class="container">
<button class="btn btn-secondary" onclick="history.back()">돌아가기</button>
<button id="btn-update" class="btn btn-warning">수정</button>
<button id="btn-delete" class="btn btn-danger">삭제</button>
<br/><br/>
<div>
<h3>${board.title}</h3>
</div>
<hr />
<div>
<div>${board.content}</div>
</div>
<hr />
</div>
<script src="/js/board.js"></script>
<%@include file="../layout/footer.jsp" %>
3)Board Controllerの修正
4)BoardServiceの修正
4.記事の削除
1) detail.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="../layout/header.jsp" %>
<div class="container">
<button class="btn btn-secondary" onclick="history.back()">돌아가기</button>
<button id="btn-update" class="btn btn-warning">수정</button>
<c:if test="${board.user.id == principal.user.id}">
<button id="btn-delete" class="btn btn-danger">삭제</button>
</c:if>
<br/><br/>
<div>
글 번호: <span id="id"><i>${board.id} </i></span>
작성자: <span><i>${board.user.username} </i></span>
</div>
<br/>
<div>
<h3>${board.title}</h3>
</div>
<hr />
<div>
<div>${board.content}</div>
</div>
<hr />
</div>
<script src="/js/board.js"></script>
<%@include file="../layout/footer.jsp" %>
2) board.変更let index = {
init: function () {
$("#btn-save").on("click", ()=>{
this.save();
});
$("#btn-delete").on("click", ()=>{
this.deleteById();
});
},
save:function () {
let data = {
title: $("#title").val(),
content: $("#content").val()
};
$.ajax({
type: "POST",
url: "/api/board",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (resp){
alert("글씨기가 완료되었습니다.");
location.href = "/";
}).fail(function (error){
alert(JSON.stringify(error));
});
},
deleteById:function () {
var id = $("#id").text();
$.ajax({
type: "DELETE",
url: "/api/board/"+id,
dataType: "json"
}).done(function (resp){
alert("삭제가 완료되었습니다.");
location.href = "/";
}).fail(function (error){
alert(JSON.stringify(error));
});
},
}
index.init();
3)BoardAPIコントローラの修正
4)BoardServiceの修正
5.文章の修正
1) detail.jspの変更<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="../layout/header.jsp" %>
<div class="container">
<button class="btn btn-secondary" onclick="history.back()">돌아가기</button>
<c:if test="${board.user.id == principal.user.id}">
<a href="/board/${board.id}/updateForm" class="btn btn-warning">수정</a>
<button id="btn-delete" class="btn btn-danger">삭제</button>
</c:if>
<br/><br/>
<div>
글 번호: <span id="id"><i>${board.id} </i></span>
작성자: <span><i>${board.user.username} </i></span>
</div>
<br/>
<div>
<h3>${board.title}</h3>
</div>
<hr />
<div>
<div>${board.content}</div>
</div>
<hr />
</div>
<script src="/js/board.js"></script>
<%@include file="../layout/footer.jsp" %>
2) saveForm.jspの変更<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="../layout/header.jsp" %>
<div class="container">
<form>
<div class="form-group">
<input type="text" class="form-control" placeholder="Enter title" id="title">
</div>
<div class="form-group">
<textarea class="form-control summernote" rows="5" id="content"></textarea>
</div>
</form>
<button id="btn-save" class="btn btn-primary">글쓰기완료</button>
</div>
<script>
$('.summernote').summernote({
tabsize: 2,
height: 300
});
</script>
<script src="/js/board.js"></script>
<%@include file="../layout/footer.jsp" %>
3) updateForm.jsp<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="../layout/header.jsp" %>
<div class="container">
<form>
<input type="hidden"id="id"value="${board.id}"/>
<div class="form-group">
<input value="${board.title}" type="text" class="form-control" placeholder="Enter title" id="title">
</div>
<div class="form-group">
<textarea class="form-control summernote" rows="5" id="content">${board.content}</textarea>
</div>
</form>
<button id="btn-update" class="btn btn-primary">글수정완료</button>
</div>
<script>
$('.summernote').summernote({
tabsize: 2,
height: 300
});
</script>
<script src="/js/board.js"></script>
<%@include file="../layout/footer.jsp" %>
4) board.変更let index = {
init: function () {
$("#btn-save").on("click", ()=>{
this.save();
});
$("#btn-delete").on("click", ()=>{
this.deleteById();
});
$("#btn-update").on("click", ()=>{
this.update();
});
},
save:function () {
let data = {
title: $("#title").val(),
content: $("#content").val()
};
$.ajax({
type: "POST",
url: "/api/board",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (resp){
alert("글씨기가 완료되었습니다.");
location.href = "/";
}).fail(function (error){
alert(JSON.stringify(error));
});
},
deleteById:function () {
let id = $("#id").text();
$.ajax({
type: "DELETE",
url: "/api/board/"+id,
dataType: "json"
}).done(function (resp){
alert("삭제가 완료되었습니다.");
location.href = "/";
}).fail(function (error){
alert(JSON.stringify(error));
});
},
update:function () {
let id = $("#id").val();
let data = {
title: $("#title").val(),
content: $("#content").val()
};
$.ajax({
type: "PUT",
url: "/api/board/"+id,
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (resp){
alert("글수정이 완료되었습니다.");
location.href = "/";
}).fail(function (error){
alert(JSON.stringify(error));
});
},
}
index.init();
5)Board Controllerの修正
6)BoardAPIコントローラの修正
7)BoardServiceの修正
基本的なCRUDはもう終わりました.
Elasticsearchを適用するのが目標なので、最善を尽くして行います.
11月の1ヶ月間、オープンを試写する予定なので、コードはあまり気にならないかもしれません.
でも真ん中はまじめにやらなきゃ...
Reference
この問題について(Spring Project 8.), 我々は、より多くの情報をここで見つけました
https://velog.io/@davidkim97/Spring-Project-8
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="layout/header.jsp" %>
<div class="container">
<c:forEach var="board" items="${boards}">
<div class="card m-2">
<div class="card-body">
<h4 class="card-title">${board.title}</h4>
<a href="#" class="btn btn-primary">상세보기</a>
</div>
</div>
</c:forEach>
</div>
<%@include file="layout/footer.jsp" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="layout/header.jsp" %>
<div class="container">
<c:forEach var="board" items="${boards.content}">
<div class="card m-2">
<div class="card-body">
<h4 class="card-title">${board.title}</h4>
<a href="#" class="btn btn-primary">상세보기</a>
</div>
</div>
</c:forEach>
<ul class="pagination justify-content-center">
<c:choose>
<c:when test="${boards.first}">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number-1}">Previous</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number-1}">Previous</a></li>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${boards.last}">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number+1}">Next</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number+1}">Next</a></li>
</c:otherwise>
</c:choose>
</ul>
</div>
<%@include file="layout/footer.jsp" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="layout/header.jsp" %>
<div class="container">
<c:forEach var="board" items="${boards.content}">
<div class="card m-2">
<div class="card-body">
<h4 class="card-title">${board.title}</h4>
<a href="/board/${board.id}" class="btn btn-primary">상세보기</a>
</div>
</div>
</c:forEach>
<ul class="pagination justify-content-center">
<c:choose>
<c:when test="${boards.first}">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number-1}">Previous</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number-1}">Previous</a></li>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${boards.last}">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number+1}">Next</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number+1}">Next</a></li>
</c:otherwise>
</c:choose>
</ul>
</div>
<%@include file="layout/footer.jsp" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="../layout/header.jsp" %>
<div class="container">
<button class="btn btn-secondary" onclick="history.back()">돌아가기</button>
<button id="btn-update" class="btn btn-warning">수정</button>
<button id="btn-delete" class="btn btn-danger">삭제</button>
<br/><br/>
<div>
<h3>${board.title}</h3>
</div>
<hr />
<div>
<div>${board.content}</div>
</div>
<hr />
</div>
<script src="/js/board.js"></script>
<%@include file="../layout/footer.jsp" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="../layout/header.jsp" %>
<div class="container">
<button class="btn btn-secondary" onclick="history.back()">돌아가기</button>
<button id="btn-update" class="btn btn-warning">수정</button>
<c:if test="${board.user.id == principal.user.id}">
<button id="btn-delete" class="btn btn-danger">삭제</button>
</c:if>
<br/><br/>
<div>
글 번호: <span id="id"><i>${board.id} </i></span>
작성자: <span><i>${board.user.username} </i></span>
</div>
<br/>
<div>
<h3>${board.title}</h3>
</div>
<hr />
<div>
<div>${board.content}</div>
</div>
<hr />
</div>
<script src="/js/board.js"></script>
<%@include file="../layout/footer.jsp" %>
let index = {
init: function () {
$("#btn-save").on("click", ()=>{
this.save();
});
$("#btn-delete").on("click", ()=>{
this.deleteById();
});
},
save:function () {
let data = {
title: $("#title").val(),
content: $("#content").val()
};
$.ajax({
type: "POST",
url: "/api/board",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (resp){
alert("글씨기가 완료되었습니다.");
location.href = "/";
}).fail(function (error){
alert(JSON.stringify(error));
});
},
deleteById:function () {
var id = $("#id").text();
$.ajax({
type: "DELETE",
url: "/api/board/"+id,
dataType: "json"
}).done(function (resp){
alert("삭제가 완료되었습니다.");
location.href = "/";
}).fail(function (error){
alert(JSON.stringify(error));
});
},
}
index.init();
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="../layout/header.jsp" %>
<div class="container">
<button class="btn btn-secondary" onclick="history.back()">돌아가기</button>
<c:if test="${board.user.id == principal.user.id}">
<a href="/board/${board.id}/updateForm" class="btn btn-warning">수정</a>
<button id="btn-delete" class="btn btn-danger">삭제</button>
</c:if>
<br/><br/>
<div>
글 번호: <span id="id"><i>${board.id} </i></span>
작성자: <span><i>${board.user.username} </i></span>
</div>
<br/>
<div>
<h3>${board.title}</h3>
</div>
<hr />
<div>
<div>${board.content}</div>
</div>
<hr />
</div>
<script src="/js/board.js"></script>
<%@include file="../layout/footer.jsp" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="../layout/header.jsp" %>
<div class="container">
<form>
<div class="form-group">
<input type="text" class="form-control" placeholder="Enter title" id="title">
</div>
<div class="form-group">
<textarea class="form-control summernote" rows="5" id="content"></textarea>
</div>
</form>
<button id="btn-save" class="btn btn-primary">글쓰기완료</button>
</div>
<script>
$('.summernote').summernote({
tabsize: 2,
height: 300
});
</script>
<script src="/js/board.js"></script>
<%@include file="../layout/footer.jsp" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="../layout/header.jsp" %>
<div class="container">
<form>
<input type="hidden"id="id"value="${board.id}"/>
<div class="form-group">
<input value="${board.title}" type="text" class="form-control" placeholder="Enter title" id="title">
</div>
<div class="form-group">
<textarea class="form-control summernote" rows="5" id="content">${board.content}</textarea>
</div>
</form>
<button id="btn-update" class="btn btn-primary">글수정완료</button>
</div>
<script>
$('.summernote').summernote({
tabsize: 2,
height: 300
});
</script>
<script src="/js/board.js"></script>
<%@include file="../layout/footer.jsp" %>
let index = {
init: function () {
$("#btn-save").on("click", ()=>{
this.save();
});
$("#btn-delete").on("click", ()=>{
this.deleteById();
});
$("#btn-update").on("click", ()=>{
this.update();
});
},
save:function () {
let data = {
title: $("#title").val(),
content: $("#content").val()
};
$.ajax({
type: "POST",
url: "/api/board",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (resp){
alert("글씨기가 완료되었습니다.");
location.href = "/";
}).fail(function (error){
alert(JSON.stringify(error));
});
},
deleteById:function () {
let id = $("#id").text();
$.ajax({
type: "DELETE",
url: "/api/board/"+id,
dataType: "json"
}).done(function (resp){
alert("삭제가 완료되었습니다.");
location.href = "/";
}).fail(function (error){
alert(JSON.stringify(error));
});
},
update:function () {
let id = $("#id").val();
let data = {
title: $("#title").val(),
content: $("#content").val()
};
$.ajax({
type: "PUT",
url: "/api/board/"+id,
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (resp){
alert("글수정이 완료되었습니다.");
location.href = "/";
}).fail(function (error){
alert(JSON.stringify(error));
});
},
}
index.init();
Reference
この問題について(Spring Project 8.), 我々は、より多くの情報をここで見つけました https://velog.io/@davidkim97/Spring-Project-8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol