겉바속촉

[html] JSTL-자바영역 변수 출력 본문

IT일기(하반기)/HTML

[html] JSTL-자바영역 변수 출력

겉바속촉 2020. 6. 24. 15:34
728x90
반응형

이번에는

JSTL에서 자바영역의 변수를 출력해보려고 합니다!

 

다음과 같이 코드를 작성해주세요:)

 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

</head>
<body>
<!-- 자바영역에 저장한 변수는 jstl변수로 변환하거나 
request나 session에 저장 후 사용도 가능하다-->

<c:set var="msg" value="Happyday"/>
msg: ${msg}<br>

<%
String name="홍길동";
%>
이름: ${name }<br>

</body>
</html>

 

그리고 컴파일 해보시면

다음과 같이 msg는 값이 나오지만 name은 출력이 되지 않고 있네요?!

자바 영역의 변수라서 그렇습니다

 

그럼

이제 추가로 작성해볼게유

 

 

<방법1> 

주소랑 혈액형을 각각 request 와 session 영역에 저장해줄거에요

그리고 다음과 같이 출력해보면 값이 나오는 것을 확인할 수 있습니다:)

${reqestScope.저장된 변수}

${sessionScope.저장된 변수}

 

 

<방법2>

자바부분의 변수를 jstl영역의 태그로 변경해줄거에요

<c:set var="name1" value="<%=name1%>"/>

그리고 다음과 같이 출력해보면 값이 나오는 것을 확인할 수 있습니다:)

${name1}

 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

</head>
<body>
<!-- 자바영역에 저장한 변수는 jstl변수로 변환하거나 
request나 session에 저장 후 사용도 가능하다-->

<c:set var="msg" value="Happyday"/>
msg: ${msg}<br>

<%
String name="홍길동";
%>
이름: ${name }<br> <!-- request에 저장된 name을 찾아서 출력...값은 안나옴 -->

<%
String addr="서울시 구로구";
request.setAttribute("addr", addr); //request영역에 저장된 것
session.setAttribute("blood", "AB"); //session영역에 저장된 것
%>
주소: ${addr }<br>
주소: ${requestScope.addr }<br>
혈액형: ${sessionScope.blood }<br>

<%
String name1="이영자";
%>

<!-- 자바부분의 변수를 jstl영역의 태그로 변경 -->
<c:set var="name1" value="<%=name1 %>"/>
이름1: ${name1}

</body>
</html>

 

위에서 배웠던 방법 2가지

 

방법1 -> 리퀘스트에 저장한 변수 출력하기

방법2 -> 자바영역 변수를 jstl 영역 변수로 고쳐주기

 

2가지 모두 활용해서 다음과 같은 코드를 연습해볼게요:)

 

<%@page import="java.util.List"%>
<%@page import="java.util.Vector"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

</head>
<body>
<!-- 자바영역에서 벡터 출력 -->
<%
List<String> list=new Vector<String>();
list.add("바나나");
list.add("사과");
list.add("배");
list.add("오렌지");
list.add("키위");
list.add("자몽");

request.setAttribute("list1", list);
%>
<!-- 자바영역에서 벡터선언 후 리퀘스트에 저장한 변수를 출력하기 -->
<c:forEach var="a" items="${list1}">
${a }<br>
</c:forEach>
<hr>

<!-- 자바영역의 벡터변수를 jstl의 변수로 변환 후 출력하기 -->
<c:set var="list2" value="<%=list %>"/>
<c:forEach var="b" items="${list2 }">
${b }<br>
</c:forEach>


</body>
</html>

 

728x90
반응형