1. ๋ธ๋ผ์ฐ์ ์๋ก ๊ณ ์นจ ํ ๋๋ง๋ค ๋๋ค ์ฃผ์ฌ์๊ฐ ๋์ค๋ ์์
package com.fastcampus.ch2;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
// ํด๋น ์๋ฐ ํด๋์ค๋ฅผ ์ปจํธ๋กค๋ฌ๋ก ๋ฑ๋ก
// ์ปจํธ๋กค๋ฌ๋ก ๋ฑ๋กํ๋ฉด, ๋ธ๋ผ์ฐ์ (view)์์ ์ด๋ค ์์ฒญ์ด ์์ ๋,
// ์ด ํด๋์ค์ ๋ด์ฉ(model)๊ณผ ์ผ์นํ๋ฉด ์ด ํด๋์ค๋ฅผ ์ฐ๊ฒ ๋ค๊ณ ์ ์ธํ๋ ๊ฒ์.
// Controller๋ view์ Model์ ๊ฐ๊ต ์ญํ
@Controller
public class Twodice {
@RequestMapping("/rollDice")
// reponse๋ง ํ์ํ ์ด์ : ์ด๋ฒ ๊ฒฝ์ฐ์๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ ๋ ๋ณด๋ธ ๊ฐ๋ค์ด ์๊ธฐ ๋๋ฌธ์
public void main (HttpServletResponse response) throws IOException {
int indx1 = (int)(Math.random()*6)+1;
int indx2 = (int)(Math.random()*6)+1;
//ํด๋น ์ปจํ
์ธ ์ ๋ด๊ธด ๋ด์ฉ์ด text์ธ์ง binary์ธ์ง ์ปดํจํฐ์๊ฒ ์๋ ค์ฃผ๋ ๊ฒ
// ์ฌ๊ธฐ์ text ์ค html์์ ์๋ ค์ค.
response.setContentType("text/html");
// ํด๋
์ ๋ญ๋ก ํด์ค์ผ ํ๋ ์ง ์๋ ค์ฃผ๋ ๊ฒ. ์ด๊ฑฐ ์์ผ๋ฉด ํ๊ธ ๊นจ์ง
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<img src = 'resources/img/dice"+indx1+ ".jpg'>");
out.println("<img src = 'resources/img/dice"+indx2+".jpg'>");
out.println("</body>");
out.println("</html>");
}
}
** ์ฐธ๊ณ **
Math.random()์ double ํ ๋ฐํ ๋งค์๋ ์ด๊ณ , 0.0~1.0 ๋ฏธ๋ง ์ฌ์ด์ ํน์ ๊ฐ์ ๋ฐํํ๋ ํจ์์ด๋ค.
int ๋ก ํ ๋ณํ ํ๋ฉด ๋ค์ ์์์ ๋ค ์งค๋ฆฌ๊ณ *6ํ๋ฉด ์ต๋๊ฐ 0.9xx*6์ด๋๊น 5.4xxx์ด๋ค.
๋ฐ๋ผ์ 0~ 5๊ฐ ๋์ฌ ์ ์๊ณ ์ฌ๊ธฐ๋ค๊ฐ +1์ ํ์ผ๋ฏ๋ก 1~6์ด ๋์ฌ ์ ์๋ค.
2. ์ด๋ก ์ค๋ช
(1) ๋ฆฌ์์ค์ ๋ํ์ฌ
์๋ฒ์์ ์ ๊ณตํ๋ ๋ฆฌ์์ค์๋ ๋์ ๋ฆฌ์์ค์ ์ ์ ๋ฆฌ์์ค๊ฐ ์๋ค.
๋์ ๋ฆฌ์์ค๋ ์คํํ ๋ ๋ง๋ค ๊ฐ์ด ๋ฐ๋๋ ํ๋ก๊ทธ๋จ, ๋ผ์ด๋ธ ๋ฐฉ์ก(์คํธ๋ฆฌ๋ฐ) ๊ฐ์ ๊ฒ์ด ์๋ค.
์ ์ ๋ฆฌ์์ค๋ ํ์ผ ํํ๋ก ๋์ด ์์ด ๋ฐ๋์ง ์๋ ๊ฒ (์ด๋ฏธ์ง, js, css, html) ๋ฑ์ด ์๋ค.
3. ์ค์ค๋ก ํด๋ณด๊ธฐ
package com.fastcampus.ch2;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Twodice {
@RequestMapping("/rollDice")
public void main(HttpServletResponse response) throws IOException {
int index1 = (int)(Math.random()*6) + 1;
int index2 = (int)(Math.random()*6) + 1;
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<img src = 'resources/img/dice" +index1+".jpg'>");
out.println("<img src = 'resources/img/dice" +index2+".jpg'>");
out.println("</body>");
out.println("</html>");
}
}
ํ๋ฆฐ ๊ฒ
@RequestMapping ๋ค์์๋ ์ด๋ค ์ฃผ์๋ก ๋ค์ด์์ผ ์ด ํด๋์ค๊ฐ ์คํ๋ ๊ฒ์ธ์ง ์ฃผ์๋ฅผ ์ ์ด์ผํ๋ค.
< 2๋ฒ์งธ ์ค์ค๋ก ํด๋ณด๊ธฐ 23.03.31 >
์ด๋ฒ์๋ ์๋ณด๊ณ ํด๋ณด๊ธฐ + jsp ํ์ด์ง๋ก ๋ฐ์์ ํด๋ณด๊ธฐ
์ ๋ณด๊ณ ํด๋ณผ๋ ค ํ๋๋ฐ, ์ง์ ์น๋๊น ์คํ๊ฐ ๋์ ์์ฒญ ํด๋งธ๋ค. .setContentType("text/html")์ธ๋ฐ "txt/html"์ด๋ผ ์ ์ด์
๊ฒฝ๋ก ์ ์ ํ ๋๋ง๋ค ๊ณ์ ์ด์ํ ํ์ผ์ด ๋ค์ด ๋์๋ค. ๋คํํ ์นดํ์ ๋ฌผ์ด์ ๋ด๊ฐ ์คํ๋ฌ์์ ์ธ์ง ํ๋ค.
๊ทธ๋ฆฌ๊ณ resources ํด๋๊ฐ ๋ ๊ฐ์ธ๋ฐ, ๋ด๊ฐ ์ฌ์ฉํด์ผ ํ๋ ๊ฑด WebApp ์๋์ ์๋ resources ํด๋์ธ๋ฐ, ์๊พธ ์ต์๋จ์ resources ํด๋ ์จ๊ฐ์ง๊ณ ์ด๋ฏธ์ง๋ฅผ ๋ชป ์ฐพ์๋ค.
์ด ๋๋ถ๋ถ์ ๋งํ์ ๊ฐ์๋ฅผ ๋ดค๋ค.
๊ฒฐ๊ตญ ์ฑ๊ณตํ๋ค.
๊ทธ๋ฆฌ๊ณ Jsp ํ์ด์ง๋ก ๋ฐ์์ ํด๋ณด๊ธฐ
model.addAttribute()์์ ()์์ map ํํ๋ก <๋ณ์์ด๋ฆ ,๊ฐ>์ผ๋ก ๋ฃ์ด์ค์ผ ํ๋ค๋ ๊ฒ์ ๊น๋จน์๋ค.
Jsp์์ ํด๋น ๋ณ์ ๊น ๋๋ ${} ๋๊ดํธ ํ ํ๋ฆฟ์ผ๋ก ํ๋ฒ ๊ฐ์ธ์ผ ํ๋ค. ์ด๊ฒ ์์ผ๋ฉด ๋ณ์์ธ์ง check๋ฅผ ๋ชปํด์ ๋ด์ฉ๋ฌผ์ด ์๋๋ผ ๋ณ์ ๊ฐ ์ ์ฒด๋ฅผ ์ถ๋ ฅํด๋ฒ๋ฆฐ๋ค.
js ์ฒ๋ผ ``์ด๊ฑฐ ์ด ๋ค์ ${} ํด์ผํ๋์ง ์์๋๋ฐ ๊ทธ๊ฒ ์๋์๋ค. ๊ทธ๋ฅ "" ์์ ${}๋ฅผ ์จ์ฃผ๋ฉด ๋๋ค.
dice${idx]๋ผ๊ณ ์จ์ค์ผ ํ๋๋ฐ ๋ ์ฌ์ด ๊ณต๋ฐฑ์ ๋ฌ์ ๋ ์๋ฌ๊ฐ๋ฌ๋ค.
์ด 1์๊ฐ 16๋ถ์ด ๊ฑธ๋ ธ๋ค.