본문 바로가기
2019/EL JSTL

EL requestScope (ArrayList, HashMap)

by SOLYI 2020. 1. 8.
  • 기존에 java코드에서는 request 객체를 이용하여 값을 넘기고 받을 때에 다음과 같은 코드를 써야만 했다.
    • String name = (String)request.getAttribute("name"); 
    • ArrayList arr = (ArrayList)request.getAttribute("data");
  • 하지만 EL의 requestScope를 사용하면 다른 장점이 있다.
    • null값이 무시되어 null point exception 이 생기지 않으며
    • 위와같이 String 이나 ArrayList로 형변환 시켜줄 필요가 없다.
    • 에러가 나도 무시해버리므로 사용이 용이하다.
  • ArrayList

1. 아래와 같이 el_test.jsp 파일을 생성하여 "name"에 "choi solyi"값을 넣어주고, ArrayList를 생성하여 취미값들을 넣어준다. 그리고 arr를 "data" 로 묶어주고 forward를 이용해 el_test.jsp로 넘겨준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<body>
<%    
    request.setAttribute("name", "choi solyi");
    ArrayList<String> arr = new ArrayList<>();
    arr.add("게임");
    arr.add("음악감상");
    arr.add("독서");
    
    request.setAttribute("data", arr);
%>
 
 <jsp:forward page="el_test.jsp"></jsp:forward>
 
</body>
 

2. forward로 넘겨준 el_test.jsp 파일을 생성하여 값을 받아준다. requestScope.data[0] ... 을 이용해 받아줄수있다.

1
2
3
4
5
이름 ${requestScope.name} <br>
취미1 : ${requestScope.data[0]} <br>
취미2 : ${requestScope.data[1]} <br>
취미3 : ${requestScope.data[2]} <br>
취미4 : ${requestScope.data[3]} <br>
위에 작성한 내용은 3가지 이지만 출력은 4가지를 하였다.
일반 java코드였다면 값이 존재하지않아서 에러가 나는것이 정상이지만,
el코드는 무시하고 취미4 : 만 출력이 된다.

 

  • HashMap

1. jsp 파일을 생성하여 String과 studentDTO를 저장할수있는 HashMap 객체를 생성하여 값을 넣어준다.

 (미리 DTO 파일에서 생성자, 게터세터, toString 을 생성한다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<body>
<%
    HashMap<String, studentDTO> person  = new HashMap<>();
    
    person.put("a1", new studentDTO(1, "choi", 20));
    person.put("a2", new studentDTO(1, "eom", 33));
    person.put("a3", new studentDTO(1, "su", 43));
    person.put("a4", new studentDTO(1, "biin", 53));
    person.put("a5", new studentDTO(1, "babo", 63));
    
    request.setAttribute("people", person);
 
%>
 <jsp:forward page="hashmap_result.jsp"></jsp:forward>
 
</body>
 

2. hashmap_result.jsp 파일을 생성하여 다음과 같이 값을 받을 수 있다.

1
2
3
4
5
6
7
8
9
10
<body>
    ${requestScope.people.a1}<br>
       ${requestScope.people["a2"]}<br>
       ${requestScope.people.a3}<br>
 
       ${requestScope.people.a1.no}<br> <!-- getNo 를 호출 -->
       ${requestScope.people.a2.name}<br>
       ${requestScope.people.a3.age}<br>
       
</body>
 
  • 위 세줄은 toString 대로 출력되고
  • 아래 세줄은다음과 같은 내용이 출력된다
    • key : a1 / value : no
    • key : a2 / value : name
    • key : a3 / value : age
반응형

'2019 > EL JSTL' 카테고리의 다른 글

JSTL 사용방법  (0) 2020.01.08
EL sessionScope (ArrayList)  (0) 2020.01.08
EL parameter 값 가져오기  (0) 2020.01.08
객체 Scope  (0) 2020.01.08
EL 연산자  (0) 2020.01.08