modify 부분을 수정할 것이다. form태그로 다 처리하였다. disabled 는 클릭? 수정이 불가능한 상태이다.
현재 로그인 정보를 알기위해 user_idx를 토대로 user_id 와 user_name을 들고온다.
dao
service에서는 userService위에 선언이 되어있는 loginUserBean을 통해 user_idx를 보내서 그 값을 tempModifyUserBean에다가 저장한다. 그리고 주소를 받아온 modifyUserBean 안에 id name idx를 설정해준다.
수정에 실패하면 다음과 같이 뜨는데 이름과 아이디가 사라져 있다.
그 이유는 위의 disabled='true' 인 곳에서는 이 것이 수정불가 뿐만 아니라 modelAttribute 안에도 담기지 않아서 서버에 아무것도 주지않기 때문에 modif를 재호출 했을 시에 저렇게 뜨게 된다.
만약 readonly를 사용하게되면 수정 불가하지만 modifyUserBean에는 담기게 되어서 적절하게 사용할 수 있게 된다.
에러메세지도 처리해주었다.
일치불가는 uservalidator 에서 처리해주기 때문에 if를 2개로 나누어서 modifyUserBean 에서 NotEquals 에러를 처리하게끔 해준다.
실제로 수정하는 작업이다. idx값은 modifyUserBean에 안담기니깐 service부분에서 loginUserBean의 idx값을 이용한다.
나머지는 있으니깐 그대로 modifyUserInfo를 실행해준다.
pro에서 service를 실행해줌
modify_success.jsp 이다.
글을 쓰기위해서 이전에 설정해줬던 ?board_info_idx 를 requestParam으로 가지고와서 main에 쏴준다.
글쓰기 버튼에 board_info_idx 정보를 첨가해준다.
write.jsp 이다. 첨부의 경우 input type='file' 이라는 것이 기존의 input 태그와는 다르게 색다르다.
하지만 이의 경우 서버에 string 값만 들어가기 때문에 파일 데이터도 보내기 위해서는 enctype='multipart/form-data'
를 입력해주어야 한다. 이러면 문자열 데이터와 파일 데이터를 둘 다 서버에 보내게 된다.
contentbean 에는 제목과 내용에 notblank 유효성을 달아준다.
에러메세지도 처리해주었다.
위에서 말했듯이 파일 데이터 또한 서버에 보내기 위해서는 multipart 선언을 해주어야 하는데, 이것을 해주게 되면 서버에 데이터를 보내는 방식이 달라지기 때문에 ContentBean에 걸어놓은 유효성 검사를 통과하지 못하고 무조건 틀리다고 나오게 된다.
이것을 해결해주기 위해 ServletAppContext.java에 다음과 같이 빈을 정의해준다.
그리고 이것은 SpringConfigClass.java 에다가 추가로 정의해준다.
첫 번째 매개변수는 클라이언트가 보낸 파일 데이터를 저장해두는 임시 파일의 경로인데, null로 해두면 아파치가 정한 임시 폴더로 알아서 된다.
두 번째는 업로드 하는 파일의 최대 용량이다.
세 번째는 파일 데이터를 포함한 전체 요청 정보의 최대 용량이다.
네 번째는 파일의 임계값인데 0으로 주면 알아서 데이터를 받아서 저장한다.
write.jsp 수정 이전에는 첨부 이미지 쪽의 path 가 content_file 이었다. 이것은 String 타입이기 때문에 파일명만 저장하게 되므로 파일데이터를 저장하는 MultipartFile 형식으로 upload_file을 선언하고 path값을 변경해 주었다.
이것을 사용하면 어디에서 프로젝트가 돌아가는지 알 수 있다.
properties 해주고
BoardService 에서 path_upload를 받아오고, System.currentTimeMillis 로 시간 받고 _ 쓰고 upload_file의 원본 명을 붙여서 file_name에 저장한다.
그리고 path_upload의 / file_name으로 파일을 저장한다.
밑에서는 파일 크기가 0이상일 때, 즉 파일이 첨부되었으면 print를 하게끔 하였다.
난 path_upload 부분에 업로드가 안된다... 이상하다
write 에서 board_info_idx를 받아서 bean에 넣어주었다.
jsp에서는 hidden 태그로 idx를 가지고있다. _info 빼야됨 오타임
이제 db에 글 등록을 한다. insert문을 이용한다. content_data가 아니라 content_file임
service에서는 loginUserBean을 들고와서 wrieContentBean에 채워지지 않은 idx 값과 file_name을 담은 후에 addContentInfo를 실행한다.
pro에서 서비스 실행
write_success.jsp 작성
이대로 하면 파일을 첨부하지 않으면 오류가 뜨게된다.
테이블에서 content_file에는 null을 허용하지만 mybatis 오류로 null이 허용되는 컬럼에 null 값을 넣으면 오류가 난다.
다음과 같이 명시를 해주면 오류가 해결이 된다.
'공부 기록들' 카테고리의 다른 글
2020.05.27 gsat 오답노트 (0) | 2020.05.27 |
---|---|
2020.05.26 mvc 프로젝트 다시하기(4) (0) | 2020.05.27 |
2020.05.22 mvc 프로젝트 다시하기(2) (0) | 2020.05.23 |
2020.05.19 - mvc프로젝트 다시하기(1) (0) | 2020.05.19 |
2020.05.12 ssafy 자소서를 작성하였다. (0) | 2020.05.12 |