안녕하세요 이번에는 DB에 text 내용을 저장 후 사용할때 줄바꿈 처리에 대해 간단히 알려드리고자 합니다.
일단 입력 부분에서 엔터를 사용합니다.
이렇게 DB에 저장 후 그대로 가져오면 다음과 같습니다.
이렇게 줄바꿈이 적용되지 않은채로 나오는 경우가 있습니다.
원인은 다음과 같습니다
DB에 저장시 "\n" 로 인식하기 때문에 jsp에서 엔터는 <br>태그로만 인식하기 때문에 표시가 안되는 현상입니다.
해결방법으로는 크게 2가지가 있습니다.
저장할때 개행문자를 변경 or 저장 후 사용할 때 개행문자를 변경
입니다.
저는 저장은 그대로 하고 데이터를 불러올 때 처리를 소개하도록 하겠습니다.
저장 후 사용시에도 2가지 방법으로 알려드리겠습니다.
1. JAVA 단에서 변경
2. JSP 단에서 변경(jstl 이용)
으로 각각 알려드리도록 하겠습니다.
1. JAVA단에서 변경
JAVA에서는 다음과 같이 replace 함수를 이용하면 됩니다.
replace("\r\n","<br>")
저는 스프링에서 사용하기 때문에 VO에 데이터를 담아 사용하는데요.
paramVO.setContent(paramVO.getContent().replace("\r\n","<br>"));
해당 내용을 가져와 replace 함수로 변경하여 바로 다시 저장하게끔 설정을 합니다.
2. JSP 단에서 변경(jstl 이용)
JSP에서는 fn 함수를 이용합니다.
우선 JSP 상단에 라이브러리를 다음과 같이 작성하여 추가합니다.
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<% pageContext.setAttribute("replaceChar", "\n"); %>
그리고 사용할 부분에 다음과 같이 작성합니다.
${fn:replace(paramVO.content, replaceChar, "<br/>")}
구현 결과를 보시면 다음과 같습니다.
참고로 jstl로 반대로 하는 방법은 다음과 같습니다.
아까와 마찬가지로 상단에 선언시 <br/> -> <br> 로 변경
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<% pageContext.setAttribute("replaceChar", "<br>"); %>
\n을 사용하기 위해서 \\를 두번 사용해야 합니다.
${fn:replace(paramVO.content, replaceChar, "\\n")}
이렇게 사용하시면 아까와 반대로 변경이 가능합니다.
자 이렇게 스프링에서 java, jstl을 이용한 방법을 알려드렸습니다.
본인이 좋아하시는 방법에 맞게 사용하시면 될것 같습니다.
감사합니다.
'프로그래밍 > 스프링[Spring]' 카테고리의 다른 글
[자바스크립트] append, prepend, after, before 설명과 사용방법 (0) | 2019.08.09 |
---|---|
[jsp] function(e) 에서 e 는 무엇인가? (0) | 2019.07.31 |
자바 날짜[Date] 비교하는 방법[스프링] (0) | 2019.07.09 |
[스프링] 스프링 시큐리티 핸들러 생성하기[로그인 성공/실패 처리] (0) | 2019.07.05 |
네이버 클라우드 플랫폼 - 새로운 네이버 지도 이용하기 (0) | 2019.07.03 |