쌍용 강북 교육센터 국비학원 Day 88일차
Spring Controller 작성 예제
form 태그 컨트롤러 작성 예제
get 방식일 경우에는 form을 작성하는 view 페이지로 이동하고 해당 view 페이지에서 form을 post로 자기자신한테 submit 하면 컨트롤러에서 post로 받아들여 똑같이 파라미터를 받아올 수 있다. 스프링에서는 전달할 수 있는 파라미터를 객체 한개까지만 받을 수 있어서 (여러개의 데이터를 받지 못한다) VO나 Map을 이용해 데이터를 전달해야 한다.
- HashMap 타입으로 매개변수를 받아온 것을 꺼내서 사용할때 -
1. 데이터로 사용할때는 #{key명} 이다
2. 식별자(테이블명, 컬럼명)로 사용할때는 ${key명} 이다
3. myBatis 에서 제공하는 if 엘리먼트나 choose 엘리먼트 안에서 사용할때는 <if test="key명"> <when test="key명"> 으로 사용한다.
- form 태그를 getParameter 없이 VO형태로 데이터 전달
스프링에서는 form 태그의 name 값과 VO의 필드명(변수명) 이 같을 경우 자동적으로 VO에 set을 해주기 때문에 코드를 간결하게 작성할 수 있다.
- get 방식과 post 방식을 나누어서 정의 매개 변수가 다른 Overloding을 활용.
- return 타입을 String 대신 ModelAndView를 사용
ModelAndView는데이터와 이동하고자 하는 View Page를 같이 저장하는 스프링 객체로, 사용방법은 String과 크게 다를것은 없이 ModelAndView 객체에 담아서 리턴을 시켜주면 된다.
- Spring 에서의 Ajax 활용
@ResponseBody 란?
메소드에 @ResponseBody Annotation이 되어 있으면 return 되는 값은 View 단 페이지를 통해서 출력되는 것이 아니라 return 되어지는 값 그 자체를 웹브라우저에 바로 직접 쓰여지게 하는 것이다. 일반적으로 JSON 값을 Return 할때 많이 사용된다.
스프링에서 json 또는 gson을 사용한 ajax 구현시 데이터를 화면에 출력해 줄때 한글로 된 데이터가 '?' 로 출력되어 한글이 깨지는 현상이 있다. 이것을 해결하는 방법은 @RequestMapping 어노테이션의 속성 중 produces="text/plain;charset=UTF-8" 를 사용하면 응답 페이지에 대한 UTF-8 인코딩이 가능하여 한글 깨짐을 방지 할 수 있다.
Spring - Tiles)적용하기
Tiles(타일즈)란 View페이지의 jsp들을 헤더, 사이드, 메인, 푸터를 설정 상태로 include 처리해주는 구조의 템플릿을 말한다. 페이지들을 일괄관리 할 수 있고, 공통 사용하는 부분들을 매번 등록을 따로 해주지 않아도 되기 때문에 편리한 장점이 있다.
- Maven 라이브러리 추가 (pom.xml)
- servlet-context.xml 설정추가
order를 1로 설정하여 tiles가 우선순위가 되도록 설정한다.
- servlet-context.xml에서 value로 설정한 xml 파일 (tiles-layout.xml 파일) 정의
헤더와 푸터는 고정된 것을 사용하고 본문(content)의 내용만 바뀌기 때문에 content로 작성되는 것들은 extends에 따라 name과 value에 맞는 파일이 매칭되어야 한다. name의 *은 모든것을 뜻하고 value의 { number } 는 이뤄지는 경로의 갯수를 (폴더) 뜻한다.
- xml에서 정의한 include의 기본 틀이 되는 템플릿(template) 생성
- xml의 파일에서 정의한 name 과 value에 맞는 컨트롤러 생성
리턴 값에 name의 *과 매칭이 되고 실제 경로는 xml의 선언해둔 접두어와 접미사가 합쳐진 경로가 된다.
'Spring' 카테고리의 다른 글
Spring Filter, Interceptor, AOP 구조에 대해 (1) | 2025.08.18 |
---|---|
쌍용강북교육센터 국비 학원 Day 89일차 Spring (AOP) (0) | 2023.05.22 |
쌍용강북교육센터 국비 학원 Day 87일차 Spring Framework (0) | 2023.05.09 |