서버에서 JSP로 데이터 전송

◇ JSP~서버 데이터 전송 포스팅 시리즈 ◇

  1. JSP에서 서버로 데이터 전송 - intro
  2. JSP에서 서버로 데이터 전송 - HTML
  3. JSP에서 서버로 데이터 전송 - JS
  4. 서버에서 JSP로 데이터 전송 - 현재 글

개념

1. 컨트롤러 객체인 자바 파일에서 Model 객체를 사용해 서버 데이터를 저장한다.

import org.springframework.ui.Model;
model.addAttribute("변수명",변수값)

1112sp1

2. jsp 파일에서 ${변수명}을 사용해 데이터를 꺼낸다.

<body>
    ${변수명}
</body>

1112sp2

  • 위 예시에서는 index에서 바로 서버에 저장된 변수가 보이게 했다. 아래와 같은 결과물을 볼 수 있다.

1112sp3

예시1 - 변수 출력하기

  • 서버에 저장된 다양한 변수를 JSP에서 받을 수 있다.

controller java파일

@Controller
public class JSTLController {
    @RequestMapping("/jstlcore")
    public String jstl(Model model) {
        String str1 = "Korea";
        String str2 = null;
        String str3 = "";
        int num = 12345;

        //model에 데이터 담기
        model.addAttribute("str1",str1);
        model.addAttribute("str2",str2);
        model.addAttribute("str3",str3);
        model.addAttribute("num",num);
        return "jstlcore";
    }
}

jsp 파일

<body>
    <div>
        <h1>EL을 이용해 출력하기</h1>
        영문자 : ${str1}<br>널 : ${str2}<br> 빈문자열 : ${str3}<br>정수:${num}
    </div>
</body>

결과

1112sp2-1

예시2 - 객체 출력하기

  • Friend 객체는 다음과 같다. 멤버 변수들이 모두 private하므로 파일 외부에서 접근이 불가하다.

    다시 말해 friend.name 이렇게 접근 불가능하다는 것이다.

import lombok.Data;
@Data
@AllArgsConstructor
public class Friend {
    private String name;
    private int  age;
    private String phone;
}

controller java파일

@Controller
public class JSTLController {
    @RequestMapping("/jstlcore")
    public String jstl(Model model) {
        Friend friend = new Friend("삼장법사", 45,"01021553300");
        //model에 데이터 담기
        model.addAttribute("friend",friend);
        return "jstlcore";
    }
}
  • 그러나 아래 코드를 보면, el표현법에선 멤버 변수에 직접 접근하는 것 처럼 보인다. 그 이유는 friend.name 하면 게터를 부르기 때문이다! 멤버 변수에 직접 접근하는 것은 아니다!

jsp 파일

<body>
    <div>
        <h1>EL을 이용해 출력하기</h1>
        친구 : ${friend.name}, ${friend.age}, ${friend.phone}
    </div>
</body>

결과

1112sp2-2

예시3 - HTML 태그 출력하기

  • html 태그를 스트링에 저장하면, jsp 에서 태그로 읽혀서 화면에 표시해준다.

controller java파일

@Controller
public class JSTLController {
    @RequestMapping("/jstlcore")
    public String jstl(Model model) {
        String tag = "<marquee>이것은 태그입니다.</marquee>";
        //model에 데이터 담기
        model.addAttribute("tag",tag);
        return "jstlcore";
    }
}

jsp 파일

<body>
    <div>
        ${tag}
    </div>
</body>

결과

  • 글씨가 오른쪽에서 왼쪽으로 움직인다. HTML표준 태그는 아니라서 사용하면 안된다고 한다.

1112sp2-3

예시4 - 연산하기

controller java파일

String str1 = "Korea";
String str2 = null;
String str3 = "";
int num = 12345;

jsp 파일

<!-- EL 연산자의 사용 -->
${str2 == null }<br><!-- true -->
${str3 == "" }<br><!-- true -->

${empty str2 }<br><!-- true -->
${empty str3}<br><!-- true -->

${not empty str2 }<br><!-- false -->
${not empty str3}<br><!-- false -->

${str2 == str3 }<br><!-- false -->
  • null과 “” 은 둘 다 empty 하지만 서로 같은 것은 아니다

© 2018. All rights reserved.

Powered by Hydejack v8.5.2