page context
pageContext.setAttribute("변수", "값")
request(request)
request.setAttribute("변수", "값")
session(session)
session.setAttribute("변수", "값")
application(application)
application.setAttribute("변수", "값")
자바빈의 프로퍼티, 값, 액션 태그 등을 쉽고 간결하게 사용할 수 있도록 하는 기술
page context(기본값)
🤗 ${}
<%=pageContext.getAttribute("text") %>
=>
${pageScope.text}
JSP가 실행될 때 즉시 반영하여 값을 출력
예) <%= 1+1 %> ⇒ ${1+1}
파라미터 값(매개변수)을 불러올 때 사용
request.getParameter(name)
=>
${param.name} 또는 ${param['name']} 또는 ${param["name"]}
산술 연산자
${10 + 2 }
${10 -2 }
${10 * 2 }
${10 / 2 } ⇒ ${10 div 2 }
${10 % 2 } ⇒ ${10 mod 2 }
비교 연산자
${10 > 2 } ⇒ ${10 gt 2 }
${10 < 2 } ⇒ ${10 lt 2 }
${10 == 2 } ⇒ ${10 eq 2 }
${10 != 2} ⇒ ${10 ne 2 }
${10 >= 2 } ⇒ ${10 ge 2 }
${10 <= 2 } ⇒ ${10 le 2 }
논리 연산자
${true and true}
${true or false}
${not true}
empty 연산자
${empty 변수}
변수 생성, URL 관리, 프로그램의 흐름을 제어
prefix="c": c로 부르겠단 의미
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
c: out
jsp에서 <%=%> 태그와 유사한 표현식의 결과를 표시
<c:out value="${'hello jstl' }"/>
c: import
c: set
계산 결과를 scope 변수에 설정
<c:set var="userid" value="apple"/>
c: remove
특정 범위에서 지정된 범위 변수를 제거할 때 사용
<c:remove var="userid"/>
c: if
조건을 테스트하는데 사용되는 조건부 태그, 표현식이 참인 경우에만 내용을 표시
<c:if test="${userid eq 'banana' }">
<p>userid는 banana입니다</p>
</c:if>
c: choose, c: when, c: otherwise
조건이 true인 경우 본문 내용을 포함하는 간단한 조건부 태그
<c:choose>
<c:when test="${empty pw }">
<p>비밀번호가 입력되지 않았습니다.</p>
</c:when>
<c:when test="${pw eq '1234'}">
<p>비밀번호가 1234임</p>
</c:when>
<c:otherwise>
<p>둘 다 아님</p>
</c:otherwise>
</c:choose>
c: forEach
기본 반복 태그이며 고정된 횟수 또는 초과되는 중첩된 본문 내용을 반복
items: 차례대로 불려질 값
var: 차례대로 담겨질 값
varStatus: 불려질 이름, 번호를 매겨주려고 필요한 속성(필요없으면 안써도 됨)
<c:forEach var="student" items="${list }" varStatus="status">
<tr>
<td>${status.index }</td>
<td>${status.count }</td>
<td>${student }</td>
</tr>
</c:forEach>
c: redirect
메시지, 번호 및 날짜, 통화 형식 등을 지원
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
fmt: parseNumber
fmt: formatNumber
특정 형식 또는 정밀도로 숫자값을 형식화 하는데 사용
<fmt:formatNumber value="500000" type="currency" currencySymbol="$"/>
fmt:parseDate
fmt:frmatDate
fmt: setTimeZone
문자열 조작 및 문자열 길이를 지원
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
fn:contains()
fn:indexOf()
지정된 하위 문자열이 처음 나타나는 문자열 내에서 인덱스를 반환
${fn:indexOf('jstl1 예제','s')} //1
fn:split()
fn:endsWith()
fn:trim()
문자열의 양쪽 끝 공백을 제거
${fn:trim(' jstl 예제 ' )} //jstl 예제
fn:toLowerCase()
fn:toUpperCase()
fn:substring()
주어진 문자열 시작 및 끝 위치에 따라 문자열의 일부를 반환
${fn:substring('jstl 예제', 0, 3)} //jst
fn:length()
문자열 내부의 문자 수 또는 컬렉션의 항목 수를 반환
${fn:length('1234567890') } //10
fn:replace()
모든 문자열을 다른 문자열 시퀀스로 변환
${fn:replace('jstl 예제', 'jstl', 'jsp') } //jsp 예제
requset.getPrameter로 못받고 MultipartRequest로 받아야함
DefaultFileRenamePolicy : 파일이름 중복을 방지함
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
타입, 경로, 용량, 인코딩방식, 파일이름 중복 방지
MultipartRequest mr = new MultipartRequest(request, request.getRealPath("/image"), 1024*1024*1024, "utf-8", new DefaultFileRenamePolicy())
String fileName = mr.getFilesystemName("image");
String deleteImg = "281786_super_hero_superman_icon.png"; //삭제할 파일이름
String deleteImgFullPath = request.getRealPath("/image/") + deleteImg; // 경로+파일이름
File img = new File(deleteImgFullPath); //파일타입으로 생성
if(img.exists() && img.isFile()){ //존재하고 파일 타입이 맞으면
img.delete();
}