본문 바로가기
강의/JSP 강의 정리

JSP 강의 정리 18일차

by 리드민 2022. 7. 29.
반응형

[1] 테스트 환경

hardware
cpu : intel i7-7700, gpu : intel hd 630, ram : ddr4 16GB, mainboard : samsung DB400S7A-Z51, secondary storage : 256GB SSD, 1TB HDD
OS
windows pro 64bits
software
jdk version 1.8.0_301
eclipse version 2021-09 (4.21.0)
apache-tomcat version 9.0.54

 

[2] 강의 정리

() JSTL

  자바서버 페이지 표준 태그 라이브러리, JSTL(JavaServer Pages Standard Tag Library)

  일반적으로 알고 있는 JSTL은 JSTL + EL의 조합을 말한다. 

  Java EE 기반의 웹 애플리케이션 개발 플랫폼을 위한 컴포넌트 모음이다. JSP 페이지 내에서 자바 코드를 바로 사용하지 않고 로직을 내장하는 방법을 제공한다.

  태그 라이브러리이므로 태그가 추가되서 JSP에서 새로운 태그를 사용할 수 있게된다. 

 

()EL

  표현 언어, EL(Expression Language)

  스크립트 언어의 일종으로 기존의 Script tag의 표현식(<%= 정보 %>) tag에서 업그레이드된 버전 ( ${ 정보 } )이다. JSTL과 연동이 가능하다.

  JSP 표현식 <%= %>이나 액션 태그 <jsp:useBean>를 사용하는 것보다 쉽고 간결하게 꺼낼수 있는 기술이다. 

  원래 JSTL 1.0 규약에 소개된 내용으로 JSP 2.0에 추가되어 JSP 2.0 이상이라면 EL를 사용할 수 있다.

 

()

  JSTL과 EL 둘다 자바 형식의 코드를 편하고 간결하게 사용할 수 있게합니다.

 

() 이클립스 프로젝트 폴더에 jstl 적용

https://mvnrepository.com 

사이트에서

 

jstl 검색

 

() JSTL클릭

 

1.2 클릭

 

jar 파일 다운

 

프로젝트 폴더 > src > main >webapp>WEB-INF>lib 폴더에 붙여놓기

 

jsp파일에 

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

코드 추가

 

() jstl 예제 코드

src/main/java>com.jsp.el

MemberEL.java

package com.jsp.el;

public class MemberEL {
	
	private String name;
	private int age;
	private String id;
	private String pw;
	
	public MemberEL() {}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPw() {
		return pw;
	}

	public void setPw(String pw) {
		this.pw = pw;
	}
	
	
	
}

 

src/main/java>com.jsp.jstl

MemberJSTL.java

package com.jsp.jstl;

public class MemberJSTL {
	
	private String id;
	private String pw;
	private String name;
	private int age;
	
	public MemberJSTL() {}

	public MemberJSTL(String id, String pw, String name, int age) {
		super();
		this.id = id;
		this.pw = pw;
		this.name = name;
		this.age = age;
	}
	
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPw() {
		return pw;
	}

	public void setPw(String pw) {
		this.pw = pw;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	
	
	
}

 

el01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<%--
		EL(Expression Language)은
		정수, 실수, 논리, 문자열, null을 표현할 수 있다.
	 --%>
	
	정수 : ${100 }<br>
	실수 : ${3.14 }<br>
	논리 : ${true }<br>
	문자열 : ${"Hello JSP" }<br>
	널 : ${null }<br>
	
	<%--
		EL에서 사용하는 연산자는 산술, 관계, 논리, 조건 연산자가 있다.
	 --%>
	
	<p>산술연산자</p>
	${1 + 2 }<br>
	${1 - 2 }<br>
	${1 * 2 }<br>
	${1 / 2 }<br>
	
	<p>관계(비교)연산자</p>
	${1 < 2 }<br>
	${1 > 2 }<br>
	${1 == 2 }<br>
	${1 != 2 }<br>
	
	<p>논리 연산자</p>
	${(1>2) && (1<2) }<br>
	${(1>2) || (1<2) }<br>
	
	<p>조건(삼항)연산자</p>
	${(1 > 2) ? 1 : 2 }<br>
	
	
</body>
</html>

 

el02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<%--
		EL은 자바빈의 프로퍼티(데이터)를 JSP 표현식이나
		액션태그를 사용하는 것보다 쉽고 간결하게 사용할 수 있다.
	 --%>
	
	<jsp:useBean id="elMember" class="com.jsp.el.MemberEL" />
	
	<jsp:setProperty name="elMember" property="name" value="홍길동" />
	<jsp:setProperty name="elMember" property="age" value="20" />
	<jsp:setProperty name="elMember" property="id" value="hong" />
	<jsp:setProperty name="elMember" property="pw" value="1234" />
	
	<h2>JSP 액션태그</h2>
	
	이름 : <jsp:getProperty property="name" name="elMember"/><br>
	나이 : <jsp:getProperty property="age" name="elMember"/><br>
	아이디 : <jsp:getProperty property="id" name="elMember"/><br>
	비밀번호 : <jsp:getProperty property="pw" name="elMember"/><br>
	
	<hr>
	
	<h2>JSP 표현식</h2>
	
	이름 : <%=elMember.getName() %><br>
	나이 : <%=elMember.getAge() %><br>
	아이디 : <%=elMember.getId() %><br>
	비밀번호 : <%=elMember.getPw() %><br>
	
	<hr>
	
	<%--
		EL은 jsp 액션태그나 표현식을 사용하는 것보다 
		간결하게 프로퍼티 값을 얻을 수 있다.
	 --%>
	
	<h2>EL 표현식</h2>
	
	이름 : ${elMember.name }<br>
	나이 : ${elMember.age }<br>
	아이디 : ${elMember.id }<br>
	비밀번호 : ${elMember.pw }<br>
	
	
</body>
</html>

 

el03.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<form action="el03.jsp" method="post">
		
		아이디 : <input type="text" name="id"><br>
		비밀번호 : <input type="password" name="pw"><br>
		
		<input type="submit" value="로그인">
		
	</form>
	
	<%
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
	%>
	
	아이디 : <%=id %><br>
	비밀번호 : <%=pw %><br>
	
	<hr>
	
	<%--
		EL 내장객체의 param 객체로, 넘어온 파라미터 값을 사용할 수 있다.
	 --%>
	
	아이디 : ${param.id }<br>
	비밀번호 : ${param.pw }<br>
	
</body>
</html>

 

el04.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<%--
		EL은 서블릿 보관소에 저장된 데이터를 사용할 수 있다.
		(어플리케이션, 세션, 페이지, request)
	 --%>
	
	<%
		application.setAttribute("appli_name", "appli_value");
		session.setAttribute("session_name", "session_value");
		pageContext.setAttribute("page_name", "page_value");
		request.setAttribute("req_name", "req_value");
	%>
	
	어플리케이션 : ${applicationScope.appli_name }<br>
	세션 : ${sessionScope.session_name }<br>
	페이지 : ${pageScope.page_name }<br>
	request : ${requestScope.req_name }<br>
	
	
	
</body>
</html>

 

el05.jsp

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<h2>EL 표현식으로 데이터 꺼내기</h2>
	
	<%
		request.setAttribute("score", new int[] {10, 20, 30, 40});
	%>
	
	배열 : ${score[2] }<br>
	
	<hr>
	
	<%
		ArrayList<String> list = new ArrayList<>();
		list.add("홍길동");
		list.add("성춘향");
		list.add("이몽룡");
		
		request.setAttribute("list", list);
		// request 영역에 list 객체를 바인딩한다.
	%>
	
	List : ${list[1] }<br>
	
</body>
</html>

 

jstl01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    
<%--
	자바에서 import 문을 선언하듯 jsp에서도 jstl 확장태그를 사용하려면
	taglib 지시자로 라이브러리를 선언해야 한다.
 --%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<%--
		일반적으로 jstl이란 jstl + EL의 조합을 말한다.
		HTML 코드내에 java 코드인 스크립트릿코드를 대체하여 사용한다.
		스크립트릿을 사용하면 가독성이 떨어지고, 뷰와 비즈니스로직의 분리로 인해
		현재는 jstl을 많이 사용하는 추세이다.
	 --%>
	
	<%--
		set : 변수값 선언
		out : 출력
		remove : 변수값 제거
	 --%>
	
	<c:set var="name" value="홍길동" scope="page" />
	
	<%--
		var : 변수의 이름
		value : 변수의 값
		scope : 범위지정 (page, request, session, application)
	 --%>
	
	이름 : <c:out value="${name}" />
	
	<br>
	
	<c:remove var="name" scope="page"/>
	
	이름 : <c:out value="${name}" />
	<hr>
	
	<%--
		if : if문 (else문 없음)
		test="조건식"
	 --%>
	
	<c:if test="${(1 + 2) == 3}">
		
		1 + 2 = 3
	
	</c:if>
	
	
	<c:if test="${(1 + 2) != 3}">
		
		1 + 2 != 3
	
	</c:if>
		
</body>
</html>

 

jstl02.jsp

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>    
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<%--
		choose 는 자바의 switch문과 비슷한 역할을 한다.
		case 와 같은 역할을 하는 것은 choose 안의 when 태그이다.
		default문과 같은역할을 하는 것은 choose 안의 otherwise 이다.
	 --%>
	
	<c:set var="a" value="30" />
	
	<c:choose>
		
		<c:when test="${a == 10}">
			a는 10 입니다.<br>
		</c:when>
		
		<c:when test="${a == 20}">
			a는 20 입니다.<br>
		</c:when>
		
		<c:otherwise>
			a는 10과 20이 아닙니다.<br>
		</c:otherwise>
		
	</c:choose>
	
	<hr>
	
	<%--
		forEach : for문
	 --%>
	
	<c:forEach var="i" begin="0" end="30" step="3">
		
		${i}
		
	</c:forEach>
	
	<hr>
	
	<%
		ArrayList<String> list = new ArrayList<>();
	
		list.add("홍길동");
		list.add("성춘향");
		list.add("이몽룡");
		
		request.setAttribute("list", list);
		
	%>
	
	
	<c:forEach var="list" items="${requestScope.list}" >
		${list} <br>
	</c:forEach>
	
	<%--
		items 속성에 collection 객체를 넣어주면
		순서대로 반복이 된다.
	 --%>
	
</body>
</html>

 

jstl03.jsp

<%@page import="com.jsp.jstl.MemberJSTL"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>     
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<%--
		1. ArrayList<MemberJSTL> 객체 생성하기
		2. list 안에 MemberJSTL 객체 3개 넣기
		3. request 영역에 바인딩하기
		4. el과 jstl을 사용해서 MemberJSTL 객체안에
		   아이디, 비밀번호, 이름, 나이 출력하기 
	 --%>
	
	<%
		
		ArrayList<MemberJSTL> list = new ArrayList<MemberJSTL>();
	
		list.add(new MemberJSTL("hong", "1234", "홍길동", 20));
		list.add(new MemberJSTL("sung", "5678", "성춘향", 21));
		list.add(new MemberJSTL("mong", "1111", "이몽룡", 22));
		
		request.setAttribute("list", list);
	%>
	
	<c:forEach var="member" items="${requestScope.list }">
		
		아이디 : ${member.id }<br>
		비밀번호 : ${member.pw }<br>
		이름 : ${member.name }<br>
		나이 : ${member.age }<br>
		<hr>
		
	</c:forEach>
	
	
	
</body>
</html>
반응형

'강의 > JSP 강의 정리' 카테고리의 다른 글

JSP 강의 정리 20일차  (0) 2022.08.02
JSP 강의 정리 19일차  (0) 2022.08.01
JSP 강의 정리 17일차  (0) 2022.07.28
JSP 강의 정리 16일차  (0) 2022.07.27
JSP 강의 정리 15일차  (0) 2022.07.26