[기초 API 구현] - 디테일 버튼 구현(1) 비밀번호 확인

박성규·2022년 5월 24일
0

[스프링 부트]

목록 보기
13/38
post-thumbnail
  1. js, html
function passwordcheck() {
            let password = $("#password").val()

            let id = $("#id").text()
            let jsonData = { // Body에 첨부할 json 데이터
                "id":id,
                "password":password,
                "result":1
            };
            $.ajax({
                type: "POST",
                url: '/post/detail/password',
                contentType: "application/json",
                data: JSON.stringify(jsonData),
                success: function (response) {
                    if(response["result"] == 1){
                        $("#changediv").show();
                    }else{
                        alert("비밀번호가 틀립니다.")
                    }
                }
            })
        }
<button type="button" onclick="passwordcheck()" class="rcbtn">수정</button>

2.PasswordCheckDto

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
public class PasswordCheckDto {
    private Long id;
    private String password;
    private int result;


}

3.Controller

@PostMapping("/post/detail/password")
    @ResponseBody
    public PasswordCheckDto passwordcheck(@RequestBody PasswordCheckDto passwordCheckDto){

        passwordCheckDto.setResult(postingService.passwordcheck(passwordCheckDto.getId(),passwordCheckDto.getPassword()));
        return passwordCheckDto;
    }

4.Service

public int passwordcheck(Long id, String password) {
        Optional<Posting>optional = postRepository.findById(id);
        Posting posting = optional.get();
        String realpassword = posting.getPassword();
        if(realpassword.equals(password)){
            return 1;
        }else {
            return 0;
        }
    }

수정버튼을 누르면 입력된 비밀번호와 확인해서 db에 저장된 비밀번호와 같은지 확인했다.

그러기 위해서 p태그 안에 id를 저장하도록 html을 수정했고

<p id="id" style="display: none;" th:text="${lists.id}"></p>

게시글마다 id값이 부여되었으니 id값, password, result가 담긴 json으로 ajax 콜을 했다.

서비스에서는 입력받은 id값에 매칭되는 password를 찾고 입력받은 password와 같다면 1을 리턴했다.

리턴받은 1은 Dto에 저장후 돌려줬다.

트러블슈팅
아무리해도 값이 ajax에서 안넘어 오길래 고생이란 고생을 다하다가
@RequestBody 부분을 객체로 받으니 되었다.

앞으로는 무적권 객체 만들어서 해야겠다.

0개의 댓글

관련 채용 정보