목차
1. 검색 기능 게시판
2. Spring Ajax 댓글 기능 게시판
1. 검색 기능 게시판
1) 글 작성
- 원문을 작성하는 파일과 댓글을 작성하는 파일이 같으면 시퀀스로 번호 값을 매길 수 없다. 따라서 글 번호의 최대값을 구하고 + 1을 하는 방식으로 번호 값을 구해야 한다.
2) 글 목록
- 키워드로 검색한 글의 목록을 가져올 때 동적 SQL문을 사용한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<select id="list" parameterType="board" resultMap="boardResult">
select * from (select a.*,rowNum rn from (
select * from board
<where>
<if test="keyword != null and search!='subcon'">
${search} like '%'||#{keyword}||'%'
</if>
<if test="keyword != null and search=='subcon'">
subject like '%'||#{keyword}||'%' or
content like '%'||#{keyword}||'%'
</if>
</where>
order by ref desc,re_step) a )
where rn between #{startRow} and #{endRow}
</select>
|
cs |
2. Spring Ajax 댓글 기능 게시판
- 게시글의 상세페이지 내에서 댓글 기능을 구현할 수 있는데, 비동기 방식인 Ajax로 처리해야 한다.
1) 테이블 설정
- 댓글 테이블에는 부모글의 번호 값이 참조키(foreign key)로 들어간다.
• 예시
1
2
3
4
5
6
7
8
9
|
drop table replyBoard;
create table replyBoard (
rno number primary key,
bno number not null references board(num),
replytext varchar2(500) not null,
replyer varchar2(50) not null,
regdate date not null,
updatedate date not null
);
|
cs |
3) 파라미터 전달 방법
- 스프링에서 파라미터를 전달하는 방법은 여러가지가 있다. 물음표(?)를 이용해서 get 방식으로 값을 전달할 수도 있고(ex. list.do?pageNum=1), 슬래쉬(/)를 이용해서 값을 전달할 수도 있다(ex. num/${board.num}/pageNum/${pp.currentPage} ).
- 슬래쉬로 값을 전달하면 컨트롤러에서는 @pathVariable 어노테이션을 이용해서 값을 받는다.
• 예시
1
2
3
4
5
6
7
8
9
|
// 댓글 목록 구하기
@RequestMapping("/slist/num/{num}")
public String slist(@PathVariable int num, Model model) {
Board board = bs.select(num);
List<ReplyBoard> slist = rbs.list(num);
model.addAttribute("slist", slist);
model.addAttribute("board", board);
return "slist";
}
|
cs |
3) Ajax serialize() 함수
- Ajax에서는 form 요소를 전달받을 때 값을 일일이 받지 않고 serialize() 함수를 이용해서 직렬화를 통해 한꺼번에 받을 수 있다.
• 예시
1
2
3
4
5
6
7
8
9
|
var frmData = $('form').serialize();
// var frmData = 'replyer='+frm.replyer.value+'&bno='+
// frm.bno.value+'&replytext='+frm.replytext.value;
// $.post(); -> post 방식으로 전송
// $post('요청 이름', '전달될 값', '콜백 함수')
$.post('${path}/sInsert', frmData, function(data) {
$('#slist').html(data);
frm.replytext.value = '';
});
|
cs |
'Spring' 카테고리의 다른 글
100일차: Spring Boot 기초_2021.11.09 (0) | 2021.11.10 |
---|---|
99일차: Spring Ajax 댓글 게시판(2)_2021.11.08 (0) | 2021.11.08 |
97일차: Spring 회원관리(로그인,비밀번호 찾기,수정,삭제) / 검색 기능 게시판_2021.11.04 (0) | 2021.11.04 |
96일차: Spring 댓글 게시판(수정, 삭제) / 이메일 인증 / 회원 관리_2021.11.03 (0) | 2021.11.03 |
95일차: Spring 게시판 글 수정, 글 삭제 / 댓글 게시판_2021.11.02 (0) | 2021.11.02 |