본문 바로가기

프로그래밍/스프링[Spring]

[jsp,jstl,java] 줄바꿈, 개행, 공백 replace 처리하기



안녕하세요 이번에는 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을 이용한 방법을 알려드렸습니다.

 

본인이 좋아하시는 방법에 맞게 사용하시면 될것 같습니다.

 

감사합니다.