오늘의 코드
EL(Expression Language)에 관련해서
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL 기초</title>
</head>
<body>
<%--
EL(Expression Language)
- page, request, session, application 관련 데이터 출력 코드를
간략하게 사용할 수 있는 표기법
- 자바빈 컴퍼넌트를 쉽게 접근하게 도와줌
- 집합 객체(list, String[])에 대한 접근 방법을 제공
- 수치연산, 관계 연산, 논리 연산자 제공
- 표현 언어만의 기본 객체 제공(범위 객체)
EL 기본 객체
- pageContext : JSP의 ㅔㅁㅎㄷ 기본 객체와 동일
- pageScope : page 기본 객체에 저장된 속성의 <속성, 값>
매핑을 저장한 map 개체
- requestScope : request 기본 객체에 저장된 속성의 <속성, 값>
매핑을 저장한 Map 객체
- applicationScope : application 기본 객체에 저장된 <속성, 값>
매핑을 저장한 Map 객체
- param : 요청 파라미터의 <파라미터이름, 값> 메핑을 저장한 Map 객체,
타입은 String (request.getParameter("파라미터이름")과 동일)
- paramValues : 요청 파라미터의 <파라미터이름, 값> 매핑을 저장한 Map 객체,
타입은 String[] (request.getParameter("파라미터이름")과 동일)
- cookie : <쿠키이름, 쿠키값> 매핑을 저장한 Map 객체
(request.getCookies()와 동일)
- initParam : 초기화된 파라미터의 <파라미터이름, 값> 매핑을 저장한 Map 객체
(application.getInitParameter("파라미터이름")과 동일)
--%>
<% // 택베 기사분들
pageContext.setAttribute("num1", 1);
request.setAttribute("num2", 2);
session.setAttribute("num3", 3);
application.setAttribute("num4", 4);
// 기존 방식으로 값 출력
int number1 = (Integer) pageContext.getAttribute("num1");
int number2 = (Integer) request.getAttribute("num2");
pageContext.setAttribute("scopeNum", 1);
request.setAttribute("scopeNum", 2);
session.setAttribute("scopeNum", 3);
application.setAttribute("scopeNum", 4);
%>
<h1>변수 사용</h1>
<p>JSP 변수의 합 : <%=number1 + number2 %></p>
<p>page num1 : ${num1 }</p><%-- pageContext.getAttribute("num1"); --%>
<p>request num2 : ${num2 }</p><%-- request.getAttribute("num2"); --%>
<p>session num3 : ${num3 }</p><%-- session.getAttribute("num3"); --%>
<p>application num4 : ${num4 }</p><%-- application.getAttribute("num4"); --%>
<h1>EL 범위 테스트</h1>
<p>page scopeNum : ${scopeNum }</p>
<p>request scopeNum : ${scopeNum }</p>
<p>session scopeNum : ${scopeNum }</p>
<p>application scopeNum : ${scopeNum }</p>
</body>
</html>
<%@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>EL 연산자</title>
</head>
<body>
<%
String nullstr = null;
String emptyStr = "";
String[] zeroArray = new String[0];
ArrayList<String> emptyList = new ArrayList<>();
pageContext.setAttribute("nullstr", nullstr);
pageContext.setAttribute("emptyStr", emptyStr);
pageContext.setAttribute("zeroArray", zeroArray);
pageContext.setAttribute("emptyList", emptyList);
%>
<%--
EL 연산자
- 기본적인 연산자는 자바와 동일
- '/'와 div는 동일한 연산자
--%>
<h1>EL 연산자</h1>
<h2>산술 연산자</h2>
더하기 : ${20 + 10 }<br>
빼기 : ${'20' - '10' }<br>
몫 : ${'40' div '6' }<br>
나머지 : ${40 mod 6 }<br>
<h2>비교 연산자</h2>
같은가? : ${'10' eq '10' }<br>
다른가? : ${'10' ne '10' }<br>
작은가? : ${'10' lt '10' }<br>
큰가? : ${'10' gt '10' }<br>
작거나 같은가? : ${'10' le '10' }<br>
크거나 같은가? : ${'10' ge '10' }<br>
<h2>논리 연산자</h2>
논리곱 : ${true and false }<br>
논리합 : ${true or false }<br> <%-- or로 전부 가져가니 참이 됨 --%>
논리 부정 : ${not false }<br>
<h2>empty 연산자</h2>
null : ${empty nullstr }<br>
빈 문자열 : ${empty emptyStr }<br>
길이가 0인 배열 : ${empty zeroArray }<br>
빈 ArrayList(collection) : ${empty emptyList }<br>
나머지 경우 : ${empty "문자열" }<br>
not null : ${not empty nullstr }<br>
</body>
</html>
<%@ 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>회원 가입하기</h2>
<form action="03_parameter.jsp" method="post">
<p>아이디</p>
<input type="text" name="userid" placeholder="아이디 입력" required="required">
<p>패스워드</p>
<input type="password" name="password" placeholder="비밀번호 입력" required="required">
<p>이메일</p>
<input type="email" name="email" placeholder="이메일 입력" required="required">
<p>이메일 수신여부</p>
<input type="radio" name="emailAgree" value="y">예
<input type="radio" name="emailAgree" value="n" checked="checked">아니오
<p>관심사항</p>
<input type="checkbox" name="interest" value="IT">IT/인터넷
<input type="checkbox" name="interest" value="movie">영화
<input type="checkbox" name="interest" value="music">음악
<input type="checkbox" name="interest" value="book">책
<input type="checkbox" name="interest" value="food">음식
<p>핸드폰</p>
<input type="text" name="phone" placeholder="번호 입력" required="required">
<p>자기소개</p>
<textarea rows="4" cols="30" name="introduce" placeholder="자기소개 입력" required="required"></textarea>
<br>
<input type="submit" value="전송" >
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 보기</title>
</head>
<body>
<%-- param.(파라미터이름) == request.getParameter(파라미터이름) --%>
<p>아이디 : ${param.userid }</p>
<p>비밀번호 : ${param.password }</p>
<p>이메일 : ${param.email }</p>
<p>이메일 수신여부 : ${param.emailAgree }</p>
<p>관심사항 : </p>
<p>${paramValues.interest }</p>
<p>${paramValues.interest[0] }</p>
<p>${paramValues.interest[1] }</p>
<p>${paramValues.interest[2] }</p>
<p>${paramValues.interest[3] }</p>
<p>${paramValues.interest[4] }</p>
<p>핸드폰 : ${param.phone }</p>
<p>자기소개 : ${param.introduce }</p>
</body>
</html>
package edu.web.el01;
public class Point {
private double x;
private double y;
public Point() {
System.out.println("Point()");
}
public Point(double x, double y) {
super();
this.x = x;
this.y = y;
}
public double getX() {
System.out.println("getX()");
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
public double distance(double x, double y) {
double disX = this.x - x;
double disY = this.x - x;
return Math.sqrt(disX * disX + disY * disY);
}
@Override
public String toString() {
return "Point [x=" + x + ", y=" + y + "]";
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL useBean</title>
</head>
<body>
<jsp:useBean id="point" class="edu.web.el01.Point" />
<jsp:setProperty property="x" name="point" value="0.0" />
<jsp:setProperty property="y" name="point" value="0.0" />
<p>point의 x, y 좌표값 : ${point.x }, ${point.y }</p>
<p>point의 x, y 좌표값 : ${pageScope.point.x }, ${pageScope.point.y }</p>
<%-- el 메소드 표기 --%>
<p>좌표 거리 : ${point.distance(0, 2) }</p>
<p>좌표 출력 : ${point.toString() }</p>
</body>
</html>
많이 사용하는 건 아니라 빠르게 보고 가자 이 다음이 정말 중요하다.