MemberVO 생성
실습에서 사용할 MemberVO를 만들어주자
package kr.or.ddit.vo;
import lombok.Data;
@Data
public class Member {
private String userId;
private String userName = "hongkd";
private String password = "1234";
}
HomeController
스프링 프로젝트를 처음 만들면 HomeController라는게 만들어졌을텐데
HomeController를 한번 열어보자
package kr.or.ddit;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Slf4j
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
}
여기에 우선 어노테이션 @Slf4j를 추가해준다.
Void 타입
// GetMapping : method=RequestMethod.GET
// 속성이 하나인 경우 속성명을 생략할 수 있음
// void타입은 호출하는 URL과 동일한 뷰 이름을 나타냄
@GetMapping(value="/goHome0101")
public void home0101() {
log.info("home0101");
// mav.setViewName("goHome0101");
// return "goHome0101";
// /views/goHome0101.jsp
}
void 타입은 호출하는 URL과 동일한 뷰 이름을 나타낸다.
views폴더에 goHome0101.jsp를 만들어준다.
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h1>Home0101</h1>
위 코드를 넣어준 뒤 localhost/goHome0101을 들어가면
이전에 sub-layout을 만들고 경로 설정을 해놨기 떄문에 */*과 같은 스타일(lprod/list, lprod/detail)의 경로가 아니더라도 tiles가 적용이 된다.
String 타입(많이 사용한다.)
@GetMapping(value="goHome0201")
public String home0201() {
log.info("home0201");
// /views/home0201.jsp
return "home0201";
}
@GetMapping("/sub/goHome0202")
public String home0202() {
log.info("home0201");
return "home0202";
}
@GetMapping("/sub/goHome0203")
public String home0203() {
return "sub/home0203";
}
//반환값이 "redirect:"로 시작하면
//리다이렉트(새로운 URL을 재요청) 방식으로 처리함
@GetMapping("/goHome0204")
public String home0204() {
log.info("home0204");
// redirect : 새로운 URL 재요청
return "redirect:/sub/goHome0205";
}
@GetMapping("/goHome0205")
public String home0205() {
log.info("home0205");
// forwarding :
// "/"로 시작하면 웹 애플리케이션의
// 컨텍스트 경로에 영향을 받지 않는
// 절대경로를 의미함
return "/sub/home0205";
}
/sub/home0205의 경우 tiles-config에서 설정한 경로와 다르기 떄문에 tiles가 깨지게 된다.
자바빈즈 클래스 타입
// JSON : JavaScript Object Notation
// 3. 자바빈즈 클래스 타입
// JSON 객체 타입의 데이터를 만들어서 반환
// Member타입의 member객체 -> String(serialize)
@ResponseBody
@GetMapping("/goHome0301")
public Member home0301() {
log.info("home0301");
Member member = new Member();
return member;
}
@ResponseBody 어노테이션은 member객체를 String으로 바꿔주는 serialize작업을 해준다.
컬렉션 List 타입
// 4. 컬렉션 List 타입
// JSON 객체 배열 타입의 데이터를 만들어서 반환
// 반환값이 컬렉션 List 타입이면 JSON객체 "배열" 타입으로
// 자동으로 변환
@ResponseBody
@GetMapping("/goHome04")
public List<Member> home04(){
Member member = new Member();
Member member2 = new Member();
List<Member> list = new ArrayList<Member>();
list.add(member);
list.add(member2);
return list;
}
7일차 종료~~
'Spring 실습' 카테고리의 다른 글
Spring 실습 8일차 (요청 처리) (0) | 2024.05.01 |
---|---|
Spring 실습 8일차(응답(Response))(2) (0) | 2024.05.01 |
Spring 실습 6일차(ajax를 활용한 Create, Update, Delete) (0) | 2024.04.29 |
Spring 실습 5일차(Tiles) (1) | 2024.04.26 |
Spring 실습 3일차 (Book list, detail, edit, delete, search) (2) | 2024.04.24 |