어제 아이디, 닉네임, 이메일 체크했던 것 중복 확인해보기
$.ajax({
url : './valueCheck',
method : 'post',
data : { 'mid' : mid.value, 'memail' : memail.value, 'mname' : mname.value},
dataType : 'json'
데이터타입을 json 으로 변환하기
기존에 int 형으로 반환했던 값을 Map 으로 바꿔보기
@ResponseBody
@PostMapping("/valueCheck")
public int valueCheck(MemberDTO dto) {
return loginService.valueCheck(dto);
}
Map 으로 바꿔보기
@ResponseBody
@PostMapping("/valueCheck")
public Map<String, Object> valueCheck(MemberDTO dto) {
int result = loginService.valueCheck(dto);
Map<String, Object> map = new HashMap<>();
map.put("count", result);
return map;
}
Json 객체로 만들어보기
@ResponseBody
@PostMapping("/valueCheck")
public String valueCheck(MemberDTO dto) {
int result = loginService.valueCheck(dto);
JSONObject json = new JSONObject();
json.put("count", result);
return json.toString();
}
json 에서 왜 toString() 으로 보내야 할까
기존 Board List 도 json 으로 받아보기
//json 으로 board 받아보기
@GetMapping("/jsonBoard")
@ResponseBody
public String jsonBoardList(@RequestParam(value = "page", required = false) String no, Model model) {
int currentPageNo = 1;
if (util.str2Int(no) > 0) { // 여기 수정 필요
currentPageNo = Integer.valueOf(no);
}
int totalRecordCount = boardService.totalRecordCount();
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(currentPageNo); // 현재 페이지 번호
paginationInfo.setRecordCountPerPage(15); // 한 페이지에 게시되는 게시글 건수
paginationInfo.setPageSize(10); // 페이지 리스트 사이즈
paginationInfo.setTotalRecordCount(totalRecordCount); // 총 페이지 수
// model.addAttribute("list", boardService.boardList(paginationInfo.getFirstRecordIndex()));
// model.addAttribute("paginationInfo", paginationInfo);
JSONObject json = new JSONObject();
json.put("list", boardService.boardList(paginationInfo.getFirstRecordIndex()));
json.put("page", currentPageNo);
json.put("paginationInfo", paginationInfo);
return json.toString();
}
결과 값
검색 기능 추가해보기
검색 창 추가, 페이지는 필요 없긴 한데,, 일단 선생님꺼 따라가기
<div>
<div class="my-2">
<form action="./board">
<input type="text" name="search"/>
<input type="hidden" name="page" value="${param.page }"/>
<button type="submit" class="btn btn-dark">검색</button>
</form>
</div>
</div>
검색이 들어가면 search 와 page 받기
// 페이징 추가하기
@GetMapping("/board")
public String boardList(
@RequestParam(value = "page", required = false, defaultValue = "1") String no,
@RequestParam(value = "search", required = false) String search,
Model model) {
// page 가 안오면
int currentPageNo = 1;
if (util.str2Int(no) > 0) { // 여기 수정 필요
currentPageNo = Integer.valueOf(no);
}
int totalRecordCount = boardService.totalRecordCount(search);
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(currentPageNo); // 현재 페이지 번호
paginationInfo.setRecordCountPerPage(15); // 한 페이지에 게시되는 게시글 건수
paginationInfo.setPageSize(10); // 페이지 리스트 사이즈
paginationInfo.setTotalRecordCount(totalRecordCount); // 총 페이지 수
SearchDTO searchDTO = new SearchDTO();
searchDTO.setPage(paginationInfo.getFirstRecordIndex());
searchDTO.setSearch(search);
model.addAttribute("list", boardService.boardList(searchDTO));
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("page", currentPageNo);
model.addAttribute("search", search);
return "board";
}
검색어를 활용하여 총 게시글 수도 체크하고, 검색 시 제목, 내용, 작성자 모두 파악할 수 있도록 함
<select id="totalRecordCount" resultType="Integer" parameterType="String">
select count(*) from board b join member m
on b.mno = m.mno where board_del='1'
<if test="search != null">
and (board_title like concat('%',#{search},'%')
or board_content like concat('%',#{search},'%')
or m.mname like concat('%', #{search}, '%'))
</if>
</select>
<select id="boardList" parameterType="searchDTO" resultType="boardDTO">
select b.board_no AS board_no, b.board_title AS board_title, m.mname AS mname,
if(date_format(current_timestamp(),'%Y-%m-%d') = date_format(b.board_date,'%Y-%m-%d'),
date_format(b.board_date,'%h:%i'), date_format(b.board_date,'%m-%d')) AS board_date,
(select count(0) from visitcount where visitcount.board_no = b.board_no) AS board_count,
(select count(0) from comment where comment.board_no = b.board_no and comment.cdel = '1') AS comment
from (board b join member m on(b.mno = m.mno))
where b.board_del = '1'
<if test="search != null">
and (b.board_title like concat('%', #{search}, '%')
or b.board_content like concat('%', #{search}, '%')
or m.mname like concat('%', #{search}, '%'))
</if>
order by b.board_no desc
limit #{page}, 15
</select>
if 안의 조건들은 괄호로 감싸야만 한꺼번에 처리 후 계산이 됨
괄호 안넣으면 오류는 안나지만 결과에 잘못된 내용이 들어감
'Spring' 카테고리의 다른 글
240305 스프링 프로젝트 (4) | 2024.03.05 |
---|---|
240304 스프링 프로젝트 (3) | 2024.03.04 |
240228 스프링 프로젝트 (2) | 2024.02.28 |
240227 스프링 프로젝트 (1) | 2024.02.27 |
240226 스프링 프로젝트 (2) | 2024.02.26 |