Hello

55. 글쓰기 완료

by 볼빵빵오춘기

BoardController

// User 권한이 필요
@GetMapping("/board/saveForm")
public String saveForm(){
    return "board/saveForm";
}

 

saveForm.jsp

더보기

https://summernote.org/getting-started/#for-bootstrap-4 썸머노트 참고해서 사용하여 만들었다.

(썸머노트 홈 > get started > For bootstrap4)

 

※ 썸머노트 사용 시  주의 사항

  • summernote textarea는 id를 들고 있어야한다.
  • 연결 script 확인한다.
<%@ page language="java" contentType="text/html;charset=UTF-8 " pageEncoding="UTF-8"%>

<%@ include file="../layout/header.jsp"%>

<div class="container">
  <h2>Stacked form</h2>
  <form>

    <div class="form-group">
      <label for="title">Title:</label>
      <input type="text" class="form-control" id="title" placeholder="Enter title" name="title">
    </div>

    <div class="form-group">
      <label for="content">Content:</label><br>
      <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({
    placeholder: 'Write Content',
    tabsize: 2,
    height: 300
});
</script>
<script src="/js/board.js"></script>
<%@ include file="../layout/footer.jsp"%>

 

board.js

let index = {
    init:function(){
        $("#btn-save").on("click",()=>{ // function(){} 대신 ()=> 사용한 이유는 this를 바인딩하기 위해서
            this.save();
        });

    },

    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(resp);
            alert("글쓰기가 완료 되었습니다.")
            location.href="/";
        }).fail(function(error){
            alert("js 글쓰기완료 호출"+JSON.stringify(error));
        });
    },// save end

}// index end
index.init();

 

BoardApiController

@PostMapping("/api/board")
public ReplySaveRequestDto.ResponseDto<Integer> save(@RequestBody Board board, @AuthenticationPrincipal PrincipalDetail principal){
    boardService.글쓰기(board,principal.getUser());
    return new ReplySaveRequestDto.ResponseDto<Integer>(HttpStatus.OK.value(),1);
}

 

BoardRepository

public interface BoardRepository extends JpaRepository<Board, Integer> {
}

 

BoardService

public class BoardService {
    @Autowired
    private BoardRepository boardRepository;

    @Transactional
    public void 글쓰기(Board board,User user){
        board.setCount(0);
        board.setUser(user);
        System.out.println("BoardService 글쓰기 호출");
        boardRepository.save(board);
    }

}

'강의 따라하기 > blog' 카테고리의 다른 글

58. 글 상세보기  (1) 2024.01.04
56. 글목록 보기  (0) 2024.01.04
54. 스프링 시큐리티 로그인  (1) 2024.01.04
53. XSS와 CSRF  (1) 2024.01.04
52. 비밀번호 해쉬 후 회원가입하기  (0) 2024.01.03

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기