Spring 실습(2)
게시글 내부 메뉴 구현
글 삭제
Model
// boardMapper.xml
<delete id="remove">
DELETE FROM INTERN_BOARD_TBL WHERE SEQ = #{seq}
</delete>
// BoardDao.java
public int removeRow(int seq);
// BoardDaoImpl.java
@Override
public int removeRow(int seq) {
System.out.println("board dao removeRow");
int result = session.delete(BOARD_PREFIX + ".remove", seq);
System.out.println("dao readRow result: " + result);
return result;
}
// BoardService.java
public int remove(int seq);
// boardServiceImpl.java
@Override
public int remove(int seq) {
System.out.println("board service remove");
return dao.removeRow(seq);
}
View
// readPage.jsp
<script type="text/javascript">
$(function() {
$('#list').click(function() {
location.href = "listPage.do";
});
$('#remove').click(function() {
location.href = "remove.do?seq=" + ${board.seq};
});
});
</script>
Controller
// BoardCtrl.java
@RequestMapping(value = "/remove.do", method = RequestMethod.GET)
public String remove(@RequestParam("seq") int seq, Model model) {
System.out.println("board ctrl remove");
return "redirect:/listPage.do";
}
글 수정
Model
// boardMapper.xml
<update id="modify" parameterType="board">
UPDATE INTERN_BOARD_TBL
SET TITLE = #{title}, CONTENT = #{content}
WHERE SEQ = #{seq}
</update>
// BoardDao.java
public int modifyRow(Object obj);
// BoardDaoImpl.java
@Override
public int modifyRow(Object obj) {
System.out.println("board dao modifyRow");
int result = session.update(BOARD_PREFIX + ".modify", obj);
System.out.println("dao modifyRow result: " + result);
return result;
}
// BoardService.java
public int modfiy(Object obj);
// BoardServiceImpl.java
@Override
public int modfiy(Object obj) {
System.out.println("board service modify");
return dao.modifyRow(obj);
}
View
title과 content의 readonly속성 제거
// readPage.jsp
<input type="hidden" id="seq" value="${board.seq}" />
<div class="box-body">
<div class="form-group">
<label for="exampleInputEmail1">Title</label>
<input
type="text"
name="title"
class="form-control"
value="${board.title}"
id="title"
/>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Content</label>
<textarea class="form-control" name="content" rows="3" id="content">
${board.content}</textarea
>
</div>
<div class="form-group">
<label for="exampleInputEmail1">Writer</label>
<input
type="text"
name="writer"
class="form-control"
value="${board.writer}"
readonly="readonly"
/>
</div>
</div>
// script
<script type="text/javascript">
$(function () {
$("#list").click(function () {
location.href = "listPage.do";
});
$("#remove").click(function () {
location.href = "remove.do?seq=" + $;
{
board.seq;
}
});
$("#modify").click(function () {
location.href =
"modify.do?seq=" +
$("#seq").val() +
"&title=" +
$("#title").val() +
"&content=" +
$("#content").val();
});
});
</script>
Controller
// BoardCtrl.java
@RequestMapping(value = "/modify.do", method = RequestMethod.GET)
public String modify(BoardVO vo) {
System.out.println("board ctrl modify: " + vo);
service.modfiy(vo);
return "redirect:/readPage.do?seq=" + vo.getSeq();
}
리스트로 돌아가기
View
// readPage.jsp
$('#list').click(function() {
location.href = "listPage.do";
});
조회수 올리기
Model
upCnt를 update 하는 sql문 추가
// boardMapper.xml
<update id="upCnt" parameterType="board">
UPDATE INTERN_BOARD_TBL
SET VIEWCNT = VIEWCNT + 1
WHERE SEQ = #{seq}
</update>
UserDaoImpl에서 upCnt() 구현하고 호출
// UserDaoImpl.java
public int upCnt(Object obj) {
System.out.println("board dao upCnt");
return session.update(BOARD_PREFIX + ".upCnt", obj);
}
@Override
public Object readRow(Object obj) {
int upCntResult = upCnt(obj);
System.out.println("dao upCnt result: " + upCntResult);
System.out.println("board dao readRow");
Object result = session.selectOne(BOARD_PREFIX + ".read", obj);
System.out.println("dao readRow result: " + result);
return result;
}
검색하기
ajax 비동기 통신
Model
jstl을 이용한 분기 및 like 패턴검색
// boardMapper.xml
<select id="search" parameterType="map" resultType="board">
SELECT SEQ, TITLE, CONTENT, WRITER, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE,
VIEWCNT FROM INTERN_BOARD_TBL
<where>
<if test="type == 'title'">
TITLE LIKE '%'||#{keyword}||'%'
</if>
<if test="type == 'writer'">
WRITER LIKE '%'||#{keyword}||'%'
</if>
</where>
ORDER BY 1 DESC
</select>
// BoardDao.java
public List<Object> searchRow(Map<String, String> map);
// BoardDaoImpl.java
public List<Object> searchRow(Map<String, String> map) {
System.out.println("board dao search: " + map);
List<Object> result = session.selectList(BOARD_PREFIX + ".search", map);
System.out.println("dao searchRow result: " + result);
return result;
}
// BoardService.java
public List<Object> search(Map<String, String> map);
// BoardServiceImpl.java
@Override
public List<Object> search(Map<String, String> map) {
System.out.println("board service search");
return dao.searchRow(map);
}
View
// listPage.jsp
$("#searchBtn").click(function () {
$.ajax({
url: "search.do",
type: "post",
dataType: "json",
data: {
type: $("#searchType").val(),
keyword: $("#searchKeyword").val(),
},
success: function (data) {
$("#tbody").empty();
var txt = "";
$.each(data, function (idx, obj) {
txt += "<tr><td>" + obj.bno + "</td>";
txt +=
"<td><a href='readPage?seq=" +
obj.seq +
"'>" +
obj.title +
"</a></td>";
txt += "<td>" + obj.writer + "</td>";
txt += "<td>" + obj.regdate + "</td>";
txt +=
"<td><span class='badge bg-red'>" + obj.viewcnt + "</span></td></tr>";
});
$("#tbody").append(txt);
},
});
});
Controller
// BoardCtrl.java
@RequestMapping(value = "/search.do", method = RequestMethod.POST)
@ResponseBody
public List<Object> serach(@RequestParam HashMap<String, String> map) {
System.out.println("board ctrl serch: " + map);
List<Object> list = service.search(map);
return list;
}
출처: SHINSEGAE I&C 인턴십
Author And Source
이 문제에 관하여(Spring 실습(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@vencott/Spring-실습2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)