💾 MusicController로 요청을 받아서 실행시켜보기
✔ Controller생성: src/main/java - com.spring.ex - MusicController(java class 로 생성)
✔ JSP파일 생성: src- main- webapp- WEB-INF- views- music
(music 폴더에 form.jsp , result1.jsp , result2.jsp, result3.jsp , result4.jsp 파일 생성한다.)
프로젝트 실행하여 - form을 요청 - form에서 요청하는 것에 따라 페이지를 이동하여 결과를 출력 해본다.
📌요청방식에 따라 결과 출력해보기
MusicController.java
package com.spring.ex;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class MusicController {
@RequestMapping("mform")
public String form() {
return "music/form";
}
@RequestMapping("input1")
public String input1() {
return "music/result1";
}
@RequestMapping("input2")
public String input2(@RequestParam("title") String title,
@RequestParam("singer") String singer,
@RequestParam("price") String price, Model model) {
System.out.println(title);
System.out.println(singer);
System.out.println(price);
MusicBean mb = new MusicBean();
mb.setTitle(title);
mb.setSinger(singer);
mb.setPrice(price);
model.addAttribute("mb",mb);
//model.addAttribute("title2",title);
return "music/result2";
}
@RequestMapping("input3")
public String input3(MusicBean mb) {
System.out.println(mb.getTitle());
return "music/result3";
}
@RequestMapping("input4")
public String input4(@ModelAttribute("mu") MusicBean mb) {
return "music/result4";
}
}
1.form요청부터 하기
@RequestMapping("mform")
public String form() {
return "music/form";
}
- 다른 클래스에 요청명이 같은것이 있으면 에러가 발생하여 실행되지 않는다.
- 요청명 music/input 이라고 요청하게되면, 다른 요청을 하게 될때 music/input1 이렇게 똑같이 요청명을 적어줘야 한다.
2. input1요청=>result1.jsp에서 결과 출력
@RequestMapping("input1")
public String input1() {
return "music/result1";
}
- form에서 입력한것들이 파라미터개념으로 넘어와서 result에서 파라미터로 받는다.
- request, model로 넘겨주지 않아도 결과를 출력해볼수있다.
3.input2요청 → @RequestParam , bean으로 만들어서 result2.jsp에서 bean 출력
@RequestMapping("input2")
public String input2( @RequestParam("title") String title,
@RequestParam("singer") String singer,
@RequestParam("price") String price, Model model) {
- form 에서 넘어오는 3가지를 @RequestParam 받아서 매개변수에 넣어준다.
System.out.println(title); -콘솔창으로 확인 출력한다.
System.out.println(singer);
System.out.println(price);
MusicBean mb = new MusicBean(); - 한 묶음의 Bean으로 묶어준다.
mb.setTitle(title);
mb.setSinger(singer);
mb.setPrice(price);
model.addAttribute("mb",mb);
- model 속성 설정
- model.addAttribute("title2",title); → request 속성으로 받아 출력 할 수 있다 =${title2} , requestScope, request.getAttribute
return "music/result2"; - result2 이동하여 출력한다.
}
4. input3요청 →command 객체 result3.jsp에서 command 객체 출력
@RequestMapping("input3")
public String input3(MusicBean mb) {
- MusicBean mb에는 넘어오는 3가지를 받고, 3가지를 한묶음 객체로 setter통한 주입, model설정의 코드가 포함
- 자동으로 model.addAttribute("musicBean",mb); 으로 설정되므로 적어주지 않아도 된다.
System.out.println(mb.getTitle());
return "music/result3";
}
5.input4요청 →command 객체 별칭설정 result4.jsp에서 별칭 출력
@RequestMapping("input4")
public String input4(@ModelAttribute("mu") MusicBean mb) {
- command객체를 생성하면서 별칭mu를 지정하였다.
return "music/result4"; -form에서 파라미터를 넘겨 jsp 출력한다.
}
form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<form action="input4" method="post">
<table border="1">
<tr>
<td>제목</td>
<td><input type="text" name="title"></td>
</tr>
<tr>
<td>가수명</td>
<td><input type="text" name="singer"></td>
</tr>
<tr>
<td>가격</td>
<td><input type="text" name="price"></td>
</tr>
</table>
<input type="submit" value="전송"/>
</form>
<form action="input1" method="post"> : input1 요청
<form action="input2" method="post"> : input2 요청
<form action="input3" method="post"> : input3 요청
<form action="input4" method="post"> : input4 요청
요청을하면 controller로 이동하게 된다.
result1.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
input1 요청=> music/result1.jsp<br><br>
title1 : ${param.title}<br>
title2 : <%=request.getParameter("title")%><br>
singer1 : ${param.singer}<br>
singer2 : <%=request.getParameter("singer")%><br>
price1 : ${param.price}<br>
price2 : <%=request.getParameter("price")%><br>
result2.jsp
<%@page import="com.spring.ex.MusicBean"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
input2 => result2.jsp<br><br>
title1 : ${mb.title}<br>
title2 : ${mb.getTitle()}<br>
title3 : ${mb['title']}<br>
title4 : ${param.title}<br>
title5 : <%=request.getParameter("title")%><br>
title6 : <%=((MusicBean)request.getAttribute("mb")).getTitle()%>
<br><br>
singer1 : ${mb.singer}<br>
singer2 : ${mb.getSinger()}<br>
singer3 : ${mb["singer"]}<br>
singer4 : ${param.singer}<br>
singer5 : <%=request.getParameter("singer") %><br>
singer6 : <%=((MusicBean)request.getAttribute("mb")).getSinger() %><br>
<br><br>
price1 : ${mb.price}<br>
price2 : ${mb.getPrice()}<br>
price3 : ${mb["price"]}<br>
price4 : ${param.price }<br>
price5 : <%=request.getParameter("price") %><br>
price6 : <%=((MusicBean)request.getAttribute("mb")).getPrice()%><br>
- ${mb.title} : mb = controller에서 model로 속성 설정한 것으로 가져온것
- title : <%=mb2.getTitle() %> jsp코드로 출력을 원한다면,
MusicBean 객체를 가져와야 사용 할 수 있다. <% MusicBean mb2 = (MusicBean)request.getAttribute("mb"); %>
result3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
input3 요청 => result3<br><br>
title1 : ${musicBean.title }<br>
title2 : ${musicBean.getTitle() }<br>
title3 : ${param.title }<br>
title4 : ${requestScope.musicBean.title }<br>
title5 : <%=request.getParameter("title") %><br>
<br>
singer1 : ${musicBean.singer }<br>
singer2 : ${musicBean.getSinger() }<br>
singer3 : ${param.singer }<br>
singer4 : ${requestScope.musicBean.singer }<br>
singer5 : <%=request.getParameter("singer") %><br>
<br>
price1 : ${musicBean.price }<br>
price2 : ${musicBean.getPrice() }<br>
price3 : ${param.price }<br>
price4 : <%=request.getParameter("price") %><br>
price5 : ${requestScope.musicBean.price }<br>
title1 : ${musicBean.title }<br>
title2 : ${musicBean.getTitle() }<br>
- 객체의 이름을 소문자로 쓰는 이유는 자동으로 model.addAttribute("musicBean",mb); 으로 설정이 되므로 소문자로 작성한다.
result4.jsp
<%@page import="com.spring.ex.MusicBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
input4 요청 => result4.jsp<br>
title1 : ${mu.title }<br>
title2 : ${mu.getTitle() }<br>
title3 : ${requestScope.mu.title }<br>
title4 : ${param.title }<br>
title5 : <%=request.getParameter("title") %><br>
title6 : <%=((MusicBean)request.getAttribute("mu")).getTitle()%><br>
<br>
singer1 : ${mu.singer }<br>
singer2 : ${mu.getSinger() }<br>
singer3 : ${requestScope.mu.title }<br>
singer4 : ${param.singer }<br>
singer5 : <%=request.getParameter("singer") %><br>
singer6 : <%=((MusicBean)request.getAttribute("mu")).getSinger()%><br>
<br>
price1 : ${mu.price }<br>
price2 : ${mu.getPrice() }<br>
price3 : ${requestScope.mu.price }<br>
price4 : ${param.price }<br>
price5 : <%=request.getParameter("price") %><br>
price6 : <%=((MusicBean)request.getAttribute("mu")).getPrice()%><br>
'BACK END > Spring' 카테고리의 다른 글
3일(08.19) Autowired (0) | 2022.08.19 |
---|---|
3일(08.19) Redirect (0) | 2022.08.19 |
2일차(08.18) MVC PersonController (0) | 2022.08.18 |
2일(08.18) MCV TestController (0) | 2022.08.18 |
2일(08.18) ExampleController (0) | 2022.08.18 |