국비지원

22-05-04 수업정리

야생늑대 2022. 5. 4. 11:50
반응형

 

게시판 글 삭제 

 

 

다른 기능은 어렵지 않게 했는데 글 삭제 실패 시 다시 상세보기 페이지로 이동하는 코드를 짜는데 고민을 많이 했다.

선생님이 알려주신 대로 URL에 추가하는 걸 생각 못하고 처음에는 밑에 그림처럼 서블릿 주소가 아닌 원주소를 그대로

작성해봤더니  데이터가 없이 넘어가서 내용이 보이지 않았다.

 

그래서 매핑된 주소를 입력했더니 null 값이라고 에러가 나네..

생각해보니 보여줄 상세페이지의 글 번호가 없으니 글 내용을 불러 올 수가 없다.

글 번호를 추가해야 하는데 어떻게 하나 고민하다가  상세페이지 기능을 보니 똑같이 글 번호로 글 정보를 SELECT 하고 있다.

그래서 필요한 부분을 가져와서 작업했다. 

상세보기기능

 

근데 선생님이 하시는 걸 보고 아 저 방법이 있었지 싶었다.

그냥 sendRedirect로 매핑된 주소로 이동시키면서 파라미터 정보로 글 번호를 주는 거다.

그러면 페이지 이동을 하고 나서도 URL에 글 번호 정보가 있으니 글 번호 가지고 활용 가능하다.


글 수정 하기

점심 전에 수정 기능을 만들어보았는데  처음에 다 만들고 실행해보니 수정 완료를 눌렀을 때 페이지 오류가 떠서 선생님께

질문했더니 서블릿 주소가 들어올 때랑 나갈 때가 똑같다고 하셔서 jsp파일을 하나 더 만들어서 기능을 분리해서 실행해봤는데 이번에는 값이 없다는 오류가 떠서 1시간을 넘게 고민했다. 밑에는 그 오류와 원인

 

값이 없음에러
java.lang.NumberFormatException

java.lang.NumberFormatException: For input string: ""

출력문으로 확인해보니 서블릿으로는 데이터가 넘어왔는데 문자열이 공백이라는 에러가 나고 실행 중단.

결국 값이 없다는 에러기 때문에 거기에 중점을 두고 원인 찾는데 집중했다.

원인은 jsp파일에서 input 데이터 중 수정되면 안 되는 것들에 속성으로 hidden을 줬었는데 hidden이나 readonly 속성은  value="" 값이 페이지 이동시 전송된다.

그런데 나는 <td> </td> 태그 안에 값을 넣어서 화면에는 표시가 되었지만 페이지를 이동할 때 value는 값이 없기 때문에 값이 공백(null)으로 넘어간 거다.

올바른 표기방법

 

에러 메시지 출력하기

 

String타입으로 에러 메시지로 쓸 문자열을 변수 선언

페이지 이동시 URL에 이 변수를 ( "? errorMsg=" + 변수 )로   넘겨준다. 

 ( 한글이 깨질 수 있으니 URL Encoder.encode( 변수, "UTF-8);  적용  )

이동한 페이지에서 넘겨받은  URL의 errorMsg 파라미터를 변수에 담아서 출력한다.

 

 


 

JSP 파일은  자바코드를 먼저인식하고  HTML태그를 인식하기때문에

 JSP파일에서 HTML과 자바코드를 같이 주석<!-- -->으로 묶으면  자바 코드는실행되고 그다음 HTML주석이 실행된다.

그래서 자바코드에 값이 없거나 올바르지않으면 에러가 날 수 있다.

JSP에서 주석 사용하려면  <%-- -->


검색기능

 

 


JSLT로 JSP파일에서 if 문 사용하기

 

jsp 에서 if문으로 searchText의 값이 공백이거나 null 값일 경우는 검색결과 메세지가 있는 행이 안 만들어진다.

 

 

수업끝나고  셀렉트태그 옵션으로  글제목, 글작성자, 글 + 제목  3가지로 검색할 수 있게 만들어봤다.

 

▶ 처음에는 Dao에 If문 구성이나 WHERE절에 열이름을 직접지정할 생각도못하고 3가지 옵션을 따로 나눠서 중복되는 가 많게 코드를 작성했었다.  그런데 글+작성자 검색기능은 구현못했었고, 중복되는 코드가 많아서 이러면 어떨까? 이렇게한번해볼까? 몇시간 고민하다가 완성했다.    코드가 전 보다 간결해지고 보기도 편해졌다.

 


22/05/06   

선생님이 알려주신  BoardDao.java 의 검색기능 sql문  

이게 더 짧아지네..   이렇게도 할 수 있구나

 

sql 문의 중복되는 부분을 변수선언해서 사용하고, 매핑하게되면 total은  매핑할 값이 두개라서 따로 작성해줘야하기때문에 매개변수를 직접 sql문에 사용해서 매핑에 관한 코드를 사용하지 않아도 된다.

코드가 3줄 정도 줄었다.

반응형

'국비지원' 카테고리의 다른 글

22/05/09 수업정리  (0) 2022.05.09
22-05-06 수업정리  (0) 2022.05.06
22/05/03수업정리  (0) 2022.05.03
22/05/02 수업정리  (0) 2022.05.02
22/04/29 수업정리  (0) 2022.04.29