JSP 기본 07

이정우·2021년 10월 27일
1

JS

목록 보기
4/4

표현 언어(EL, Expression Language)

<%%>은 표현식이었고 지금 배울 내용은 표현 언어. jsp에서 출력을 간단하게 하는 방법. 기본 형태는 ${} 이다. 내가 편한 방식을 사용하면 될 듯.

<body>
정수형 : ${10}  <br>
실수형 : ${5.6} <br> 
문자열형 : ${"성윤정"}<br>
논리형 :${true}<br>
null : ${null}<br>
</body>

표현 언어의 특징으로는 원래 방식에서는 null이 출력되지만 el방식에서는 null은 빈 공백으로 출력한다는 점이다.

\${5+2} : ${5+2}

역슬래쉬를 하면 바로 뒤 문장의 의미를 없애고 단순 문자열로 치환한다.
위 문장을 출력하면 ${5+2} : 7 이 나온다.

표현 언어에서의 request

표현 언어에서는 사용자의 입력 데이터를 얻어오기 위해 request.getParameter() 대신 param 객체를 사용한다.

원래 방식

아이디 : <%= request.getParameter("id") %><br>
비밀번호 : <%= request.getParameter("pwd") %><br><br>

EL방식

아이디 : ${param.id}<br>
비밀번호 : ${param["pwd"]}<br>
비밀번호2 : ${param.pwd}

EL에서의 ==

el에서의 ==은 자바 코드의 equlas 메서드와 동일하게 처리해서 true, false값을 리턴함.

자바 코드 request

request에서 요청 값이 null이면 오류가 뜨기에 if else문으로 null값을 걸러줘야 하는데 el방식은 공백으로 처리하기에 이런 절차가 필요 없다.

<%=%>

<%= %>문 안에 <%= %>중첩은 안됨. 예를 들어
<%=name1 <%=name2%> %> 이러면 오류가 나온다. 이럴 땐
<%=name1%><%=name2%> 이렇게 열고 닫고를 해줘야 한다.

표현 언어에서 jsp 내장 객체 사용

page < request < session < application 순인데
만약 4개의 내장 함수에 같은 name이라는 변수 이름으로 값을 저장하면 무엇이 출력이 될까? 이럴 경우는 제일 작은 범위인 page의 name이 출력된다. 이럴 때 session이나 request등의 name을 출력하고자 한다면
${sessionScope.name} 이런 식으로 하면 된다. jsp에서는 sesstion.getAttribute("name")과 같은 효과를 볼 수 있다.

JSTL (JSP Standard Tag Library)

JSTL은 jsp에서 사용하는 표준 태그 라이버르리이다. JSTL전용 태그를 사용하면 JSP 코드를 깔끔하고 구독성 좋게 작성 가능하다.
예를 들어 JSP에서 HTML과 if-else if를 같이 쓴다면 if else문을 스크립트릿으로 사용해야 한다. 그러면 <%if~~~%> <span...> <% else ....%> <span....> 이런 식으로 열고 닫고 하느라 가독성이 매우 떨어져서 JSTL이 나오게 되었다.

다운로드

JSTL 다운로드 링크 > Taglibs > Apache Standard Taglib > 버전 선택해서 다운로드 클릭> binarie > 버전.zip다운로드. 폴더 풀고 lib아래 jar파일 2개를 내 프로젝트의 WEB-INF>lib폴더에 넣어주면 끝.

JSTL 사용하기

< %@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %> 넣어주면 사용 가능. 앞의 uri 값은 사용할 태그 라이브러리 식별자이며 뒤의 prefix의 c는 태그에서 사용할 접두사이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<c:out value = "Hello World"/>
</body>
</html>

출처 : 국비 교육

profile
프로그래밍 공부 중!

0개의 댓글