[JSP] 2020.11.17 개발일지

초보개발자
5 min readNov 17, 2020

--

오늘 다룰 Case는 .jsp파일의 scriptlet tag 안에서 println()을 사용할 때 괄호 안에서 다시 expression tag를 다루는 법에 대한 것입니다.

오늘도 저는 JSP로 웹 게시판 제작을 위해 관련 강의를 듣고 있었고 다음은 강의 내용대로 코딩했을 경우의 사이트 흐름(flow)입니다.

사진1- 게시판 글 목록
사진2- 게시판에서 특정 게시글의 상세페이지
사진3- 사진2에서 ‘수정’을 눌러 게시글을 수정하는 페이지
사진4- 수정 과정
사진5- 사진4에서 ‘글수정’을 누르면 글목록으로 나오게 된다.

(강의대로 진행한 게시판 사이트에서는 게시글 목록에서 상세 페이지로 접근 → 수정버튼 클릭→ 수정 완료 후 다시 게시글 목록 페이지로 복귀 순으로 사이트가 동작함)

하지만 저는 수정 완료 후 게시글 목록이 아니라 방금 수정 완료한 게시글의 상세 페이지로 접근하게 하고 싶었습니다. 사진6은 기존의 코드입니다.

사진6

코드대로라면 글 수정 완료 후에 bbs.jsp, 즉 게시글 목록 페이지로 redirect하게 됩니다. 그렇다면 제가 원하는대로 진행이 되려면 이 부분의 수정이 필요한 것이었죠. 그래서 처음에 수정한 코드는 아래와 같습니다.

기존코드:

script.println(“location.href = ‘bbs.jsp’ ”);

1차 수정 코드:

script.println(“location.href = ‘view.jsp?bbsID=<%=bbsID%>’ ”);

사진7

일단 생각나는대로 코드를 적어봤는데 scriptlet tag안에 expression tag를 적어서인지 아니면 닫는 태그가 </script>를 방해해서 그런건지 빨간 줄이 발생하게 되었습니다. JSP에 대해 학습한지 얼마 되지 않아 이 부분에 대해 문법적으로 제가 실수를 한 것인지 아니면 원래 불가능한 부분인지 알아보기 위해 stack over flow에 질문을 하였고 그 결과 다음과 같은 답을 얻었습니다.

사진8- (코드 업로드는 사진’만’으로 하라고 규칙을 알려주는 다른 유저도 보입니다, 어제도 이 피드백 받아서 오늘은 text format도 같이 포함해서 올렸건만 오로지 text format만 올려야하나 봅니다!)

저는 답변대로 코드를 작성해보았고 코드는 정상적으로 동작하여 게시글 수정 완료 후 게시글 목록이 아닌 방금 수정한 게시글의 상세페이지로 redirect하게 되었습니다. (사진9는 피드백대로 작성한 코드, 사진10, 11은 변화된 사이트 흐름 과정입니다.)

사진9

피드백 받은 코드:

script.println(“location.href = ‘view.jsp?bbsID=” + bbsID + “ ’ ”);

사진10- 코드 수정 후 게시글 수정중인 사진
사진11- 게시글 수정 후 게시글 목록이 아니라 상세페이지로 되돌아온다.

이렇게 해서 제가 원하는 방식으로 사이트가 동작하게 되었습니다. 오늘의 Case는 JSP 내에서 scriptlet tag를, 그리고 그 안에서 HTML 태그 사용을 하다보니 expression tag 활용에 대한 문법이 헷갈려 해결하기 위한 과정이었습니다. 제가 작성한 코드가 동작하지 않았기에 이게 원래 안되는 부분인가? 아니면 문법적으로 잘못 작성인가? 판단이 필요했는데 스택오버플로우의 친절한 답변들을 통해 다행히 잘 해결할 수 있었습니다.

참고 사이트:

https://stackoverflow.com/questions/64869253/jsp-how-can-i-use-expression-tag-in-println-in-scriptlet-tag/64872469#64872469

--

--

No responses yet