컨트롤러의 반환값이 "redirect:" 으로 시작하면 리다이렉트로 이동함
response.sendRedirect() 를 대체하는 스프링의 방식
"redirect:" 뒤에는 새로운 요청 URL 이 오기 때문에 특정 URLMapping 값을 작성해야 함
(뷰이름(.jsp)을 작성하는 것이 아님!!)

forward와 구분하여 db에 접근하거나 api 단계별 호출을 위함
public String add(){
return "redirect:/list.do";
}
public void add(HttpServletResponse response){
PrintWriter out = response.getWriter();
out.println("<script>");
out.println("location.href='이동경로'");
out.println("</script>");
}
// @RequestMapping(value = "/faq/add.do", method = RequestMethod.POST)
public String add(HttpServletRequest request) {
// 요청 파라미터
String title = request.getParameter("title");
// title이 빈 문자열이면 add 실패로 가정(DB 처리할 때 insert 성공은 1, 실패는 0이다.)
int addResult = title.isEmpty() ? 0 : 1;
// addResult를 가지고 faq 목록보기로 이동
return "redirect:/faq/list.do?addResult=" + addResult;
}
// @RequestMapping(value ="/faq/list.do", method = RequestMethod.GET)
public String list(@RequestParam(value="addResult", required = false) String addResult, Model model) {
model.addAttribute("addResult", addResult);
return "faq/list";
}
@RequestMapping(value = "/faq/add.do", method = RequestMethod.POST)
public String add2(HttpServletRequest request
, RedirectAttributes redirectAttributes) { // redirect 상황에서 값을 전달할 때 사용한다.
// 요청 파라미터
String title = request.getParameter("title");
// title이 빈 문자열이면 add 실패
int addResult = title.isEmpty() ? 0 : 1;
// faq 목록보기로 redirect 할 때 addResult를 "flash attribute"로 곧바로 전달하기
redirectAttributes.addFlashAttribute("addResult", addResult);
// faq 목록보기로 redirect
return "redirect:/faq/list.do";
}
@RequestMapping(value ="/faq/list.do", method = RequestMethod.GET)
public String list2() {
return "faq/list";
}
index.jsp
<%-- MyController05으로 요청 --%>
<div>
<form action="${contextPath}/faq/add.do" method="post">
<div>
<label for="title">제목</label>
<input type="text" id="title" name="title">
</div>
<div>
<button type="submit">작성완료</button>
</div>
</form>
</div>

list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
var addResult = '${addResult}'; // var addResult = '1'; add성공
// var addResult = '0'; add실패
// var addResult = ''; add와 상관없음
if(addResult !== ''){
if(addResult === '1'){
alert('add 성공했습니다.');
} else {
alert('add 실패했습니다.');
}
}
</script>
</head>
<body>
faq 목록
</body>
</html>
