티스토리 뷰
초보 웹 개발자를 위한 스프링 5 프로그램 입문을 보고 복습 겸 개인 학습 정리입니다. (windows 기준)
chap 11에서 만든 회원가입, 설문조사 뷰는 JSP에 직접 문자열을 작성했었는데, 만약 문자를 변경해야 할 경우 각 폼을 출력하는 JSP을 모두 찾아 수정해야 하는 번거로움이 생긴다. 또는 다국어를 지원할 경우 각 언어에 맞게 문자열을 표시해야 하기 때문에 이 점도 고려해야 한다.
이러한 문제를 해결하기 위해 chap 12에서는 문자열을 별도 파일에 작성하고 JSP 코드에서 값을 불러와 메시지를 출력하는 예제를 만들어보았다.
예제 프로젝트 만들기 (메이븐 기준) 예제 코드
sp5-chap12 프로젝트 폴더 생성
+ chap11의 src 파일 복붙
+ chap11의 pom.xml 복붙 후 <artifactId> 12로 변경
이클립스에서 sp5-chap12 폴더에 생성한 메이븐 프로젝트 import
<spring:message> 태그로 출력하기
- 문자열을 담은 메시지 파일 작성
- 메세지 파일에서 값을 읽어오는 MessageSource 빈 설정
- JSP 코드에서 <spring:message> 태그를 사용하여 메세지 출력
1. 메시지를 처리할 label.properties 파일 만들기
main/resources 폴더 내부에 message폴더를 만들고 message 폴더 안에 label.properies 파일을 만든다.
파일 작성 시 UTF-8 인코딩을 사용하여 작성하기
member.register=회원가입
term=약관
term.agree=약관동의
next.btn=다음단계
member.info=회원정보
email=이메일
name=이름
password=비밀번호
password.confirm=비밀번호 확인
register.btn=가입 완료
register.done=<strong>{0}님</strong>, 회원가입을 완료했습니다.
go.main=메인으로 이동
2. 설정 파일에 MessageSource 타입 빈 추가하기
setBasenames 프로퍼티 값으로 ("message.label")을 주었는데, massage패키지에 속한 label 프로퍼티 파일로부터 메세지를 읽어온다고 설정한 것
DefualtEncoding 프로퍼티 값을 ("UTF-8")로 설정한 것도 label.properties파일 작성 시 UTF-8 인코딩을 사용했기 때문
→ chap12/src/main/java/config/MvcConfig.java
import org.springframework.context.MessageSource;
import org.springframework.context.support.ResourceBundleMessageSource;
@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {
... 생략 ...
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource ms = new ResourceBundleMessageSource();
ms.setBasenames("message.label");
ms.setDefaultEncoding("UTF-8");
return ms;
}
}
3. MessageSource를 사용해 메세지를 출력하도록 JSP코드 모두 수정하기 (접은 글로 대체)
→ chap11/src/main/webapp/WEB-INF/view/register/step1.jsp
→ chap11/src/main/webapp/WEB-INF/view/register/step2.jsp
→ chap11/src/main/webapp/WEB-INF/view/register/step3.jsp
기존 jsp 코드를 살펴보면 직접 작성한 메시지가 화면에 출력되는 형태
📌 메세지 처리
- <spring:massage> 커스텀 태그를 사용하기 위해 태그 라이브러리 추가
- 화면에 출력되는 한글 대신 <spring:massage> 커스텀 태그를 이용해서 메세지 출력
3. 서버 실행
[Run As] → [Run on Server] → [톰캣😺 서버 실행]
서버를 실행시키면 위에서 설정한 <spring:message> 태그 위치에 알맞은 메시지가 출력된다.
📌 <spring:message> 태그 메시지 인자 처리
→ chap12/src/main/java/resources/message/label.properties
메세지 폴더의 label.properties 파일을 살펴보면
메시지가 있는데 이 메시지의 {0} 은 인덱스 기반 변수 중 0번 인덱스값으로 대치되는 부분을 표시한다.
만약, 두 개 이상의 값을 전달해야 할 경우 아래 방법 중 하나를 사용한다.
- 콤마로 구분한 문자열
- 객체 배열
- <spring:argument> 태그 사용
'study > Spring' 카테고리의 다른 글
스프링 프로젝트 생성하기 (start.spring.io) (0) | 2023.02.16 |
---|---|
chap 12 - 커맨드 객체 검증과 에러 메시지 (0) | 2023.02.15 |
chap 11 - MVC 1 (2) (0) | 2023.02.10 |
chap 11 - MVC 1 (1) (0) | 2023.02.06 |
chap 10 - 스프링 MVC 프레임워크 동작 방식 (0) | 2023.01.30 |
- Total
- Today
- Yesterday
- Django tutorial
- 디자인 패턴
- 회원가입
- error: failed to push some refs to 'https://github.com/
- git공부
- Python
- Spring
- 톰캣
- django.contrib.auth
- 한글 형태소 분석기
- django-environ
- 배열
- Java
- path variable
- python3
- API
- musma
- Magazine K
- 혼자 공부하는 파이썬
- authenticate()
- 커맨드 객체
- git 공부
- 웹페이지
- 암호화
- 검색 결과 내 페이지네이션
- django
- 면접을 위한 CS 전공 지식 노트
- 환경 변수 설정
- 회원 로그인
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |