본문 바로가기

국비과정/Spring

20230720 _[34일차]_01. Spring 게시판 수정기능 + 로그인페이지

어제 게시판 글에 삭제버튼 만들었음

=> 글을 삭제하면 삭제된 번호는 다시 돌아오지 않음! 즉, 새로 글을 쓰면 그 다음 번호부터 저장됨

 

이제 수정하기 버튼도 연결하자

수정하기 버튼을 누르면 일단 이전에 썼던 글의 내용을 가져와야하고, 

수정 후 버튼을 누르면 다시 수정한 내용을 db로 보내서 저장시켜야함.

 

detail.jsp 에서 

update 이미지 태그에 onclick 속성 추가

 

게시판에서 수정하기 버튼 클릭하면 onclick 이 실행이 되어서 edit() 메소드 실행

=> if 조건문으로 confirm 메소드 실행

=> 팝업창으로 '수정하시겠습니까?' 뜸, 확인 누르면

=> 주소창에 bno= (해당글번호) 같이 뜸. 

 

아래 에러 뜸

 

BoardController 

> @GetMapping 선언

( ModelAndView 사용해보자 )

edit() 메소드 실행

=> @RequestParam 를 이용해서 "bno"를 얻어와서 int 타입의 bno에 넣어줌

서비스에게 bno를 보내 detail() 을 실행시키도록함.

detail() 메소드는 있는데 타입이 달라서 밑줄 (이전에는 String으로 처리했는데 여기에서는 int여서)

서비스가 일을 해서 가져온 값을 (dto를) mv에 붙여서 리턴

 

Util 로 가서 bno 타입을 int로 바꿔줄 strToInt () 메소드 생성 

( try/catch 이용 )

for문을 이용해서 스트링을 문자로 쪼갬

if문 & Character.isDigit() 를 이용해서 숫자인지 아닌지 판단

if문이 참이라면(숫자라면) 쪼개진 각각의 char들(숫자들)을 붙여주면 문자열이 됨!!

=> 이 문자열을 변수 re에 넣어줌

=> 문자열 re를 Integer.parseInt(re) 사용해서 숫자로 변경

 

 

( StringBuilder 사용 )

.append()  _ 값을 넣을 때

.toString() _ 스트링으로 값을 뺄 때

( @Autowired 사용해서 util 연결 ) _ 이건 전에 해놨었던듯

 

원래 스트링으로 받아왔던 bno를 int로 바꿔줬으니 컨트롤러에서도 int 로 받아오자

위의 체크부분 밑줄 클릭해서 detail() 메소드에서 받는 bno의 타입들을 int로 변경

Util에서 변경

DAO에서 변경

mapper에서 변경 (parameterType="Integer" 로 변경)

 

이제 아래의 mv에 "dto"라는 이름으로 dto를 붙여서 edit.jsp로 보낼 예정

=>  edit.jsp 파일을 만들자


경로에 edit 빠져있어서 오류떴었음 **주의**


edit.jsp 파일 생성  (그냥 write.jsp 파일을 ctrl+c & ctrl+v 하자)

약간 수정해줌

 

글수정 버튼 아래에 input창(type이 text) 넣어주고 bno 번호 불러옴.

그럼 글수정 버튼 눌렀을때 아래처럼 해당 글의 번호가 뜸.

input 태그의 type을 "hidden"으로 변경

 

글수정 버튼 아래 글번호 뜨는게 숨겨짐

일단 화면상에는 안보이게 해줬지만 소스코드 보기에서 보면 어떤 글을 수정한건지 확인가능

 

( 수정해줬던 부분 )

 

 

어떤 글을 수정한건지 db에 보내려면 bno(글번호)가 필요  

 

보드컨트롤러에서 아래처럼 다시 edit () 메소드의 매개변수를 request 로 받아오자

 

(주소창 bno에 144 입력하면 144번 글로 이동하는데 이때 숫자사이에 다른 문자들 있어도 1agaf4asd4 처럼

이동가능)

 

수정완료하면 board로 이동


( 값을 대량으로 받아올때는 요렇게  Map으로 받아오기 )


일단 Map말고 dto에 담아서 보내자

title & content => btitle & bcontent 변경 ( boardDTO 에 있는 변수명하고 맞춰줌 )

 

 

출력되는지 확인하고 

 

 

이제 서비스한테 일을 시키자 _ 밑줄클릭해서 서비스에 edit() 메소드 생성

 

서비스에서는 DAO 한테 일 시킬거니까 밑줄클릭해서 DAO에 edit() 메소드 생성

 

DAO에서는 이제 마지막으로 mapper에게 명령문 실행시켜

 

이렇게 하면 글을 다시 쓰고 글수정 완료 버튼을 눌렀을 때 (원래는 board페이지로 돌아갔는데) 

수정한 글의 페이지가 뜬다~!


로그인 페이지 만들자

메뉴바에 로그인 버튼 추가해주고

 

login.jsp 파일 생성

로그인 페이지 꾸미기~ 정처기 시험 끝나면 더 꾸며볼게요