<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>home.jsp</title>
</head>
<body>
<div class="container">
<h1>인덱스 페이지 입니다</h1>
<ul> <!-- Spring01/ -->
<li><a href="${pageContext.request.contextPath }/member/insertform">파라미터 추출테스트 </a></li>
<li><a href="${pageContext.request.contextPath }/fortune">오늘의 운세보기 1</a></li>
<li><a href="${pageContext.request.contextPath }/fortune2">오늘의 운세보기 2</a></li>
<li><a href="${pageContext.request.contextPath }/fortune3">오늘의 운세보기 3</a></li>
<li><a href="${pageContext.request.contextPath }/member/delete?num=1">작업후 리다일렉트 응답받기1</a></li>
<li><a href="${pageContext.request.contextPath }/member/delete?num=2">작업후 리다일렉트 응답받기2</a></li>
<li><a href="${pageContext.request.contextPath }/test/json1">JSON 응답받기1</a></li>
<li><a href="${pageContext.request.contextPath }/test/json2">JSON 응답받기2</a></li>
<li><a href="${pageContext.request.contextPath }/test/json3">JSON 응답받기3</a></li>
<li><a href="${pageContext.request.contextPath }/test/json4">JSON 응답받기4</a></li>
<li><a href="${pageContext.request.contextPath }/test/json5">JSON 응답받기5</a></li>
<li><a href="${pageContext.request.contextPath }/test/json6">JSON 응답받기6</a></li>
</ul>
<h2>공지사항</h2>
<ul>
<c:forEach var="tmp" items="${requestScope.noticeList }">
<li>${tmp }</li>
</c:forEach>
</ul>
</div>
</body>
</html>

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2-1. HomeController
package com.gura.step01;
import java.util.List;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
//이 프로젝트의 최상위 경로 요청이 오면
@RequestMapping("/")
public String home(HttpServletRequest request) {
List<String> noticeList = new ArrayList<String>();
noticeList.add("공지사항 1번");
noticeList.add("공지사항 2번");
noticeList.add("공지사항 2번");
request.setAttribute("noticeList", noticeList);
return "home";
}
}
return "home";
2-2. FortuneController
package com.gura.step01;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class FortuneController {
@RequestMapping("/fortune")
public String fortune(HttpServletRequest request) {
//오늘의 운세
String fortune="오늘 운세는 최고네요";
//request scope에 응답에 필요한 데이터를 담는다
request.setAttribute("fortuneToday",fortune);
// /WEB-INF/views/fortune.jsp 페이지로 forward 이동해서 응답하기
return "fortune";
}
@RequestMapping("/fortune2")
public ModelAndView fortune2() {
//오늘의 운세
String fortuneToday="오늘 운세는 보통이네요";
//HttpServletRequest 객체 대신에 ModelAndView 객체를 생성해서
ModelAndView mView =new ModelAndView();
//view page에 전달할 내용을 담는다
mView.addObject("fortuneToday", fortuneToday);
//view page 의 위치도 담는다
mView.setViewName("fortune");
//모델과 view page의 정보가 모두 담겨있는 ModelAndView 객체를 리턴해주면 똑같이 동작한다
return mView;
}
//ModelAndView 를 매개 변수로 선언하면 스프링 프레임워크가 알아서 객체 생성후 참조값을 넣어준다
@RequestMapping("/fortune3")
public ModelAndView fortune3(ModelAndView mView) {
//오늘의 운세
String fortuneToday="오늘 운세는 안좋아요";
//view page에 전달할 내용을 담는다
mView.addObject("fortuneToday", fortuneToday);
//view page 의 위치도 담는다
mView.setViewName("fortune");
//모델과 view page의 정보가 모두 담겨있는 ModelAndView 객체를 리턴해주면 똑같이 동작한다
return mView;
}
}

2-3. TestController
package com.gura.step01;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.gura.step01.member.MemberDto;
/*
* JSON 문자열 응답하는 방법
*
* 1. pom.xml에 jac
*/
@Controller
public class TestController {
//문자열을 응답하기 위한 annotation = @ResponseBody
@ResponseBody
@RequestMapping ("/test/json1")
public String json1() {
return "{\"num\" : 1 ,\"name\" : \"김구라\", \"addr\" : \"노량진\"}";
}
@ResponseBody
@RequestMapping("/test/json2")
public MemberDto json2() {
//DB에서 읽어온 화원정보라고 가정하자
MemberDto dto = new MemberDto();
dto.setNum(2);
dto.setName("해골");
dto.setAddr("원숭이");
return dto;
}
@ResponseBody
@RequestMapping("/test/json3")
public Map<String, Object> json3(){
Map<String, Object> map = new HashMap<>();
map.put("num", 1);
map.put("writer", "김구라");
map.put("isMan", true);
return map;
}
@ResponseBody
@RequestMapping("/test/json4")
public List<String> json4(){
List<String> names = new ArrayList<String>();
names.add("김구라");
names.add("해골");
names.add("원숭이");
return names;
}
@ResponseBody
@RequestMapping("/test/json5")
public List<MemberDto> json5(){
List<MemberDto> list = new ArrayList<>();
list.add(new MemberDto(1, "김국라", "노량진"));
list.add(new MemberDto(2, "해골", "노량진"));
list.add(new MemberDto(3, "원숭이", "노량진"));
return list;
}
@ResponseBody
@RequestMapping("/test/json6")
public List<Map<String,Object>> json6(){
List<Map<String,Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("num", 1);
map1.put("name", "김구라");
map1.put("addr", "노랭진");
Map<String, Object> map2 = new HashMap<>();
map2.put("num", 2);
map2.put("name", "해골");
map2.put("addr", "노랭진");
Map<String, Object> map3 = new HashMap<>();
map3.put("num", 3);
map3.put("name", "원숭이");
map3.put("addr", "노랭진");
list.add(map1);
list.add(map2);
list.add(map3);
return list;
}
}
2-4. MemberController
package com.gura.step01;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.gura.step01.member.MemberDto;
@Controller
public class TestController {
//문자열을 응답하기 위한 annotation = @ResponseBody
@ResponseBody
@RequestMapping ("/test/json1")
public String json1() {
return "{\"num\" : 1 ,\"name\" : \"김구라\", \"addr\" : \"노량진\"}";
}
@ResponseBody
@RequestMapping("/test/json2")
public MemberDto json2() {
//DB에서 읽어온 화원정보라고 가정하자
MemberDto dto = new MemberDto();
dto.setNum(2);
dto.setName("해골");
dto.setAddr("원숭이");
return dto;
}
@ResponseBody
@RequestMapping("/test/json3")
public Map<String, Object> json3(){
Map<String, Object> map = new HashMap<>();
map.put("num", 1);
map.put("writer", "김구라");
map.put("isMan", true);
return map;
}
@ResponseBody
@RequestMapping("/test/json4")
public List<String> json4(){
List<String> names = new ArrayList<String>();
names.add("김구라");
names.add("해골");
names.add("원숭이");
return names;
}
@ResponseBody
@RequestMapping("/test/json5")
public List<MemberDto> json5(){
List<MemberDto> list = new ArrayList<>();
list.add(new MemberDto(1, "김국라", "노량진"));
list.add(new MemberDto(2, "해골", "노량진"));
list.add(new MemberDto(3, "원숭이", "노량진"));
return list;
}
@ResponseBody
@RequestMapping("/test/json6")
public List<Map<String,Object>> json6(){
List<Map<String,Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("num", 1);
map1.put("name", "김구라");
map1.put("addr", "노랭진");
Map<String, Object> map2 = new HashMap<>();
map2.put("num", 2);
map2.put("name", "해골");
map2.put("addr", "노랭진");
Map<String, Object> map3 = new HashMap<>();
map3.put("num", 3);
map3.put("name", "원숭이");
map3.put("addr", "노랭진");
list.add(map1);
list.add(map2);
list.add(map3);
return list;
}
}