Spring MVC Controller객체
@ModelAttribute
@ModelAttribute를 이용하면 커멘드 객체의 이름을 변경할 수 있고, 이렇게 변경된 이름은 뷰에서 커멘드 객체를 참조할 때 사용된다
//@ModelAttribute = request + model 위와 똑같음
@RequestMapping("/result03")
public String result03(@ModelAttribute("num") String aaa) {
System.out.println("화면데이터:" + aaa);
return "response/result03";
}
@RequestMapping("/result04")
public String result04(@ModelAttribute("article") ReqVO vo) {
System.out.println("화면데이터:" + vo.toString());
return "response/result04";
}
redirectAttribute
redirect시에 1회성 데이터를 저장 할 수 있음
@RequestMapping("/redirect_login")
public String loginView() {
return "response/redirect_login";
}
@RequestMapping(value="/login", method=RequestMethod.POST)
public String Login(@RequestParam("id") String id,
@RequestParam("pw") String pw,
RedirectAttributes ra) {
//로그인 성공 -> home 화면으로
if(id.equals(pw)) {
ra.addFlashAttribute("msg", "어서와"); //1회성 데이터 session에 저장을 하는 방식 새로고침하면 없어짐
// return "home";
return "redirect:/"; //다시 home 컨트롤러를 태워보냄 -model을 사용할 순 없음 /절대경로
}else {
ra.addFlashAttribute("msg", "틀렸는데요?ㅋ"); //1회성 데이터 session에 저장을 하는 방식 새로고침하면 없어짐
return "redirect:/response/redirect_login"; //"redirect:/절대경로"
}
}
Quiz
전체 컨트롤러
package com.simple.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.simple.command.Quiz01VO;
import com.simple.command.Quiz02VO;
@Controller
@RequestMapping("/quiz") //메서드 앞에 공통으로 들어가는 요청경로
public class QuizController {
//1번
@RequestMapping("/quiz01")
public String quiz01(){
return "quiz/quiz01";
}
@RequestMapping(value="/sendBirth", method=RequestMethod.POST)
public String sendBirth(@ModelAttribute("birth") Quiz01VO vo) {
return "quiz/quiz01_ok";
}
//2번
@RequestMapping("/quiz02")
public String quiz02(){
return "quiz/quiz02";
}
@RequestMapping(value="/join", method=RequestMethod.POST)
public String join(@ModelAttribute("info") Quiz02VO vo) {
return "quiz/quiz02_ok";
}
//3번
@RequestMapping("/quiz03")
public String quiz03(){
return "quiz/quiz03";
}
@RequestMapping("/quiz03_ok")
public String ok(@ModelAttribute("id") String id){
return "quiz/quiz03_ok";
}
@RequestMapping(value="/join2", method=RequestMethod.POST)
public String join(@RequestParam("id") String id,
@RequestParam("pw") String pw,
@RequestParam("pw_check") String pw_check,
RedirectAttributes ra) {
if(id.equals("")) {
ra.addFlashAttribute("msg", "아이디를 입력해주세요");
return "redirect:/quiz/quiz03";
}else if(!pw.equals(pw_check)){
ra.addFlashAttribute("msg", "비밀번호를 확인해주세요");
return "redirect:/quiz/quiz03";
}else {
return "redirect:/quiz/quiz03_ok?id="+id;
}
}
}
quiz1
1. QuizController에는 /quiz 폴더 아래의 모든 요청을 처리할 수 있는 컨트롤러를 생성하세요
2. quiz01 화면처리를 할 수 있는 메서드를 생성 (quiz01 맵핑)
3. 다음 생년월일을 받아서 콘솔에 출력하는 메서드를 생성 (sendBirth 맵핑)
조건) Quiz01VO 커맨드객체 사용, 콘솔에 전송된 값을 붙여서 출력합니다 ex)20180615
4. 출력후엔 quiz01_ok 페이지에 "당신의 생일은 ~~~~년 ~~월 ~~일" 을 출력하세요
quiz01.jsp
<%@ 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>Insert title here</title>
</head>
<body>
<%--
1. QuizController에는 /quiz 폴더 아래의 모든 요청을 처리할 수 있는 컨트롤러를 생성하세요
2. quiz01 화면처리를 할 수 있는 메서드를 생성 (quiz01 맵핑)
3. 다음 생년월일을 받아서 콘솔에 출력하는 메서드를 생성 (sendBirth 맵핑)
조건) Quiz01VO 커맨드객체 사용, 콘솔에 전송된 값을 붙여서 출력합니다 ex)20180615
4. 출력후엔 quiz01_ok 페이지에 "당신의 생일은 ~~~~년 ~~월 ~~일" 을 출력하세요
--%>
<h2>quiz화면(화면 URL요청: /quiz/quiz01)</h2>
<form action="sendBirth" method="post">
생년월일:<br>
<input type="text" name="year" maxlength="4" size="4" placeholder="년(4자)">
<select name="month">
<c:forEach var="i" begin="1" end="12">
<option>${i }</option>
</c:forEach>
</select>
<input type="text" name="day" maxlength="2" size="4" placeholder="일">
<input type="submit" value="전송">
</form>
</body>
</html>
quiz01_ok.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>
</head>
<body>
<h3>당신의 생일은 ${birth.year }년 ${birth.month }월 ${birth.day}일</h3>
</body>
</html>
quiz2
1.QuizController에 화면처리 메서드 생성
2.폼 처리 메서드 생성
3.입력한 정보를 quiz02_ok.jsp 화면에 출력
4.방법 자유
quiz02.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>
</head>
<body>
<%--
1.QuizController에 화면처리 메서드 생성
2.폼 처리 메서드 생성
3.입력한 정보를 quiz02_ok.jsp 화면에 출력
4.방법 자유
--%>
<h2>회원가입</h2>
<form action="join" method="post">
아이디:<input type="text" name="id"><br>
비밀번호:<input type="password" name="pw"><br>
이름:<input type="text" name="name"><br>
이메일:<input type="email" name="email"><br>
<input type="submit" value="회원가입">
</form>
</body>
</html>
quiz02_ok.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>
</head>
<body>
id: ${info.id}<br/>
pw: ${info.pw}<br/>
name: ${info.name}<br/>
email: ${info.email}<br/>
</body>
</html>
quiz3
1. quiz03 파일의 화면처리를 할 수 있는 메서드를 생성하세요. (res_quiz01 맵핑)
2. 폼태그의 맵핑은 join2 으로 맵핑하세요.
3. 아이디가 적지 않았다면 이라면 quiz03화면으로 이동해서 화면에 "아이디를 입력하세요" 출력
4. 비밀번호와 비밀번호 체크가 다르다면 quiz03화면으로 이동해서 "비밀번호를 확인하세요" 출력
5. 그렇지 않으면 quiz03_ok로 이동해서 "id님 회원가입을 축하합니다" 출력
6. 힌트:문자열 비교는 equals()를 이용, RedirectAttribute 이용
quiz03.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>
</head>
<body>
<%--
1. quiz03 파일의 화면처리를 할 수 있는 메서드를 생성하세요. (res_quiz01 맵핑)
2. 폼태그의 맵핑은 join2 으로 맵핑하세요.
3. 아이디가 적지 않았다면 이라면 quiz03화면으로 이동해서 화면에 "아이디를 입력하세요" 출력
4. 비밀번호와 비밀번호 체크가 다르다면 quiz03화면으로 이동해서 "비밀번호를 확인하세요" 출력
5. 그렇지 않으면 quiz03_ok로 이동해서 "id님 회원가입을 축하합니다" 출력
6. 힌트:문자열 비교는 equals()를 이용, RedirectAttribute 이용
--%>
<form action="join2" method="post">
ID: <input type="text" name="id" size="10"><br/>
비밀번호 : <input type="password" name="pw" size="10"><br/>
비밀번호 확인: <input type="password" name="pw_check" size="10"><br/>
<input type="submit" value="로그인"><br/>
<span>${msg }</span>
</form>
</body>
</html>
quiz03_ok.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>
</head>
<body>
${id}님 회원가입을 축하합니다
</body>
</html>