오늘이라도

[Web] 12. EL 문법(표현식) ① : jsp17 ~ 22 본문

취업성공패키지 SW 개발자 교육/Web

[Web] 12. EL 문법(표현식) ① : jsp17 ~ 22

upcake_ 2020. 5. 25. 18:47
반응형

★EL(Expression Language) 문법(표현식)
  ○ 기본 형식 ▶ ${ 출력값 } 출력값은 아래와 같이 다양한 형태로 표현 가능

형식 예시 해당 jsp 파일 번호
${ param.변수이름 } ${param.addr } jsp20.jsp
${ 객체이름.속성이름 } ${dto.addr } jsp20.jsp
${ 객체이름 } ${irum} jsp21.jsp, jsp22.jsp
${ paramValues.배열이름[인덱스] }    
${ 배열이름[인덱스] }    
${ 배열이름[인덱스].속성이름 }    

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP17 Main</title>
</head>
<body>
	<form action="jsp17.jsp" method="post">
		이름 : <input type="text" name="irum" required="required" /><br />
		아이디 : <input type="text" name="id" required="required" /><br />
		비밀번호 : <input type="password" name="pw" required="required" /><br />
		나이 : <input type="number" name="age" required="required" /><br />
		주소 : <input type="text" name="addr" required="required" /><br />
		전화번호 : <input type="text" name="tel" required="required" /><br />
		<input type="submit" value="회원가입" />
		<input type="reset" value="초기화" />
		<input type="button" value="회원 목록 보기" onclick="location.href='jsp06.jsp'" />
	</form>
</body>
</html>

▲jsp17Main.html

 

form data

 

<%@page import="com.hanul.study.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
request.setCharacterEncoding("utf-8");
//매개 변수 전달 받음
String irum = request.getParameter("irum");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
int age = Integer.parseInt(request.getParameter("age"));
String addr = request.getParameter("addr");
String tel = request.getParameter("tel");
MemberDTO dto = new MemberDTO(irum, id, pw, age, addr, tel);
pageContext.setAttribute("dto", dto);	//현재 페이지에서 사용할 바인딩 객체 생성 : page scope
%>

<jsp:useBean id="actionDTO" class="com.hanul.study.MemberDTO">
	<jsp:setProperty property="*" name="actionDTO" />
</jsp:useBean>

<!-- dto 객체를 jsp18.jsp로 넘기자 : 바인딩(연결) 객체 -->
<%
request.setAttribute("dto", dto);	//현재 페이지와 요청한 페이지에 사용할 바인딩 객체 생성 : request scope
%>
<jsp:forward page="jsp18.jsp" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
○ 이름(JSP) : <%=irum %><br />
○ 이름(JSP, dto) : <%=dto.getIrum() %><br />
○ 이름(JSP, actionDTO) : <%=actionDTO.getIrum() %><br />
<br />
○ 아이디(Action Tag) : [jsp:getProperty] 매개 변수만 전달 받은 상태에서는 사용 불가능<br />
○ 아이디(Action Tag) : [jsp:getProperty] jsp:useBean으로 생성된 객체에서만 사용 가능<br />
○ 아이디(Action Tag) : <jsp:getProperty property="id" name="actionDTO"/><br />
<br />
○ 주소(EL, param) : ${param.addr }<br />
○ 주소(EL, dto) : ${dto.addr }<br />
○ 주소(EL, actionDTO) : ${actionDTO.addr }<br /><br />
</body>
</html>

▲jsp17.jsp

 

dto

 

<%@page import="com.hanul.study.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
request.setCharacterEncoding("utf-8");
//MemberDTO dto = (MemberDTO) pageContext.getAttribute("dto"); // request scope로 넘어왔으므로 request로 받는다.
MemberDTO dto = (MemberDTO) request.getAttribute("dto");
%>

<!-- dto 객체를 jsp19.jsp로 넘기자 -->
<%
request.setAttribute("dto", dto);

//자바 코드로 바인딩 객체 넘기면서 페이지 이동
//RequestDispatcher rd = request.getRequestDispatcher("jsp19.jsp");
//rd.forward(request, response);
%>
<jsp:forward page="jsp19.jsp" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
○ 이름(JSP, dto) : <%=dto.getIrum() %><br />
</body>
</html>

▲jsp18.jsp

 

dto

 

<%@page import="com.hanul.study.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
MemberDTO dto = (MemberDTO) request.getAttribute("dto");
%>

<jsp:useBean id="actionDTO" class="com.hanul.study.MemberDTO">
	<jsp:setProperty property="*" name="actionDTO"/>
</jsp:useBean>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
○ 이름<br />
  - JSP : <%=dto.getIrum() %><br />
  - Action Tag : <jsp:getProperty property="irum" name="actionDTO"/><br />
  - EL : ${dto.irum }, ${actionDTO.irum }<br />
</body>
</html>

▲jsp19.jsp

 

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP17 Main</title>
</head>
<body>
	<form action="jsp20.jsp" method="post">
		이름 : <input type="text" name="irum" required="required" /><br />
		아이디 : <input type="text" name="id" required="required" /><br />
		비밀번호 : <input type="password" name="pw" required="required" /><br />
		나이 : <input type="number" name="age" required="required" /><br />
		주소 : <input type="text" name="addr" required="required" /><br />
		전화번호 : <input type="text" name="tel" required="required" /><br />
		<input type="submit" value="회원가입" />
		<input type="reset" value="초기화" />
		<input type="button" value="회원 목록 보기" onclick="location.href='jsp06.jsp'" />
	</form>
</body>
</html>

▲jsp20Main.html

 

form data

 

<%@page import="com.hanul.study.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
//방법 ①
String irum = request.getParameter("irum"); //▶ ${param.irum }
//중간 생략
//MemberDTO dto = new MemberDTO(irum, id, ~~~);

//방법 ②
MemberDTO dto = new MemberDTO();
dto.setIrum(irum);
dto.setId(request.getParameter("id"));
dto.setPw(request.getParameter("pw"));
dto.setAge(Integer.parseInt(request.getParameter("age")));
dto.setAddr(request.getParameter("addr"));
dto.setTel(request.getParameter("tel"));
//이하 생략
%>

<%
//현재 페이지에서 사용할 바인딩(연결) 객체 생성 : EL 문법에 사용
pageContext.setAttribute("dto", dto);
%>

<jsp:useBean id="actionDTO" class="com.hanul.study.MemberDTO">
	<jsp:setProperty property="*" name="actionDTO"/>
</jsp:useBean>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP20</title>
</head>
<body>
○ JSP 기본 출력<br />
이름 : <%=dto.getIrum() %><br />
아이디 : <%=dto.getId() %><br />
주소 : <%=dto.getAddr() %><br />
<br />
○ Action Tag 출력<br />
이름 : <jsp:getProperty property="irum" name="actionDTO"/><br />
아이디 : <jsp:getProperty property="id" name="actionDTO"/><br />
주소 : <jsp:getProperty property="addr" name="actionDTO"/><br />
<br />
ㅇ EL 문법 출력<br />
이름 : ${param.irum }(parameter), ${dto.irum }(dto), ${actionDTO.irum }(actionDTO)<br />
<!-- 파라미터, dto Getter and Setter, action태그 -->
<!-- dto 객체는 바인딩 객체를 만들지 않았다면 출력되지 않는다 -->
아이디 : ${param.id }(parameter), ${dto.id }(dto), ${actionDTO.id }(actionDTO)<br />
주소 : ${param.addr }(parameter), ${dto.addr }(dto), ${actionDTO.addr }(actionDTO)<br /> 
</body>
</html>

▲jsp20.jsp

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
int sum = 0;
for(int i = 1; i <= 100; i++) {
	sum += i;
}

//sum 결괏값을 현재 페이지 출력 : EL 문법을 사용하기 위해 바인딩 객체 생성
pageContext.setAttribute("sum", sum);

//sum 결괏값을 jsp22.jsp 넘기자 : 바인딩 객체 생성 ▶ request
request.setAttribute("sum", sum);
RequestDispatcher rd = request.getRequestDispatcher("jsp22.jsp"); //페이지 호출
rd.forward(request, response); //페이지 전환
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
○ JSP 출력 : <%=sum %><br />
○ EL 출력 : ${sum }
</body>
</html>

▲jsp21.jsp

 

request, response

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
//jsp21.jsp에서 넘겨준 바인딩 객체(sum)를 받는다.
//int sum = (int) request.getAttribute("sum");

//바인딩(연결) 객체는 Object Type → 클래스 타입으로 받는다 : Casting 필수
Integer sum = (Integer) request.getAttribute("sum");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 22</title>
</head>
<body>
○ 1부터 100까지의 누적합(JSP) : <%=sum %><br />
○ 1부터 100까지의 누적합(EL) : ${sum }
</body>
</html>

▲jsp22.jsp

반응형