BACK END/Spring

3일(08.19) MVC / MusicController

라미보 2022. 8. 19. 09:38

 

 

 

 

💾 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