
컨트롤러에 모델로 보낸 다음에 받아도 되지만
pom.xml안에
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
</dependency>
넣고 header.jsp에
<sec:authorize access="isAuthenticated()">
<sec:authentication property="principal" var="principal"/>
</sec:authorize>
넣으면 어디서든 principal을 이용해 세션 정보를 가져올 수 있다.
${principal.user.username}
이런식으로
업데이트는 자바스크립트 ajax로 만들꺼임
function update(userId) {
let data = $("#profileUpdate").serialize();
console.log(data);
$.ajax({
type:"put",
url:'/api/user/' + userId,
data:data,
contentType:"application/x-www-form-urlencoded;charset=utf-8",
dataType:"json"
}).done(res=>{
console.log("썽공");
}).fail(error=>{
console.log("실패");
});
}
보낸 값을 받을 UserApiController, dto를 만들어 준다.

영속화된 정보를 변경하면 더티체킹 후 DB에 자동 반영됨
BCryptPasswordEncoder : 비밀번호 암호화
PrincipalDetails : 시큐리티 세션에 정보 저장
principalDetails.setUser(userEntity); // 세션 정보 변경
return new CMRespDto<>(1,"회원수정완료",userEntity);
공백이 있을 수 있다는건 불안한 점

<form id="profileUpdate" onsubmit="update(${principal.user.id},event)">
회원정보 변경 화면에서 비밀번호를 넣지않고 넘어갈때 막아주기 위해선
jsp에 onsubmit을 통해 js 함수 실행시켜주고 input태그에 required="required" js에 event.preventDefault(); 로 폼태그 액션 막아주면 완성
@ExceptionHandler(CustomValidationApiException.class)
public ResponseEntity<?> validationApiException(CustomValidationApiException e) { // <?> : 알아서 찾아감
return new ResponseEntity<>( new CMRespDto<>(-1, e.getMessage(), e.getErrorMap()), HttpStatus.BAD_REQUEST);
}
예외처리하는 곳 따로 만들기