[ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Hello,World! ์ถœ๋ ฅ ]

 

Spring - [intelliJ] ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Hello,World! ์ถœ๋ ฅ

[ Hello,World ์ถœ๋ ฅํ•˜๊ธฐ ] Spring - [IntelliJ] Hello World ์ถœ๋ ฅํ•˜๊ธฐ[ Spring MVC์— ๋Œ€ํ•˜์—ฌ ] Spring - Spring MVC๋ฅผ ์•Œ์•„์•ผ ์‹œ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ฒ˜์Œ์—” ๋Œ€์ถฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ คํ–ˆ์ง€๋งŒ,์ด๋Ÿด์ˆ˜๊ฐ€! ์•„๋Š” ๊ฒƒ์ด ๋ฏธ์•ฝํ•˜

post-this.tistory.com

 

 


 

 

๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด
๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ

 

 

 

 

1. ๋™์ž‘ํ™”๋ฉด๊ณผ ์ „์ฒด์ฝ”๋“œ

 

๋™์ž‘ํ™”๋ฉด

 

 

 

์ž๋ฐ”์ฝ”๋“œ

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.*;

@Controller
public class RandomNum {

    Random rd = new Random();
    Set<Integer> lottoSet = new TreeSet<>();

    @GetMapping("/")
    public String firstPage() {
        return "button";
    }

    @GetMapping("/Random")
    public String randomPage(Model model) {

        while(true) {
            int ranNum = rd.nextInt(45)+1;
            lottoSet.add(ranNum);

            if(lottoSet.size() == 6) {
                break;
            }
        }

        model.addAttribute("Number",lottoSet);

        return "button";
    }


}

 

 

html ์ฝ”๋“œ

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ</title>
    <link rel="stylesheet" href="css/style.css" type="text/css">


</head>

<body>

<div class="top">
    <div class="center">
        <h1> <b> ๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ๊ธฐ </b> </h1>
        <h1> Lotto</h1>


        <div class="numPadding">
            <h1 th:text="${Number}"> RandomNumber </h1>
         </div>

        <div class="padding">
            <form th:action="@{/Random}" method = "get">
                <button class="btn" type="submit" > ๋ฒ„ํŠผ </button>
            </form>
        </div>
    </div>
</div>

</body>
</html>

 

 

css ์ฝ”๋“œ

.top {
    margin-top: 100px;
    margin-bottom: 100px;
    margin-left: 50px;
    margin-right: 50px;
}

.padding {
    padding-top:100px;
    padding-bottom:10px;
    padding-left:auto;
    padding-right:auto;
}

.numPadding {
    padding-top:100px;
    padding-bottom:0px;
    padding-left:0px;
    padding-right:0px;
}


.center {
    text-align: center;
}

.btn {
    background-color: #AC72E5;
    color: white;
    border: none;
    border-radius:20px;
    width:200px;
    height:60px;
    font-size:40px;
    text-align: center;
    cursor: pointer;
}

 

 

 

 


 

 

 

 

2. ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์ง€ ์ƒ๊ฐํ•˜๊ธฐ ๐Ÿง˜๐Ÿป‍โ™€๏ธ

 

 

๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Hello,World! ๋ฌธ์žฅ์ด ์ถœ๋ ฅ๋˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์กฐ๊ธˆ๋งŒ ์ฝ”๋“œ๋ฅผ ๋ฐ”๊พธ๋ฉด ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ๋ฅผ ์ถœ๋ ฅ๋˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

 

[ ๋ณ€๊ฒฝ์‚ฌํ•ญ ]

 

โ–ก ํ…์ŠคํŠธ์™€ ๋ฒ„ํŠผ ๊ฐ€์šด๋ฐ ์ •๋ ฌํ•˜๊ธฐ.

     โ–ป  css๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ.

 

โ–ก ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅ (์ค‘๋ณตX, ์˜ค๋ฆ„์ฐจ์ˆœ)

    โ–ป  java.util.Random ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉ

 

 

 

 


 

 

 

 

 

3. ์ฒซ๋ฒˆ์งธ๋กœ ๋ณด์—ฌ์ค„ ํ™”๋ฉด ๋Œ€์ถฉ ๋งŒ๋“ค๊ธฐ.

 

๋””๋ ‰ํ† ๋ฆฌ ์ฐธ๊ณ 

 

 

 

โ–ก Controller ๋””๋ ‰ํ† ๋ฆฌ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์— RandomNum ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ.

 

 

โ–ก RandomNum ํด๋ž˜์Šค์— ์ฒซ ํ™”๋ฉด ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ.

 

@GetMapping("/")
public String firstPage() {
    return "button";
}

 

์ €๋ฒˆ ์˜ˆ์ œ์—์„œ ์„ค๋ช…์„ ์ ์–ด๋‘์—ˆ์ง€๋งŒ, ์งง๊ฒŒ ์„ค๋ช…ํ•ด๋ณด๊ฒ ๋‹ค. ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด @GetMapping์€ ๊ด„ํ˜ธ ์•ˆ์— ์žˆ๋Š” ๊ฒฝ๋กœ์™€ ์š”์ฒญ ๊ฒฝ๋กœ๊ฐ€ ๋งž๋Š”์ง€ ๋ณด๊ณ , ๋งž์œผ๋ฉด ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ˜„์žฌ ์ฝ”๋“œ์—์„  ("/")๋กœ ๋ฃจํŠธ ๊ฒฝ๋กœ๋กœ ๋“ค์–ด์˜ค๋ฉด button.html์„ ๋ฐ˜ํ™˜ํ•˜๋ผ๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

 

 

 

โ–ก  button.html์— ๊ธฐ๋ณธ ๋™์ž‘ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ.

<head>
    <meta charset="UTF-8">
    <title>๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ</title>
</head>

 

title์€ ํƒญ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 

<body>
     <h1> <b> ๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ๊ธฐ </b> </h1>
     <h1> Lotto</h1>

     <h1 th:text="${Number}"> RandomNumber </h1>
        
     <form th:action="@{/Random}" method = "get">
            <button class="btn" type="submit" > ๋ฒ„ํŠผ </button>
     </form>

</body>

 

body ์•ˆ์— ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๊ธธ ์›ํ•˜๋Š” ๋ฌธ์žฅ๊ณผ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์—ˆ๋‹ค. $Number์—๋Š” ๋žœ๋ค์œผ๋กœ ์ถœ๋ ฅํ•œ 6๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ณต๊ฐ„์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๋ฉด get ๋ฐฉ์‹์œผ๋กœ Controller์—๊ฒŒ ์ „๋‹ฌ๋œ๋‹ค.

 

์ด ์ฝ”๋“œ์˜ ๋™์ž‘ ๋ฐฉ์‹์€ ์ด์ „์— ์ž‘์„ฑํ•œ Hello,World์— ์ž์„ธํ•˜๊ฒŒ ์ ์–ด๋†จ๋‹ค. ํ•˜์ง€๋งŒ ๋ณต์Šตํ• ๊ฒธ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…์„ ๋ง๋ถ™์—ฌ๋ณด๊ฒ ๋‹ค. ํƒ€์ž„๋ฆฌํ”„๋Š” ์ˆœ์ˆ˜ํ•œ html์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋™์ ์ธ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜์˜๋˜์–ด์•ผํ•  ์ฝ”๋“œ์— th๋ฅผ ๋ถ™์—ฌ์ฃผ์—ˆ๋‹ค.

 

๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ๊ธฐ์™€ Lotto๋Š” ์›€์ง์ด์ง€ ์•Š๋Š”๋‹ค. ํ…์ŠคํŠธ๋กœ ํ™”๋ฉด์— ๊ทธ์ € ์ถœ๋ ฅ๋˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋ฒ„ํŠผ์˜ ๊ฒฝ์šฐ, ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๋ฉด /Random์ด๋ผ๋Š” ๊ฒฝ๋กœ๋ฅผ get ๋ฐฉ์‹์œผ๋กœ Controller์—๊ฒŒ ๋ณด๋‚ธ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋™์ ์œผ๋กœ ์›€์ง์ด๊ฒŒ ๋˜๋ฏ€๋กœ form์— th๊ฐ€ ๋ถ™๊ฒŒ๋œ ๊ฒƒ์ด๋‹ค. ๊ทธ ์œ„์˜ ์ฝ”๋“œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ์ฒซ ํ™”๋ฉด์—์„  ๋žœ๋คํ•œ ์ˆซ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‹ค์Œ ํ™”๋ฉด์— ์ˆซ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜์•ผํ•œ๋‹ค. ์ด๊ฒŒ ๋ฐ”๋กœ ๋™์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜์˜ํ•œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ${Number}์— th๊ฐ€ ๋ถ™์€ ๊ฒƒ์ด๋‹ค.

 

์ž ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ฒซ ํ™”๋ฉด ํŽ˜์ด์ง€๋ฅผ ๋„์› ๋‹ค.

 

 

 

 


 

 

 

 

 

3. css ๋งŒ๋“ค๊ธฐ.

 

์ด ๋ถ€๋ถ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์กฐ๊ธˆ ํ—ค๋งธ๋‹ค.

 

 

 

 

โ–ก  resources ์•ˆ์— static ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.

 

โ–ก  static ์•ˆ์— css ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.

 

โ–ก  ๊ทธ๋Ÿฌ๋ฉด ์ €๋ ‡๊ฒŒ static.css๊ฐ€ ์™„์„ฑ๋œ๋‹ค. 

 

โ–ก  static.css ๋ฐ‘์— file - style.css๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

 

 

 

 


 

 

 

 

 

3. css ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ.

 

 

โ–ก  ๋ชจ๋“  ์š”์†Œ ์ค‘์•™์— ๋ฐฐ์—ดํ•˜๊ธฐ.

.center {
    text-align: center;
}

 

 

 

โ–ก  margin์œผ๋กœ ์—ฌ๋ฐฑ์„ ์ด ์„ธ ๊ฐœ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ์„ธ๊ตฌ์—ญ์œผ๋กœ ์—ฌ๋ฐฑ์„ ์„ค์ •ํ•  ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์„œ first๋Š” [๋กœ๋˜๋ฒˆํ˜ธ์ƒ์„ฑ๊ธฐ-Lotto-๋žœ๋ค์ˆซ์ž 6๊ฐœ-๋ฒ„ํŠผ]์„ ๊ฐ์‹ผ ๋ฐ– ๋ถ€๋ถ„์— ์—ฌ๋ฐฑ์„ ๋„ฃ์„ ๊ฒƒ์ด๊ธฐ์—, ์ƒํ•˜์ขŒ์šฐ์— ์›ํ•˜๋Š” ์—ฌ๋ฐฑ์˜ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅํ–ˆ๋‹ค.

 

.first {
    margin-top: 100px;
    margin-bottom: 100px;
    margin-left: 50px;
    margin-right: 50px;
}

.second {
    margin-top: 100px;
    margin-bottom: 0px;
    margin-left: 0px;
    margin-right: 0px;
}

.third {
    margin-top: 200px;
    margin-bottom: 0px;
    margin-left: 0px;
    margin-right: 0px;
}

 

 

 

 

 

โ–ก  ๋ฒ„ํŠผ ์ปค์Šคํ…€ํ•˜๊ธฐ.

.btn {
    background-color: #AC72E5;
    color: white;
    border: none;
    border-radius:20px;
    width:200px;
    height:60px;
    font-size:40px;
    text-align: center;
    cursor: pointer;
}

 

background-color๋Š” ์ž์‹ ์ด ์›ํ•˜๋Š” ๋ฐฐ๊ฒฝ์ƒ‰์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค. ๊ฒ€์ƒ‰์ฐฝ์— ์ปฌ๋Ÿฌ์ฐจํŠธ๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‹ค์–‘ํ•œ ์‚ฌ์ดํŠธ๊ฐ€ ๋œฌ๋‹ค. ์•„๋ฌด ๊ณณ์— ๋“ค์–ด๊ฐ€ ์›ํ•˜๋Š” ์ปฌ๋Ÿฌ๋ฅผ ์„ ํƒํ•˜์—ฌ HEX ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค. color๋Š” ๊ธ€์ž ์ƒ‰์ƒ์ด ๋˜๊ณ  ์ด๊ฒƒ๋„ ์›ํ•˜๋Š” ์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค. border๋Š” ํ…Œ๋‘๋ฆฌ, border-radius๋Š” ํ…Œ๋‘๋ฆฌ์˜ ๊ณก์„ ์„ ์˜๋ฏธํ•œ๋‹ค. ์•ฝ๊ฐ„ ๋‘ฅ๊ทผ ๋ฒ„ํŠผ์„ ์›ํ•ด์„œ 20px๋กœ ์ ์–ด์ฃผ์—ˆ๋‹ค. width์™€ height๋Š” ๋ฒ„ํŠผ ๋„ˆ๋น„์™€ ๋†’์ด๊ฐ€ ๋˜๊ณ , font-size๋Š” ๊ธ€์ž ํฌ๊ธฐ, text-align์€ ๊ธ€์ž ์ค‘์•™๋ฐฐ์—ด์„ ์˜๋ฏธํ•œ๋‹ค. cursor๋Š” ๋ฒ„ํŠผ ์œ„์— ๋ˆŒ๋ €์„ ๋•Œ ๋งˆ์šฐ์Šค ๋ชจ์–‘์ด ๋ณ€๊ฒฝ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ปค์„œ ๋ชจ์–‘ ๋ณ€๊ฒฝ

 

 

 

 


 

 

 

 

4. html์— css ์ ์šฉ์‹œํ‚ค๊ธฐ.

 

 

โ–ก  html์— css ์—ฐ๊ฒฐํ•˜๊ธฐ.

<head>
    <meta charset="UTF-8">
    <title>๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ</title>
    <link rel="stylesheet" href="css/style.css" type="text/css">
</head>

 

head์— ๋งŒ๋“ค์–ด๋‘” css๋ฅผ link๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•  ๊ฒƒ์ด๋‹ค. rel์€ ์†์„ฑ ๊ฐ’์œผ๋กœ ๋ฐ˜๋“œ์‹œ ์ ์–ด์ค˜์•ผํ•œ๋‹ค. ๊ฐ’์œผ๋กœ "stylesheet"๋ฅผ ์ ์—ˆ๋‹ค. ์˜๋ฏธ๋Š” ๋งํฌ๋œ ํŒŒ์ผ์„ ์Šคํƒ€์ผ์‹œํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๊ณ  ์•Œ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. href๋Š” ์Šคํƒ€์ผ์‹œํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ์ ์–ด์ฃผ๊ณ  type์—” ๋งํฌ๋œ ํŒŒ์ผ์˜ ํƒ€์ž…์„ ์ง€์ •ํ•œ๋‹ค. 

 

 

 

โ–ก  css ์ ์šฉ์‹œํ‚ค๊ธฐ.

<div class="first">
    <div class="center">
        <h1> <b> ๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ๊ธฐ </b> </h1>
        <h1> Lotto</h1>


        <div class="second">
            <h1 th:text="${Number}"> RandomNumber </h1>
         </div>

        <div class="third">
            <form th:action="@{/Random}" method = "get">
                <button class="btn" type="submit" > ๋ฒ„ํŠผ </button>
            </form>
        </div>
    </div>
</div>

 

css์—์„œ .first์— ์„ค์ •ํ•œ margin(์—ฌ๋ฐฑ)์„ ๋ชจ๋“  ์š”์†Œ์— ์ ์šฉ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ๋กœ ์ ์–ด์ฃผ์—ˆ๋‹ค. css ์š”์†Œ๋ฅผ ์ ์šฉ์‹œํ‚ฌ๋•Œ ์ง€์ •ํ•œ ์ด๋ฆ„์—์„œ ์˜จ์ ์„ ๋บ€ ์ด๋ฆ„์„ class=" "์— ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ์ด์–ด์„œ ๋ชจ๋“  ์š”์†Œ์— ์ ์šฉ์‹œํ‚ฌ ๊ฐ€์šด๋ฐ ์ •๋ ฌ์„ ๊ทธ ๋‹ค์Œ์œผ๋กœ ์ ์–ด ๊ธฐ๋ณธ์ ์ธ ํ…Œ๋‘๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์ด ์•ˆ์— ๋“ค์–ด๊ฐˆ ์š”์†Œ๋“ค์€ ๊ฐ€์šด๋ฐ ์ •๋ ฌ์„ ํฌํ•จํ•˜์—ฌ ์ƒ•ํ•˜ 100px, ์ขŒ•์šฐ 50px๊ฐ€ ๋„์–ด์ ธ์„œ ์‹œ์ž‘๋  ๊ฒƒ์ด๋‹ค. 

 

๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ๊ฐ€ Lotto์™€ ๋–จ์–ด์ ธ์„œ ์œ„์น˜ํ•˜๊ธธ ์›ํ•˜๋ฏ€๋กœ ์ƒ 100px๋งŒ ๋„์–ด์ง„ .second๋ฅผ class์— ๋„ฃ์–ด์ค€๋‹ค. ๊ทธ ํ›„ 6๊ฐœ์˜ ๋žœ๋ค ์ˆซ์ž์™€ ๋ฒ„ํŠผ์ด ์ผ์ •๊ฐ„๊ฒฉ ๋–จ์–ด์ง€๊ธธ ์›ํ•˜๋‹ˆ .third๋ฅผ ์ ์–ด ๊ฐ์‹ธ์ค€๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฒ„ํŠผ์—๋Š” <button class="btn"...>์„ ์ ์–ด css๋ฅผ ์ ์šฉ์‹œํ‚จ๋‹ค.

 

 

 

 


 

 

 

 

5. ๋žœ๋คํ•œ ์ˆซ์ž ๋‚˜์˜ค๋„๋ก ์ถœ๋ ฅํ•˜๊ธฐ.

 

โ–ก ์ „์ฒด์ฝ”๋“œ

@Controller
public class RandomNum {

    Random rd = new Random();
    Set<Integer> lottoSet = new TreeSet<>();

    @GetMapping("/")
    public String firstPage() {
        return "button";
    }

    @GetMapping("/Random")
    public String randomPage(Model model) {

        while(true) {
            int ranNum = rd.nextInt(45)+1;
            lottoSet.add(ranNum);

            if(lottoSet.size() == 6) {
                break;
            }
        }

        model.addAttribute("Number",lottoSet);

        return "button";
    }


}

 

 

 

 

โ–ก ๋žœ๋ค์„ ์‚ฌ์šฉํ•  ํ•จ์ˆ˜ ์ •์˜

Random rd = new Random();
Set<Integer> lottoSet = new TreeSet<>();

 

Java์—์„œ ์ œ๊ณตํ•˜๋Š” Random ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ rd๋ผ๊ณ  ๋ณ€์ˆ˜๋ช…์„ ๋„ฃ์—ˆ๋‹ค. ์ดˆ๋ฐ˜์— ์–ด๋–ค ์‹์œผ๋กœ ๋งŒ๋“ค์ง€ ๊ตฌ์ƒํ•  ๋•Œ, ์ค‘๋ณต์ด ์—†์œผ๋ฉด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ ๋ฐฐ์—ด๋กœ ๋‚˜์˜ค๋Š” ๊ฑธ ์›ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ TreeSet์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. TreeSet์€ ์ด์ง„๊ฒ€์ƒ‰ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ปฌ๋ ‰์…˜ ํด๋ผ์Šค์ธ๋ฐ, ์ด์ง„๊ฒ€์ƒ‰ํŠธ๋ฆฌ ์ค‘ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๋กœ ์ด๋ค„์ ธ์žˆ๋‹ค. ์•„๋งˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ํ•˜๊ฑฐ๋‚˜, ์ˆ˜์—…์„ ๋“ค์€ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค. 

 

Set ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง„ ์•Š์ง€๋งŒ, ์ €์žฅ ์ˆœ์„œ๋Š” ์ƒ๊ด€ํ•˜์ง€ ์•Š๋Š”๋‹ค. HashSet์„ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ๋˜๋ฒˆํ˜ธ์ถœ๋ ฅ์—์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ œ๋Œ€๋กœ ์ด๋ค„์ง€์ง€ ์•Š๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ TreeSet์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ถ€๋ชจ๋…ธ๋“œ์™€ ์™ผ์ชฝ ๋…ธ๋“œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‚˜์—ด๋œ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋‚˜์ค‘์— ์˜ฌ๋ ค๋ณด๋„๋ก ํ•˜๋ฉฐ, ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋ธ”๋กœ๊ทธ๋ฅผ ์ถœ์ฒ˜์— ๋‚จ๊ฒจ๋†“๊ฒ ๋‹ค.

 

 

๊ทธ๋ ‡๊ฒŒ TreeSet์„ ์ด์šฉํ•˜์—ฌ ๋žœ๋ค ์ˆซ์ž๋ฅผ lottoSet์— ์ €์žฅ๋˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

 

 

 

โ–ก ๋žœ๋ค์œผ๋กœ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ณ  ๋ฐ˜ํ™˜ํŽ˜์ด์ง€์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ.

@GetMapping("/Random")
public String randomPage(Model model) {

    while(true) {
        int ranNum = rd.nextInt(45)+1;
        lottoSet.add(ranNum);

        if(lottoSet.size() == 6) {
            break;
        }
    }

    model.addAttribute("Number",lottoSet);

    return "button";
}

 

@GetMapping์— ๋“ค์–ด์˜ฌ ๊ฒฝ๋กœ๋ฅผ ์ ์–ด์ค€๋‹ค. ํ˜„์žฌ ์ฝ”๋“œ์—์„  /Random์ด๋ผ ์ ์—ˆ๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๊ฒŒ ๋˜๋ฉด form์—์„œ Random ๊ฒฝ๋กœ๋ฅผ get ๋ฐฉ์‹์œผ๋กœ Controller์—๊ฒŒ ๋ณด๋‚ด๋„๋ก ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์š”์ฒญ ๊ฒฝ๋กœ์— ๋งž๊ฒŒ ์ˆ˜ํ–‰ํ•  ๋ฉ”์„œ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด @GetMapping์— /Random์„ ์ž‘์„ฑํ–ˆ๋‹ค.

 

์ž ์ด์ œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด randomPage ๋ฉ”์„œ๋“œ๋Š” ์ˆ˜ํ–‰๋  ๊ฒƒ์ด๋‹ค. ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์ฝ”๋“œ์ธ while๋ฌธ์œผ๋กœ ๊ฐ„๋‹ค. lottoSet์˜ ํฌ๊ธฐ๊ฐ€ 6์ด ์•„๋‹ˆ๋ผ๋ฉด while์€ ๊ณ„์† true์ผ ๊ฒƒ์ด๊ณ , ๋žœ๋คํ•œ ์ˆซ์ž๋ฅผ ๋ฝ‘์„ ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ nextInt(45)+1์˜ ์˜๋ฏธ๋Š”, 45 = 0 ~ 44๊นŒ์ง€์˜ ์ด 45๊ฐœ, +1 = 1์”ฉ ๋”ํ•œ 1 ~ 45๋กœ ๋ฐ”๊พผ ๊ฒƒ์ด ๋œ๋‹ค.

 

๋žœ๋ค ์ˆซ์ž์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰์„ ํ•˜๊ฒŒ๋˜๋ฉด for๋ฌธ์ด ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. ๋ฌผ๋ก  for๋ฌธ์œผ๋กœ ์ž‘์„ฑ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‚˜๋Š” while๋ฌธ ์‚ฌ์šฉ์„ ์ž˜ ์•ˆํ•ด๋ด์„œ while๋ฌธ์œผ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค. for๋ฌธ ์ฝ”๋“œ๋Š” ์•„๋ž˜์— ์˜ฌ๋ ค๋†“๊ฒ ๋‹ค.

 

์ด์ œ ๋งˆ์ง€๋ง‰์œผ๋กœ Model์„ ์ด์šฉํ•˜์—ฌ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ์˜ ๋ฐฐ์—ด์„ ๋ทฐ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋ณด๋‚ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. Model์— ๊ด€ํ•œ ์„ค๋ช…๋„ ์•ž์— ํ–ˆ๋˜ Hello,World!์— ์ ์–ด๋’€๋‹ค. ์—ฌ๊ธฐ์„œ ๋ณต์Šตํ•  ๊ฒธ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ ๋ทฐ๋กœ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ html์— ์žˆ๋Š” Number์— lottoSet์„ ๋ณด๋‚ด๊ณ  return์„ ํ†ตํ•ด ๋‹ค์‹œ button ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ–ˆ๋‹ค.

 

 

 

 

โ–ก for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์ž‘์„ฑํ•œ Controller

package com.LottoWeb.LuckyLotto.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.*;

@Controller
public class RandomNum {

    Random rd = new Random();
    Set<Integer> lottoSet = new TreeSet<>();

    @GetMapping("/")
    public String firstPage() {
        return "button";
    }

    @GetMapping("/Random")
    public String randomPage(Model model) {

        for(int i=1; lottoSet.size() < 6; i++ ){
            int ranNum = rd.nextInt(45)+1;
            lottoSet.add(ranNum);
        }

        model.addAttribute("Number",lottoSet);

        return "button";
    }


}

 

 

 

 


 

 

[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ (2) ]

 

Spring - [intelliJ,Thymeleaf] ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ(2)

[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ ] Spring - [intelliJ,Thymeleaf] ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ[ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Hello,World! ์ถœ๋ ฅ ] Spring - [intelliJ] ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Hello,World! ์ถœ๋ ฅ[ Hello,World

post-this.tistory.com

 

 

 

๐Ÿชฝ

"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

 

 

 

[ ๋ธ”๋กœ๊ทธ์— ์“ด ๋‚ด์šฉ๋“ค์˜ ์ถœ์ฒ˜๋Š” ์•„๋ž˜์— ์ ์–ด๋‘˜ํ…Œ๋‹ˆ

๋“ค์–ด๊ฐ€์„œ ์ฝ์–ด๋ณด์‹œ๋ฉด ๋”์šฑ ๋„์›€์ด ๋˜์‹ค ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค ]

 


 

 

 

- TreeSet ์ถœ์ฒ˜

 

[Java/์ž๋ฐ”] TreeSet ์‚ฌ์šฉ๋ฒ•

TreeSet์€ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ(binary search tree)๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋Š” ์ •๋ ฌ, ๊ฒ€์ƒ‰, ๋ฒ”์œ„๊ฒ€์ƒ‰(range search)์— ๋†’์€ ์„ฑ๋Šฅ์„ ๋ณด์ด๋ฉฐ TreeSet์€ ์ด์ง„

hstory0208.tistory.com

 

 

 

- ๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑ ์ถœ์ฒ˜ (while)

 

[JAVA] ๋žœ๋ค ์ˆซ์ž(๋‚œ์ˆ˜) ์ƒ์„ฑํ•˜๊ธฐ - Random , Math

๋‚œ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด๋ด…์‹œ๋‹ค ๐Ÿ˜Ž์˜ค๋Š˜์€ ์ž๋ฐ”์—์„œ ๋žœ๋ค ์ˆซ์ž ๋งŒ๋“œ๋Š” ๋ฒ•์„ ์•Œ์•„๋ด…์‹œ๋‹ค. ๊ฐœ๋…์ž๋ฐ”์—์„œ ๋‚œ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.Random ํด๋ž˜์Šค ์‚ฌ์šฉMath.random() ์ฐจ์ด์ 1. Random ํด๋ž˜์Šค๋Š” int, long,

e-you.tistory.com

 

 

 

- html๊ณผ link ์—ฐ๊ฒฐ ์ถœ์ฒ˜

 

HTML <link> rel, type, href

: HTML Link ์š”์†Œ๋Š” ํ˜„์žฌ ๋ฌธ์„œ์™€ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค์™€์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์š”์†Œ๋Š” ์Šคํƒ€์ผ ์‹œํŠธ์— ๋งํฌํ•˜๋Š” ๋ฐ์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. rel="์†์„ฑ ๊ฐ’" : ์š”์†Œ์— ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ๋˜์–ด์•ผ ํ•˜๋Š” ํ•„์ˆ˜ ์†์„ฑ

junbucks7.tistory.com

 

 

 

- ์Šคํƒ€์ผ ์‹œํŠธ ์ถœ์ฒ˜

 

์Šคํƒ€์ผ ์‹œํŠธ๋ž€?

์ œ1์žฅ ์Šคํƒ€์ผ ์‹œํŠธ๋ž€? ใ… ์Šคํƒ€์ผ ์‹œํŠธ๋Š” ๊ธ€๊ผด์˜ ํฌ๊ธฐ๋‚˜ ๋ชจ์–‘, ์ปฌ๋Ÿฌ ๊ทธ๋ฆฌ๊ณ  ๋ฌธ๋‹จ ์„ค์ •์„ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด ์Šคํƒ€์ผ...

blog.naver.com

 

 

 

- ์ปฌ๋Ÿฌ์ฐจํŠธ ์ถœ์ฒ˜

 

colorate | ๋””์ž์ด๋„ˆ์™€ ๊ฐœ๋ฐœ์ž๋ฅผ์œ„ํ•œ ์ƒ‰ ๊ตฌ์„ฑํ‘œ ๋„๊ตฌ.

colorate๋Š” ๋””์ž์ด๋„ˆ์™€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์˜๊ฐ์„ ์ฃผ๋Š” ์ƒ‰ ๊ตฌ์„ฑํ‘œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒ‰์ฑ„ ์ž‘์—…์„ ์œ„ํ•œ ์ž๋ฃŒ๋กœ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

colorate.azurewebsites.net

 

 

 

- CSS ํ…์ŠคํŠธ ๊ฐ€์šด๋ฐ ์ •๋ ฌ ์ถœ์ฒ˜

 

[HTML/CSS] DIV ์•ˆ์˜ ํ…์ŠคํŠธ ๊ฐ€์šด๋ฐ ์ •๋ ฌํ•˜๊ธฐ (๊ฐ€๋กœ, ์„ธ๋กœ)

์ด๋ฒˆ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด div ์•ˆ์— ์žˆ๋Š” text๋ฅผ ๊ฐ€๋กœ, ์„ธ๋กœ๋กœ ๊ฐ€์šด๋ฐ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š” .my-div { border : 1px solid blue; height : 200px; } 1. ๊ฐ€๋กœ๋กœ ๊ฐ€์šด๋ฐ ์ •๋ ฌํ•˜๊ธฐ ์—ฌ๊ธฐ์—์„œ ์†Œ๊ฐœ

hianna.tistory.com

 

 

 

- CSS ๋ฒ„ํŠผ ํฌ๊ธฐ ์กฐ์ • ์ถœ์ฒ˜

 

[HTML/CSS] ๋ฒ„ํŠผ ํฌ๊ธฐ ์กฐ์ •ํ•˜๊ธฐ (padding)

๋ฒ„ํŠผ์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ width, height ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, padding ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํŠผ ํฌ๊ธฐ ์กฐ์ •ํ•˜๊ธฐ (width, height) ๋จผ์ € width, height๋กœ ๋ฒ„ํŠผ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

hianna.tistory.com

 

 

 

- ๋ฒ„ํŠผ ์ปค์Šคํ…€ ์ถœ์ฒ˜

 

์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฒ„ํŠผ ๊ฐ€์šด๋ฐ ์ •๋ ฌ ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

ํŽธ์˜์ƒ ํด๋ž˜์Šค A, B๋กœ ์„ค๋ช…. 1. ํƒœ๊ทธ๋กœ ์—ฌ๋Ÿฌ ๋ฒ„ํŠผ(ํด๋ž˜์Šค B)๋“ค์„ ๊ฐ์‹ธ๋ฉด์„œ ํด๋ž˜์Šค(A) ์ง€์ •ํ•ด์ฃผ๊ณ  2. ํด๋ž˜์Šค A์˜ ์Šคํƒ€์ผ(css)์— text-align: center๋กœ ์ค‘์•™์ •๋ ฌํ•˜๊ณ  3. ํด๋ž˜์Šค B์˜ ์Šคํƒ€์ผ(css)์— inline-block ์†์„ฑ

mangocoding-journal.tistory.com

 

+ Recent posts