컨트롤러
//게시판 글 목록 보기
@GetMapping("/viewDBoardList/{orderBy}")
public ModelAndView viewDBoardList(@PathVariable("orderBy") String orderBy, HttpServletRequest request) {
//게시판으로 바로 들어왔을 경우, 사용자 식별을 위한 값 저장
ServletContext application = request.getServletContext();
String key = (String) application.getAttribute("save");
if(key == null) {
key = getNum();
application.setAttribute("save", key);
}
List<DebugBoardDTO> list = serv.viewDBoardList(orderBy);
ModelAndView mav = new ModelAndView();
mav.addObject("list", list);
mav.setViewName("member/Test/viewDBoardList");
return mav;
}
사용자가 게시판에 접속할 경우, 랜덤으로 생성된 16자리 숫자를 application에 저장
이를 통해 무한 조회수 늘리기, 무한 추천을 막을 예정이다.
원래는 IP를 암호화해서 사용하려고 했었다.
//게시판 사용자 어플리케이션용 암호화 IP 가져오기
public static String getIp(){
String result = null;
try {
result = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
result = "";
}
result = SecurityController.encrypt(result);
return result;
}
하지만 보안 문제도 있고 하니, 랜덤 숫자로 선회했다.
//게시판 사용자 어플리케이션용 무작위 16자리 숫자 가져오기
public String getNum() {
Random r = new Random();
StringBuilder randomNumber = new StringBuilder();
for (int i = 0; i < 16; i++) {
randomNumber.append(r.nextInt(10));
}
System.out.println(randomNumber.toString());
return randomNumber.toString();
}
그런데 이 코드를 사방팔방에 붙여놓을 수도 없는 노릇이기 때문에 게시판 글 리스트와 게시판 글 외에는 POST로 처리함으로서 url로 들어가지 못하게 막았다
기존의 jsp에 사용했던 window.location.href도 전부 post로 수정했다.
그런데 post는 form이랑 ajax 밖에 없다고 하니 form으로 처리했다.
<!-- post로 글 수정 / 삭제 / 목록 -->
<div>
<form action="<c:url value='/checkUpdatePost'/>/${dto.boardNum}" method="post" style="display: inline-block;">
<input type="submit" id="update" value="글 수정">
</form>
<form action="<c:url value='/checkDeletePost'/>/${dto.boardNum}" method="post" style="display: inline-block;">
<input type="submit" id="delete" value="글 삭제">
</form>
<form action="<c:url value='/viewDBoardList/boardNum'/>" method="get" style="display: inline-block;">
<input type="submit" id="list" value="글 목록">
</form>
</div>
style="display: inline-block;"가 없으면 세로로 기차놀이를 하기 때문에 넣어주어야 한다.
추가 개선 사항
- 같은 닉네임으로 검색 기능(확인창 출력)
- 당일 날짜는 시분 || 그 외 날짜는 연월일
- 페이지네이션
- 게시판 / 글 꾸미기...
'팀프로젝트 > SpringBoot' 카테고리의 다른 글
스프링부트 팀플) 20240321_익명 게시판의 익명 유저가 추천/비추천했는지를 저장하고 출력 (0) | 2024.03.21 |
---|---|
스프링부트 팀플) 20240320_날짜 형식 변경 (0) | 2024.03.20 |
스프링부트 팀플) 20240319 카테고리 검색 / 검색창 (0) | 2024.03.19 |
스프링부트 팀플) 20240319_이전글/다음글 (0) | 2024.03.19 |
스프링부트 팀플) 20240318_수정/삭제 비밀번호 확인 + 삭제 경고창 + 정렬 (0) | 2024.03.18 |