๐Ÿ’ป ์ฝ”๋”ฉ ์ผ๊ธฐ : [Spring] '๋ชจ๋ธ์— ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๊ธฐ'

ybkยท2024๋…„ 4์›” 9์ผ

spring

๋ชฉ๋ก ๋ณด๊ธฐ
7/55
post-thumbnail

๐Ÿ”” Spring MVC์—์„œ ๋ชจ๋ธ์— ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๊ธฐ


๋ชจ๋ธ์— ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์œ ํ˜•์—๋Š” HashMap, ArrayList, JavaBeans ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’Ÿ ํ™œ์šฉ ์˜ˆ์ œ

๐ŸŸฆ HashMap<String, List>

@RequestMapping("sub1")
public void method1(Model model) {
    var data = new HashMap<String, List>();
    data.put("key1", List.of("java", "css"));
    data.put("key2", List.of("react", "vue"));
    data.put("key ์‚ผ", List.of("spring", "node"));
    model.addAttribute("myList", data);

    //view๋กœ ํฌ์›Œ๋”ฉ (/WEB-INF/view/main10/sub1.jsp)
}
<%-- java์™€ css --%>
<p>${myList.key1[0]}์™€ ${myList.key1[1]}</p>

<%-- react์™€ vue --%>
<p>${myList.key2[0]}์™€ ${myList.key2[1]}</p>

<%-- spring์™€ node --%>
<p>${myList["key ์‚ผ"][0]}์™€ ${myList["key ์‚ผ"][1]}</p>
  • HashMap์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ชจ๋ธ์— ์ถ”๊ฐ€ํ•˜๊ณ , ์ด๋ฅผ ๋ทฐ์—์„œ ์ฐธ์กฐํ•˜์—ฌ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฆฌ์ŠคํŠธ๋Š” ๊ณ ์œ ํ•œ ํ‚ค์— ๋งคํ•‘๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ทฐ์—์„œ๋Š” ํ•ด๋‹น ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
  • method1()์—์„œ๋Š” HashMap์„ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ ํ‚ค์— ๋Œ€ํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„, "myList"๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ชจ๋ธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ทฐ์—์„œ๋Š” ๊ฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ${myList[key]} ํ˜•ํƒœ๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŸฆ HashMap<String, String>()

@RequestMapping("sub3")
public void method3(Model model) {
    var data = new HashMap<String, String>();
    data.put("ํฅ๋ฏผ", "๋Ÿฐ๋˜");
    data.put("๋ฏผ์žฌ", "๋ฎŒํ—จ");
    data.put("๊ฐ•์ธ", "ํŒŒ๋ฆฌ");
    data.put("jh", "์ƒŒํ”„๋ž€์‹œ์Šค์ฝ”");

    model.addAttribute("myAttr1", data);
    model.addAttribute("myAttr2", "ํฅ๋ฏผ");
    model.addAttribute("myAttr3", "๋ฏผ์žฌ");
    model.addAttribute("jh", "๊ฐ•์ธ");

}
<%-- ๋Ÿฐ๋˜ --%>
<p>${myAttr1["ํฅ๋ฏผ"]}</p>

<%-- ๋Ÿฐ๋˜ --%>
<p>${myAttr1[myAttr2]}</p>

<%-- ๋ฎŒํ—จ --%>
<p>${myAttr1[myAttr3]}</p>
<p>${myAttr1["๋ฏผ์žฌ"]}</p>

<%-- ์ƒŒํ”„๋ž€์‹œ์Šค์ฝ” --%>
<p>${myAttr1.jh}</p>
<p>${myAttr1["jh"]}</p>

<%-- ํŒŒ๋ฆฌ --%>
<p>${myAttr1[jh]}</p>
  • HashMap์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ด๋ฆ„์— ๋Œ€ํ•œ ์†Œ์† ๋„์‹œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ชจ๋ธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ${myAttr1[myAttr2]} : "myAttr2"๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ธ "ํฅ๋ฏผ"์˜ ์†Œ์† ๋„์‹œ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • ${myAttr1[jh]} : "jh" ์ด๋ฆ„์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ธ "๊ฐ•์ธ"์˜ ์†Œ์† ๋„์‹œ(${myAttr1["๊ฐ•์ธ"]})๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๐ŸŸฆ ArrayList์™€ Map

@RequestMapping("sub4")
public void method4(Model model) {
    var data = new ArrayList<Map>();
    data.add(Map.of("son", "london", "lee", "paris"));
    data.add(Map.of("korea", "seoul", "uk", "london"));
    data.add(Map.of("๋ถ€์‚ฐ", "ํ•ด์šด๋Œ€"));
    data.add(Map.of("์„œ์šธ", "๊ฐ•๋‚จ"));

    model.addAttribute("list1", data);
    model.addAttribute("numbers1", 1);
    model.addAttribute("two", 2);
    model.addAttribute("three", "3");
    model.addAttribute("data1", "son");
    model.addAttribute("data2", "lee");
    
}
<%-- seoul --%>
<p>${list1[1].korea}</p>
<p>${list1[numbers1].korea}</p>

<%--ํ•ด์šด๋Œ€--%>
<p>${list1[2]["๋ถ€์‚ฐ"]}</p>
<p>${list1[two]["๋ถ€์‚ฐ"]}</p>

<%-- ๊ฐ•๋‚จ --%>
<p>${list1[3]["์„œ์šธ"]}</p>
<p>${list1[three]["์„œ์šธ"]}</p>
<p>${list1["3"]["์„œ์šธ"]}</p>
<%--Integer๊ฐ’์ด ์•„๋‹ˆ๋”๋ผ๋„ ์ธ๋ฑ์Šค 3์„ ๊ฐ€๋ฆฌํ‚ด--%>

<%-- london --%>
<p>${list1[0][data1]}</p>

<%-- paris --%>
<p>${list1[0][data2]}</p>
  • ${list1["3"]["์„œ์šธ"]}
    jsp์˜ EL ํŠน์ง• ์ค‘ ํ•˜๋‚˜์ธ ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ์ˆซ์ž๋กœ ํ•ด์„๋˜์–ด ๋ฆฌ์ŠคํŠธ๋‚˜ ๋งต์˜ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    list1[3]["์„œ์šธ"]์—์„œ "3"์€ ๋ฌธ์ž์—ด๋กœ ํ•ด์„๋˜์–ด "3"์ด๋ผ๋Š” ํ‚ค ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋งต์„ ์ฐธ์กฐํ•˜๊ณ , ํ•ด๋‹น ๋งต์—์„œ "์„œ์šธ"์„ ์ฐพ์•„ ํ•ด๋‹น ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๐ŸŸฆ EL์˜ ์†์„ฑ ์ด๋ฆ„

@RequestMapping("sub5")
public void method5(Model model) {
    model.addAttribute("data", "๊ฐ’ 1");
    model.addAttribute("๋ฐ์ดํƒ€", "๊ฐ’ 2");
    model.addAttribute("3", "์‚ผ");

}
<%-- ๊ฐ’ 1 --%>
<p>${data}</p>
<p>${requestScope.data}</p>
<p>${requestScope["data"]}</p>

<%-- ์—๋Ÿฌ  <p>${๋ฐ์ดํƒ€} --%>
<%-- ๊ฐ’ 1 --%>
<p>${requestScope["๋ฐ์ดํƒ€"]}</p>

<%-- 3 ์ถœ๋ ฅ --%>
<%--<p>${3}</p>--%>

<%-- ์‚ผ --%>
<p>${requestScope["3"]}</p>
  • EL์˜ ์†์„ฑ ์ด๋ฆ„์€ ์•ŒํŒŒ๋ฒณ, ์ˆซ์ž, ๋ฐ‘์ค„(_)๋กœ ์ œํ•œ๋˜์–ด ์žˆ์ง€๋งŒ ${requestScope["๋ฐ์ดํ„ฐ"]}์™€ ๊ฐ™์ด ๋Œ€๊ด„ํ˜ธ([]) ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ๊ธ€๋กœ ๋œ ์†์„ฑ ์ด๋ฆ„์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์–ด ํ•ด๋‹น ์†์„ฑ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ${requestScope} : HTTP ์š”์ฒญ์— ๋Œ€ํ•œ ์†์„ฑ(attribute)์„ ์ €์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŸฆ ArrayList์™€ JavaBeans>

public class MyBean101 {
    private String name;
    private String address;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
@RequestMapping("sub6")
public void method6(Model model) {
    var data = new ArrayList<MyBean101>();
    MyBean101 e1 = new MyBean101();
    MyBean101 e2 = new MyBean101();
    MyBean101 e3 = new MyBean101();

    e1.setName("ํฅ๋ฏผ");
    e1.setAge(18);
    e1.setAddress("๋Ÿฐ๋˜");

    e2.setName("๊ฐ•์ธ");
    e2.setAge(30);
    e2.setAddress("ํŒŒ๋ฆฌ");

    e3.setName("์ •ํ›„");
    e3.setAge(40);
    e3.setAddress("์ƒŒํ”„๋ž€์‹œ์Šค์ฝ”");

    data.add(e1);
    data.add(e2);
    data.add(e3);

    model.addAttribute("myList", data);
}
<p>
<ul>
    <%--ํฅ๋ฏผ 18 ๋Ÿฐ๋˜--%>
    <li>${myList[0].name}</li>
    <li>${myList[0].age}</li>
    <li>${myList[0].address}</li>
</ul>
</p>
<p>
<ul>
    <%--๊ฐ•์ธ 30 ํŒŒ๋ฆฌ--%>
    <li>${myList[1].name}</li>
    <li>${myList[1].age}</li>
    <li>${myList[1].address}</li>
</ul>
</p>
<p>
<ul>
    <%--์ •ํ›„ 40 ์ƒŒํ”„๋ž€์‹œ์Šค์ฝ”--%>
    <li>${myList[2].name}</li>
    <li>${myList[2].age}</li>
    <li>${myList[2].address}</li>
</ul>
</p>
  • MyBean101 ๊ฐ์ฒด์ธ e1,e2,e3๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ArrayList์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋ชจ๋ธ์— "myList" ์ด๋ฆ„์œผ๋กœ ์ถ”ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ชจ๋ธ์— ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ทฐ์—์„œ ${myList}๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ${myList[0]}์€ e1์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ${myList[1]}์€ e2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ${myList[2]}์€ e3์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

๐ŸŸฆ ArrayList์™€ JavaBeans 2

import java.util.List;

public class MyBeans104 {

    private String city;
    private List<String> foods;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public List<String> getFoods() {
        return foods;
    }

    public void setFoods(List<String> foods) {
        this.foods = foods;
    }
}
@RequestMapping("sub9")
public void method10(Model model) {
    var data = new ArrayList<MyBeans104>();

    MyBeans104 e1 = new MyBeans104();
    MyBeans104 e2 = new MyBeans104();

    e1.setCity("ํ•œ๊ตญ");
    e1.setFoods(List.of("๊น€์น˜์ฐŒ๊ฐœ", "๋œ์งฑ์ฐŒ๊ฐœ", "์ˆœ๋‘๋ถ€์ฐŒ๊ฐœ"));

    e2.setCity("์ผ๋ณธ");
    e2.setFoods(List.of("๋ˆ๊นŒ์Šค", "์šฐ๋™", "๊ทœ์นด์ธ "));

    data.add(e1);
    data.add(e2);

    model.addAttribute("data", data);
}
<h3>${data[0].city}</h3>
<ul>
    <li>${data[0].foods[0]}</li>
    <li>${data[0].foods[1]}</li>
    <li>${data[0].foods[2]}</li>
</ul>
<h3>${data[1].city}</h3>
<ul>
    <li>${data[1].foods[0]}</li>
    <li>${data[1].foods[1]}</li>
    <li>${data[1].foods[2]}</li>
</ul>
  • method10()์—์„œ๋Š” ArrayList<MyBeans104>๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ฐ๊ฐ์˜ ๊ฐ์ฒด์— ๋„์‹œ์™€ ์Œ์‹ ๋ชฉ๋ก์„ ์„ค์ •ํ•œ ํ›„ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ชจ๋ธ์— "data"๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ทฐ์—์„œ๋Š” "data"๋ผ๋Š” ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๊ฐ์ฒด์˜ ๋„์‹œ์™€ ์Œ์‹ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋„์‹œ๋Š” ${data[index].city}๋กœ, ์Œ์‹ ๋ชฉ๋ก์€ ${data[index].foods[index]}๋กœ ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค.
profile
๊ฐœ๋ฐœ์ž ์ค€๋น„์ƒ~

0๊ฐœ์˜ ๋Œ“๊ธ€