Call By Value(CBV)

 

- CBV는 기본적으로 대상에 주소값을 가지지 않는 것으로 값을 할당받는 형태로 사용한다.

- int, float, double, byte와 같은 primitive type(기본형 타입)에 해당.  -> 실제값은 Stack 메모리에 저장됨!

- 예를들어 int p1 = 1 이라고 했을 때 메소드에 인자를 받을 때 p의 주소값을 받는 것이 아닌 p의 값 1을 직접

  받는 것을 말한다.   

 

 

Call By Reference(CBR)

 

- CBR은 대상을 선언했을 때 주소값이 부여가 되는데 어떤 객체를 호출했을 때 그 객체의 주소값을 불러온다.

- String, Array, Date, file, Class, Object와 같은 Reference Type(참조형 타입) -> 주소값은 Heap 메모리에 저장됨!

 

'JAVA' 카테고리의 다른 글

[JAVA] Array와 ArrayList의 차이  (0) 2021.03.12
[JAVA] == 와 equals의 차이점  (0) 2021.03.11
[JAVA] 쓰레드(Thread) 네모박스 튕기기 - 3  (0) 2020.10.03
[JAVA] 쓰레드(Thread) -2  (0) 2020.10.03
[JAVA] 쓰레드(Thread) -1  (0) 2020.10.03

1. c:url 태그

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>
<%@ page import = "java.util.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	
	<p><a href="ex10.jsp">[이전]</a><a href="ex12.jsp">[다음]</a></p>
	
	<h2>c:url 태그</h2>
	<c:url var = "var" value="http://naver.com">
		<c:param name="p1" value="value1"/>
	</c:url>

	<a href = "${var}" >이동</a>
	
	
	<h2>c:redirect 태그</h2>
	<c:redirect url="http://www.daum.net"/>	
	
	
	<p><a href="ex10.jsp">[이전]</a><a href="ex12.jsp">[다음]</a></p>
	
</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

2. fmt:parseData 태그

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>
<%@ page import = "java.util.*" %>


<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>JSTL</title>
</head>
<body>
	<p><a href="ex11.jsp">[이전]</a></p>
	
	<h2>날짜 다루기</h2>
	<h3>fmt:parseData 태그</h3>
	<code>
		&lt;fmt:parseData var ="data1" value="2021-09-03" pattern="yyyy-MM-dd"/>
	</code>
	<!-- 날짜정보를 포맷팅하겠다.(데이터 형식에 맞게 사용) -->
	<fmt:parseDate var="date1" value="2021-09-03" pattern="yyyy-MM-dd"/>
	<h3>fmt:formatDate 태그</h3>
	<fmt:formatDate value="${date1}" pattern="MM/dd/yy"/>
	<p><a href="ex11.jsp">[이전]</a></p>
	<%
		//out.println(new SimpleDateFormat("MM/dd/yy").format(new java.util.Date()));
	%>
	
</body>
</html>

 

fmt:parseData태그는 날짜 정보를 데이터 형식에 맞게 포맷팅하는 태그이다.

'JSP' 카테고리의 다른 글

[JSP] JSTL(Jsp Standard Tag Library)  (0) 2020.10.26
[JSP] JSTL(Jsp Standard Tag Library)  (0) 2020.10.26
[JSP] EL(Expression Language)  (0) 2020.10.26
[JSP] JSP - 액션 태그 종류  (0) 2020.10.26
[JSP] JSP페이지 - 구구단 테이블 만들기  (0) 2020.10.19

1. c:choose 태그 

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>JSTL</title>
</head>
<body>
	
	<p><a href="ex7.jsp">[이전]</a><a href="ex9.jsp">[다음]</a></p>
	
	<!-- switch-case문과 쓰임이 비슷하다. -->
	<h2>c:choose 태그</h2>
	<!-- userid에 hong -->
	<c:set var = "userid" value="admin"/>
	<!-- choose when 분기문에 다중 if문과 같다.-->
	<c:choose>
		<c:when test="${userid == 'hong'}">
		홍길동님 반갑습니다.
		</c:when>
		<c:when test="${userid == 'lim'}">
		임꺽정님 반갑습니다.
		</c:when>
		<c:when test="${userid == 'admin'}">
		관리자 전용 페이지입니다.
		</c:when>
		<!-- otherwise는 디폴트 -->
		<c:otherwise>
			등록되지 않은 사용자입니다.	
		</c:otherwise>
	</c:choose>
	
	
	<p><a href="ex7.jsp">[이전]</a><a href="ex9.jsp">[다음]</a></p>
	
</body>
</html>

c:choose태그는 자바에서 switch-case문과 쓰임이 비슷하다.

 

우선 c:set 태그로 userid에 admin이라는 값을 설정해주고 <c:choose>태그 안에 <c:when>태그를 넣어 case문과 유사하게 사용한다. 여기서 c:if 태그와 비슷하게 값이 참이라면 문자열을 출력하게된다.

마지막 c:otherwise는 default와 같다.

 

2. c:forEach 태그 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>
<%@ page import = "java.util.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
	
	<p><a href="ex8.jsp">[이전]</a><a href="ex10.jsp">[다음]</a></p>
	
	<h2>c:forEach 태그</h2>
	<h3>반복문 - 배열</h3>
	<% pageContext.setAttribute("nameList", new String[] {"홍길동","임꺽정","일지매", "이순신"}); %>
	
	<ul>
		<!--forEach-향상된 for문 / items="${nameList}에서 첫 번쨰 홍길동먼저 name으로 던져주면 ${name}으로 출력되고 다음 임꺽정도 똑같이 반복해서 출력 !-->
		<!--  begin - 출발점 / end - 종료점 -->
		<c:forEach var ="name" items="${nameList}"  begin= "2" end= "3">
		<li>${name}</li>	
		</c:forEach>
	</ul>
	
	<h3>반복문 - 배열의 시작 인덱스와 종료 인덱스 지정</h3>
	<% pageContext.setAttribute("nameList2", new String[]{"홍길동", "임꺽정", "일지매", "주먹대장", "똘이장군"}); %>
	
	<ul>
		<c:forEach var="name" items="${nameList2}" begin = "0" end ="2">
		<li>${name}</li>
		</c:forEach>
	</ul>
	
	
	<h3>반복문 - ArrayList 객체</h3>
	<%
		ArrayList<String> nameList3 = new ArrayList<String>();
		nameList3.add("홍길동");
		nameList3.add("임꺽정");
		nameList3.add("일지매");
		nameList3.add("주먹대장");
		nameList3.add("똘이장군");
		pageContext.setAttribute("nameList3", nameList3);
	%>
	
	<ul>
		<c:forEach var="name" items="${nameList3}" begin="0" end="3">
		<li>${name}</li>
		</c:forEach>
	</ul>	
	
	<h3>반복문 - 콤마로 구분된 문자열</h3>
	<% pageContext.setAttribute("nameList4", "홍길동, 임꺽정, 일지매, 주먹대장, 똘이장군"); %>
	
	<ul>
	<c:forEach var = "name" items="${nameList4}">
		<li>${name}</li>
	</c:forEach>
	</ul>
	
	
	<h3>반복문 - 특정 횟수 만큼 반복</h3>
	
	<c:forEach var ="no" begin="1" end="6">
		<!-- 리스트에서  유용하게 사용-->
		<li><a href="ex${no}.jsp">JSTL 예제${no}</a></li>
	</c:forEach>
	
	
	
	<p><a href="ex8.jsp">[이전]</a><a href="ex10.jsp">[다음]</a></p>
	
</body>
</html>

c:forEach태그는 자바에서의 향상된 for문이라고 볼 수 있다. 

<c:forEach var = "name" items="${nameList}" begin = "0" end = "3">

items="${nameList}"에서 첫 번째 값인 홍길동먼저 name으로 던져주면 ${name}으로 출력되고 그 다음 값인 임꺽정도 이와 똑같이 ${name}으로 출력된다. 여기서 begin은 시작 인덱스를 뜻하고 반대로 end는 종료 인덱스를 뜻하는데

시작 인덱스와 종료 인덱스를 각각 임의로 설정할 수 있다.

 

 

3. c:forTokens 태그

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>
<%@ page import = "java.util.*" %>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>JSTL</title>
</head>
<body>
	<p><a href="ex9.jsp">[이전]</a><a href="ex11.jsp">[다음]</a></p>
	
	<h2>c:forTokens 태그</h2>
	<% pageContext.setAttribute("tokens", "v1=20&v2=30&op=+"); %>
	<ul>
	<!--&딜리단위로 자름  -->	
	<c:forTokens var = "item" items="${tokens}" delims="&">
	<li>${item}</li>
	</c:forTokens>
	</ul>
	
	
	
	<p><a href="ex9.jsp">[이전]</a><a href="ex11.jsp">[다음]</a></p>
	
</body>
</html>

c:forTokens태그는 delims단위로 텍스트를 잘라 출력한다.

 

 

 

 

 

 

 

'JSP' 카테고리의 다른 글

[JSP] JSTL (Jsp Standard Tag Library)  (0) 2020.10.26
[JSP] JSTL(Jsp Standard Tag Library)  (0) 2020.10.26
[JSP] EL(Expression Language)  (0) 2020.10.26
[JSP] JSP - 액션 태그 종류  (0) 2020.10.26
[JSP] JSP페이지 - 구구단 테이블 만들기  (0) 2020.10.19

JSTL(Jsp Standard Tag Library)의 약자로 XML 데이터 처리와 조건문, 반복문 등과 같은 일을 처리하기 위한

JSP 태그 라이브러리를 추가하였으며 JSP페이지 내에서 JAVA코드를 사용하지 않고 로직을 내장하는 방법을 제공한다.

 

JSTL을 사용하려면 우선 lib파일에

https://tomcat.apache.org/taglibs/standard/

 

Apache Taglibs - Apache Standard Taglib: JSP[tm] Standard Tag Library (JSTL) implementations

라이브러리를 추가하고 taglib를 임포트해야한다.

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>

 

 

JSTL Tag

1) c:out

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>JSTL</title>

</head>
<body>
<p><a href= "ex5.jsp">[다음]</a></p>
<h2>c:out 태그</h2>
	1) <c:out value ="안녕하세요!"/><br> <!-- out은 출력 태그 -->
	2) <c:out value ="${null}">반갑습니다.</c:out><br> <!-- 1과 같음 -->
	3) <c:out value="안녕하세요!">반갑습니다.</c:out><br> <!-- 같이 사용했을 때 속성 value가 먼저 사용됨 -->
	4) <c:out value="${null}"/><br> 
	<p><a href = "ex5.jsp">[다음]</a></p>
</body>
</html>

 

c:out태그는 출력 태그로 

 

<c:out value ="안녕하세요!"/> 또는 <c:out value = "${null}">안녕하세요!</c:out>

로 표현할 수 있는데 둘은 같은 표현이다.

하지만 <c:out value="안녕하세요!">반갑습니다.</c:out>을 같이 사용했을 경우 

value 값이 먼저 사용되는것을 확인할 수 있다.

 

 

 

 

 

 

2) c:set

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>JSTL</title>
</head>
<body>
	<p><a href="ex4.jsp">[이전]</a><a href="ex6.jsp">[다음]</a></p>

	<h2>c:set태그 </h2> <!-- c:set은 값을 설정하는 태그 -->
	<h3>값 설정 방식</h3>
	<c:set var = "username1" value = "홍길동"/> <!-- String username1 = "홍길동" 이렇게 쓴 것과 같음 -->
	<c:set var = "username2">임꺽정</c:set>   <!--  String username2 = "임꺽정" -->

	<!--출력  el표현식 -->
	1) ${username1}<br>
	2) ${username2}<br>
	
	<h3>기본 보관소 - page</h3>
	3) ${pageScope.username1}<br>
	4) ${requestScope.username1}<br> <!-- request범위에서는 값이 저장되지 않음(Scope범위가 다르기 때문)-->
	
	<h3>보관소 지정 - scope속성</h3>
	<c:set var = "username3" scope="request">일지매</c:set> 
	5) ${pageScope.username3}<br> <!--scope의 범위(저장 범위)가 달라졌기 때문에 출력되지 않음  -->
	6) ${requestScope.username3}<br>
	
	<h3>기존의 값 덮어씀</h3>
	<% pageContext.setAttribute("username4", "똘이장군"); %>
	7) 기존 값 = ${username4}<br>
	<c:set var ="username4" value ="주먹대장"/> <!-- 중복되면 덮어쓴 값이 저장됨 -->
	8) 덮어쓴 값 = ${username4}<br>
	
	<h3>객체의 프로퍼티(속성) 값 변경</h3>
	
	<!-- 빈 생성 -->
	<%!
		public class MyMember{
		private int no;
		private String name;
		
		public int getNo(){
			return no;
		}
		public void setNo(int no){
			this.no = no;
		}
		public String getName(){
			return name;
		}
		public void setName(String name){
			this.name =name;
		}
	}
	%>
	
	<%
		MyMember member = new MyMember();
		member.setNo(100);
		member.setName("홍길동");
		pageContext.setAttribute("member", member);		
	%>
	
	9) ${member.name}<br>
	<!-- 위에서 만든 빈(bean) 객체에 c:set태그의 target속성을 이용한 정보 저장 -->
	<!-- property를 지정하면 setter메소드를 호출함 ex) member.setName("임꺽정") -->
	<c:set target="${member}" property="name" value="임꺽정"/>
	10) ${member.name}<br>
	
	
	<p><a href="ex4.jsp">[이전]</a><a href="ex6.jsp">[다음]</a></p>
</body>
</html>

c:set 태그는 단어 뜻 그대로 값을 설정하는 태그이다.

<c:set var ="name" value="홍길동>

은 String name = "홍길동"과 같다.

 

c:set태그로 설정한 값은 el표현식

${name}으로 출력하면 된다.

 

또한 scope속성을 이용해 저장되는 범위를 지정할 수 있다. 

page - 해당 페이지

request - 하나의 요청을 처리

session - 하나의 브라우저 영역

application - 하나의 웹 어플리케이션 영역 

 

 

 

 

 

 

 

 

 

 

 

 

3. c:remove

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>JSTL</title>
</head>
<body>

	<p><a href="ex5.jsp">[이전]</a><a href="ex7.jsp">[다음]</a></p>
	<h2>c:remove 태그</h2>
	<h3>보관소에 저장된 값 제거</h3>
	<% pageContext.setAttribute("username1", "홍길동"); %>
	1) ${username1}<br>
	<!-- username1의 값을 제거 -->
	<c:remove var = "username1" />
	2) ${username1}<br>
	
	
	
	
	<p><a href="ex5.jsp">[이전]</a><a href="ex7.jsp">[다음]</a></p>
	
</body>
</html>

c:remove 태그는 보관소에 저장된 값을 제거하는 태그이다.

 

${username1}을 <c:remove var ="username1"/>을 하게되면

보관소에 저장된 값을 제거하여 아무것도 출력되지 않는 것을 확인할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

4. c:if

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>JSTL</title>
</head>
<body>

	<p><a href="ex6.jsp">[이전]</a><a href="ex8.jsp">[다음]</a></p>
	
	<h2>c:if 태그</h2>
	<!-- test속성에 조건식 작성하고 참이면 출력 거짓이면 아무것도 안나옴 -->
	<!-- 조건식의 결과를 담을 수 있는 변수를 선언할 수 있다. -->
	<c:if test = "${10 > 20}" var = "result1" > 
		1) 10은 20보다 크다.<br>
	</c:if>
		2) ${result1}<br>
	<c:if test = "${10 < 20}" var = "result2">
		3) 10은 20보다 작다.<br>
	</c:if>
		4) ${result2}<br>
	
	
	
	
	<p><a href="ex6.jsp">[이전]</a><a href="ex8.jsp">[다음]</a></p>



</body>
</html>

c:if태그는 분기문이다.

c:if태그는 test속성에 조건식을 작성하고 결과가 참이면 출력을 거짓이면 아무것도 나오지 않는다. 

또한 c:if태그는 변수를 하나 선언해서 조건식의 결과를 담을 수 있다.

 

'JSP' 카테고리의 다른 글

[JSP] JSTL (Jsp Standard Tag Library)  (0) 2020.10.26
[JSP] JSTL(Jsp Standard Tag Library)  (0) 2020.10.26
[JSP] EL(Expression Language)  (0) 2020.10.26
[JSP] JSP - 액션 태그 종류  (0) 2020.10.26
[JSP] JSP페이지 - 구구단 테이블 만들기  (0) 2020.10.19

EL(Expression Language)

 

EL은 Expression Language의 약어로 JSP의 문법을 대체하는 표현 방법이라고 할 수 있다.

 

다음은 EL의 리터럴 표현식을 테이블로 정리하였다.

 

JSP에서 스크립트릿을 사용하지 않고 ${ }기호를 사용하여 간단하게 표현할 수 있다.

 

 

다음은 Collection을 사용하여 컬렉션에 저장된 값을 가져오는 코드를 테이블로 정리하였다.

 

 

pageContext.setAttribute로 해당 페이지에 데이터를 저장하고 리스트에 저장하는데 여기서 

pageContext.setAttribute는 JSP내장 객체로서 해당 페이지 즉 page영역에서만 유효하다고 할 수 있다.

 

 

다음은 연산자이다.

 

 

 

산술은 기존 다른 언어와 유사하고 관계 연산자는 조금 다르다.

 

==(eq) / !=(ne) / <(lt) / >(gt) / <=(le) / >=(ge)

 

empty검사는 값이 비어있으면 true을 반환하고 값이 있다면 false를 반환한다.

 

 

*EL 문법에서  '${ 앞에 \(역슬래시)가 붙으면 '${를 EL문법이 아닌 일반 텍스트로 취급한다.*

 

JSP Action Tag

 

액션 태그는 XML 문법을 따른다. 즉 시작 태그와 함께 반드시 종료 태그를 포함해야 한다.

다음은 액션 태그의 기본 형식이다.

 

<jsp:forward> : 다른 사이트로 이동할 때 사용하고 페이지의 흐름을 제어할 때 사용한다.

 

<jsp:include> : 정적 혹은 동적인 자원을 현재 페이지의 내용에 포함시킨다. 또 

페이지를 모듈화할 때 사용한다.

 

<jsp:param> : -<jsp:forward>, <jsp:include>, <jsp:plugin>과 같이 사용되어 인자를 추가할 때 사용한다.

 

<jsp: useBean> :  빈(Bean)을 생성하고 사용하기 위한 환경을 정의하는 태그이다.

 

<jsp:setProperty> : 액션은 빈에서 속성 값을 할당한다.

 

<jsp:getProperty> : 액션은 빈에서 속성 값을 얻어올 때 사용한다.

 

 

액션 태그 표현

 

<jsp: forward> 액션 태그

 

<jsp:forward>태그는 현재 JSP페이지에서 URL로 지정한 특정 페이지로 넘어갈 때 사용하는 태그이다.

표현 방식은 <jsp:forward page = "URL"/>로 표현하며 포워드 방식으로 페이지를 이동하는 것으로 기존의 

request연결을 유지하면서 서버상의 url로 request정보를 전달한다. 

JSP에서 다음 코드와 동일한 동작을 한다.

RequestDispatcher dispatcher = request.getRequestDispatcher("url");

dispatcher.forward(request, response);

 

 

 

 

<jsp:include>액션 태그(forward 태그와 표현은 같다)

 

웹 사이트를 구축하다보면 상단에는 로고나 메인 메뉴를, 페이지 하단에는 저작권 표시등 모든 웹페이지에서 공통적으로 사용된다.  이런 공통된 내용까지 하나의 JSP페이지에 기술하고 다른 페이지에서 보여야 할 저작권에 표시 등은 

footer.jsp에 나누어 두고 본문에 해당되는 내용을 기술하는 페이지에서 이를 header.jsp와 footer.jsp를 동적으로 포함한다.

 

내용을 기술하는 페이지에서 페이지 상단을 작성하면서 <jsp:include>태그를 사용하여 header.jsp페이지를 포함시키고

페이지 하단을 작성하면서 <jsp:include>태그를 사용하여 footer.jsp페이지를 포함시켜 웹 사이트를 구축하는데 이렇듯

하나의 결과 화면을 모듈별로 개별적인 여러 개의 페이지로 나눠서 작성하는 것을 모듈화라고 한다.

 

			페이지 상단
			<jsp:include page="header.jsp"/>
						~~~
						~~~
						~~~
			<jsp:include page="footer.jsp"/>
						페이지 하단	

'JSP' 카테고리의 다른 글

[JSP] JSTL(Jsp Standard Tag Library)  (0) 2020.10.26
[JSP] EL(Expression Language)  (0) 2020.10.26
[JSP] JSP페이지 - 구구단 테이블 만들기  (0) 2020.10.19
[JSP] JSP페이지 - 기본 태그  (0) 2020.10.19
[JSP] JSP페이지  (0) 2020.10.19

+ Recent posts