일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 리눅스셋팅
- ID중복
- 동기화
- ObjectInputStream
- include 지시자
- char[] String 형변환
- StringReader
- ThreadGroup()
- sleep()메소드
- Linux셋팅
- 메모리스트림
- 리눅스세팅
- 스레드그룸
- include지시자
- 상관서브쿼리
- isinterrupted()
- interrupt()
- MemoryStream
- InputDialog
- first-child
- first-of-child
- 상관 서브 쿼리
- 아이디중복
- include액션태그
- 표현 언어
- String char[] 형변환
- interrupted()
- StringWriter
- Daemon()
- Linux세팅
- Today
- Total
다연이네
[days07] EL(표현 언어) 본문
1. Expression Language
2. 형태가 다른 스크립트 언어 (스크립트 요소 중 하나 - 선언문, 표현식, 스크립트릿)
3. 표현식보다 간결하고 편리하기 때문에 EL 사용
4. 톰캣(우리:8.5.60) 버전따라 JSP/Servlet/EL버전 달라진다. (아마 EL 3.0, JSP는 2.3)
5. EL 선언 형식
${el표현식}
#{el표현식} (기억안해도 됨)
6. EL 기능
1) JSP 4가지 Scope 영역 사용
2) 수치, 관계, 논리 연산자 제공
3) 자바 클래스 메소드 호출 가능 ***
4) 쿠키, 기본 객체 사용
5) 람다식 사용
6) 정적 메소드 (static) 호출 가능 ***
7. EL 표현식에서 사용할 수 있는 자료형과 상수(리터럴)
1) boolean : true,false ${true}
2) 정수 : -9, 8 자바의 long 형 ${10}
3) 실수 : 3.14 자바의 double형 ${3.14}
4) 문자열 : "홍길동" \'홍길동\' 자바의 String형 ${"홍길동"}
5) null 타입 존재 ${null}
${true}
${10}
${3.14}
${"홍길동"}
8. EL에서 사용할 기본 객체 JSP 기본 객체
1) pageContext / pageContext
2) key/value [Map 객체]
pageScope
requestScope / request .setAttribute()
sessionScope / session
applicationScope / application
3) param / request .getParameter()
4) paramValues / request .getParameterValues()
5) cookie
6) initParam / application .getInitParameter()
7) header / request .getHeader()
8) headerValues / request .getHeaderValues()
<%
session.setAttribute("auth", "admin");
%>
<a href="ex08_02.jsp?empno=7566&ename=smith">ex08_02.jsp</a>
<body>
<%
// /jspPro/days07/ex08_02.jsp
String uri = request.getRequestURI();
%>
uri = <%=uri %><br>
<!-- EL 표현식에서 request 객체 얻어오는 코딩 pageContext.request. -->
EL uri = ${pageContext.request.requestURI }<br>
<!-- ?empno=7566&ename=smith -->
<%
String empno = request.getParameter("empno");
String ename = request.getParameter("ename");
%>
empno = <%=empno %><br>
ename = <%=ename %><br>
EL empno = ${param.empno}<br>
EL ename = ${param.ename}<br>
<%
String name= (String)session.getAttribute("auth");
%>
auth = <%=name %><br>
EL auth = ${sessionScope.auth}<br>
EL auth = ${sessionScope["auth"]}<br>
EL auth = ${auth}<br>
</body>
<body>
<%
//쿠키 쓰기/읽기 -> EL cookie 기본 객체
Cookie cookie = Cookies.createCookie("user", "admin");
response.addCookie(cookie);
cookie = Cookies.createCookie("id", "hong");
response.addCookie(cookie);
cookie = Cookies.createCookie("age", "10");
response.addCookie(cookie);
%>
<a href="ex09_02.jsp">ex09_02.jsp</a>
</body>
<%@page import="com.util.Cookies"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
Cookies cookies = new Cookies(request); //Cookies 클래스의 생성자에 request 주러 감
Cookie cookie = cookies.getCookie("user");
String user = cookie.getValue();
String id = cookies.getCookie("id").getValue();
String age = cookies.getCookie("age").getValue();
%>
user: <%=user%><br>
id: <%=id%> <br>
age: <%=age%> <br>
EL을 사용해 출력
<!-- EL 기본 객체 : cookie 기본 객체 <쿠키이름, Cookie 객체> 맵 -->
<!-- 쿠키.쿠키명하면 쿠키 객체를 돌림 -->
EL user: ${cookie.user.value }<br>
EL id: ${cookie.id.value }<br>
EL age: ${cookie.age.value } <br>
쿠키 목록 출력하기
<h3>쿠키 목록 출력 : EL+JSTL</h3>
<c:forEach items="${cookie }" var="entry">
<li>${entry.key } - ${entry.value.value }</li>
<!-- getValue()에서 get떼고 value -->
</c:forEach>
또는 이렇게
<c:forEach items="${cookie }" var="entry">
<c:set value="${entry.value}" var="cobject"></c:set>
<li>${entry.key } - ${cobject.value }</li>
</c:forEach>
EL 연산자
${null+4 }<br> <!-- 4 (null은 0으로 처리한다) -->
${"3"+4 }<br> <!-- 7 -->
<hr />
${3+4 }<br> <!-- 7 -->
${3-4 }<br> <!-- -1 -->
${3*4 }<br> <!-- 12 -->
${3/4 }<br> <!-- 0.75 -->
${3 div 4 }<br> <!-- 0.75 -->
${3%4 }<br> <!-- 3 -->
${3 mod 4 }<br> <!-- 3 -->
<!-- 문자열 java 비교 "문자열".equals("비교문자열") -->
<!-- 객체.compareTo(객체) ==0
"문자열".compareTo("비교문자열") ==0 -->
${"문자열"=="비교문자열" }<br>
${3>4 }<br>
${3 gt 4 }<br>
${3<4 }<br>
${3 lt 4 }<br>
${3>=4 }<br>
${3 ge 4 }<br>
${3<=4 }<br>
${3 le 4 }<br>
${3==4 }<br>
${3 eq 4 }<br>
${3!=4 }<br>
${3 ne 4 }<br>
전부 알맞게 출력된다.
${true && true }<br> //true
${true and true }<br> //true
${true || true }<br> //true
${true or true }<br> //true
${! true }<br> //false
${not true }<br> //false
${empty null }<br> <!-- true -->
${empty ''}<br> <!-- true -->
${empty 배열크기 0}<br> <!-- true -->
${empty 맵 0}<br> <!-- true -->
${empty 컬렉션 0}<br> <!-- true -->
그 외는 모두 false이다
EL 문자열 연결 += EL3.0부터 지원하는 연산자
<%
request.setAttribute("title", "JSP 프로그래밍");
%>
<%-- ${"문자" +"열"+"연결" }<br> 이거 불가--%>
${"문자" +="열"+="연결" }<br>
<!-- EL에서 문자열 연결시 += 사용 -->
${"제목: "+=title }<br>
${1+10; 2+3 }<br> <!-- 5 -->
<!-- ${A; B} B값만 출력된다-->
EL 할당 연산자 (자바의 대입 연산자) = += -=
<%
request.setAttribute("name", "hong");
int age = 20;
request.setAttribute("age", age);
%>
name= <%=request.getAttribute("name") %> <br>
EL name = ${name}<br>
age=${age }<br>
<c:set var="vage" value="${age}"></c:set>
EL age = ${vage};<br>
EL 3.0 num변수에 100 할당과 동시에 출력
<!-- EL 3.0 num변수에 100 할당과 동시에 출력-->
${num=100 }<br>
\${num=100 }<br> <!-- 이러면 코드 그대로 출력됨 -->
${num }<br> <!-- 출력만 -->
- EL 연산자도 우선 순위가 있다.
- EL 연산자에 삼항 연산자도 사용 가능하다.
JSP에서 \${expression} 출력
서버단에서 실행되는 구문이기 때문에 앞에 \를 붙히면 그대로 출력된다.
EL에서 객체의 메소드 호출
<%
ELTest obj = new ELTest();
request.setAttribute("obj", obj);
%>
${obj.getMessage("hi") }
ELTest 클래스
package days07;
public class ELTest {
//instance 메소드
public String getMessage(String message) {
return "메시지 : "+message;
}
//static 메소드
public static int getLength(int [] m) {
return m.length;
}
}
EL에서 정적(static)메소드 호출
<%
long price = 12345;
%>
price = <%=price %><br>
price = <%=FormatUtil.number(price, "#,##0") %><br>
FormatUtil 클래스
package days07;
import java.text.DecimalFormat;
public class FormatUtil {
//static 메소드
public static String number(long number, String pattern) {
DecimalFormat df = new DecimalFormat(pattern);
return df.format(number);
}
}
<%
long price = 12345;
%>
price = <%=price %><br>
price = <%=FormatUtil.number(price, "#,##0") %><br>
EL price = ${price = 12345}<br> <!-- 스크립트릿과는 다른 변수 -->
<%
long price = 12345;
%>
price = <%=price %><br>
price = <%=FormatUtil.number(price, "#,##0") %><br>
EL price = ${price = 12345}<br> <!-- 스크립트릿과는 다른 변수 -->
EL price = ${FormatUtil.number(price,"#,##0")}<br> <!-- 바로 윗 줄의 EL이 있기 때문에 출력되는 것 -->
<%
long price = 12345;
%>
price = <%=price %><br>
price = <%=FormatUtil.number(price, "#,##0") %><br>
EL price = ${FormatUtil.number(price,"#,##0")}<br>
<%
long price = 12345;
%>
price = <%=price %><br>
price = <%=FormatUtil.number(price, "#,##0") %><br>
<c:set var="price" value="<%=price %>"></c:set> <!-- 위 작업을 해야 스크립트릿 사용 가능 -->
EL price = ${FormatUtil.number(price,"#,##0")}<br>
JSP 페이지에서 EL 비활성화 시키는 방법
1) page 지시자 추가 - 해당 파일만
<%@page isELIgnored="true" %>
2) web.xml - days07안의 모든 파일들
<jsp-config>
<jsp-property-group>
<url-pattern>/days07/*</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>
'JSP' 카테고리의 다른 글
[days08] c태그들 (c:if, c:choose, c:forEach, c:forTokens, c:url, c:redirect c:out, c:catch) (0) | 2021.01.05 |
---|---|
[days07] 표준 태그 라이브러리(JSTL) (0) | 2021.01.04 |
[days07] 세션을 사용해서 로그인 처리(상태 관리)(회원/비회원/관리자) (0) | 2021.01.04 |
[days07] 세션(Session) (0) | 2021.01.04 |
[days07] 커넥션 풀 (Connection Pool) (0) | 2021.01.04 |