[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 적용
사이트에서
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 |