서버에서 JSP로 데이터 전송
in Web Dev on Java Spring
◇ JSP~서버 데이터 전송 포스팅 시리즈 ◇
- JSP에서 서버로 데이터 전송 - intro
- JSP에서 서버로 데이터 전송 - HTML
- JSP에서 서버로 데이터 전송 - JS
- 서버에서 JSP로 데이터 전송 - 현재 글
개념
1. 컨트롤러 객체인 자바 파일에서 Model 객체를 사용해 서버 데이터를 저장한다.
import org.springframework.ui.Model;
model.addAttribute("변수명",변수값)
2. jsp 파일에서 ${변수명}을 사용해 데이터를 꺼낸다.
<body>
${변수명}
</body>
- 위 예시에서는 index에서 바로 서버에 저장된 변수가 보이게 했다. 아래와 같은 결과물을 볼 수 있다.
예시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>
결과
예시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>
결과
예시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표준 태그는 아니라서 사용하면 안된다고 한다.
예시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 하지만 서로 같은 것은 아니다