Day50

2020. 12. 10. 10:18교육과정/KOSMO

키워드 : EL(표현언어)

 

 

****

 

 

 

1. EL ( 표현언어) 기초 (교재 CH.11)

    : 태그 형식

    : JSP 페이지에서 가급적 자바코딩을 줄이기 위해 사용

    : 꼭 필요한 곳에는 자바 코딩을 사용해야 한다. 

 

(1) EL을 비롯한 다양한 방법을 사용하여 VO에서 데이터 출력하기

     (06_el_class/1_info/InfoSave.jsp 파일)

 

    ① 자바빈즈 사용

이   름  : <jsp:getProperty property="name" name="info"><br/>
주민번호 : <jsp:getProperty property="gender" name="info"><br/>
성  별   : <jsp:getProperty property="id" name="info"><br/>

 

    ② 자바코딩 사용

이   름  : <%= info.getName() %><br/>
주민번호 : <%= info.getId() %><br/>
성  별   : <%= info.getGender() %><br/>

 

    ③ EL 사용

이   름  : ${info.name}<br/>
주민번호 : ${info.id}<br/>
성  별   : ${info.gender}<br/>  

 

< InfoSave.jsp 전체 소스 코드 >

더보기
<%@ page contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%>


<% request.setCharacterEncoding("UTF-8"); %>

<jsp:useBean id="info" class="info.beans.InfoBean">
	<jsp:setProperty name="info" property="name" />
  <jsp:setProperty name="info" property="id" />
</jsp:useBean>

<!DOCTYPE html>
<HTML>
<HEAD><TITLE> 자료 출력 </TITLE></HEAD>
<BODY>
	<H2>  당신의 신상명세서 확인 </H2>
	<!-- 1. 자바빈즈 사용 -->
	이   름  : <jsp:getProperty property="name" name="info"><br/>
	주민번호 : <jsp:getProperty property="gender" name="info"><br/>
	성  별   : <jsp:getProperty property="id" name="info"><br/>
	<!-- 2. 자바코딩 사용 -->  
	이   름  : <%= info.getName() %><br/>
	주민번호 : <%= info.getId() %><br/>
	성  별   : <%= info.getGender() %><br/>
	<!-- 3. EL 사용 -->  
	이   름  : ${info.name}<br/>
	주민번호 : ${info.id}<br/>
	성  별   : ${info.gender}<br/>  
	맞습니까????
</BODY>
</HTML>

 

 

(2) EL을 사용하여 데이터 출력하기

     (06_el_class/2_member/insertMember.jsp 파일)

<jsp:useBean id="mem" class="member.beans.Member">
	<jsp:setProperty name="mem" property="*"/>
</jsp:useBean>
....
<body>

아이디 : ${mem.id}<br/>
패스워드 : ${mem.password}<br/>
이름 : ${mem.name}<br/>
전화 : ${mem.tel}<br/>
주소 : ${mem.addr}<br/>

 

< insertMember.jsp 전체 소스 코드 >

더보기
<%@ page contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%>
<%@ page import="member.beans.*" %>

<% request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="mem" class="member.beans.Member">
	<jsp:setProperty name="mem" property="*"/>
</jsp:useBean>

<%
	MemberDao memDao = MemberDao.getInstance();
	memDao.insertMember(mem);
%>


<!DOCTYPE html>
<html>
<head>
<title> 회원가입 </title>
</head>
<body>
	아이디 : ${mem.id}<br/>
	패스워드 : ${mem.password}<br/>
	이름 : ${mem.name}<br/>
	전화 : ${mem.tel}<br/>
	주소 : ${mem.addr}<br/>
</body>
</html>

 

 

(3) EL을 비롯한 다양한 방법으로 데이터 전달 및 수신하기

     (06_el_class/3_object/first.jsp 파일, second.jsp 파일)

 

    ① 세션에 저장하여 데이터 전달 (First.jsp) → 세션으로 온 데이터 받기 (Second.jsp)

<%
    session.setAttribute("login", "당신의아이디");
%>

 

<%
    Object obj = session.getAttribute("login");
%>

 

    ② 쿠키 객체에 저장하여 데이터 전달 (First.jsp) → 쿠키로 온 데이터 받기 (Second.jsp)

<%
    Cookie c = new Cookie("isFlag","true");
    response.addCookie(c);
%>

 

<%
    Cookie[] cookies = request.getCookies();
    for(Cookie c : cookies) {
    
    }
%>

 

    ③ 파라미터에 저장하여 데이터 전달 (First.jsp) → 파라미터로 온 데이터 받기 (Second.jsp)

<a href ="Second.jsp?data=important"> 다음 페이지 </a>

 

<%
    String p = request.getParameter("data");
%>

 

    ④ EL을 사용하여 데이터 받기 (Second.jsp)

파라메터 값(전 페이지에서 넘어오는 값) : ${param.data} <br/> 

세션의 값 : ${sessionScope.login}<br/>

쿠키의 값 : ${cookie.isFlag.value}<br/>

→ 표현언어(EL)에서 파라미터를 통해 넘어오는 데이터를 가리키는 명칭으로 지정한 이름 : param

→ 표현언어(EL)에서 세션을 통해 넘어오는 데이터를 가리키는 명칭으로 지정한 이름 : sessionScope

    (session이란 이름은 이미 내장객체 명으로 사용중이라서 중복을 피하기 위해 지정한 것)

 

 

< First.jsp 전체 소스 코드 >

더보기
<%@ page contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title> 표현언어의 기본객체</title>
</head>
<body>

<%
	// 1. 세션에 저장하여 데이터 전달
	session.setAttribute("login", "당신의아이디");
	// 2. 쿠키 객체를 사용하여 데이터 전달
	Cookie c = new Cookie("isFlag","true");
	response.addCookie(c);
	
%>

	데이타 보냈습니다. <br/>
	<!-- 3. 파라미터에 저장하여 데이터 전달 (쿼리스트링) -->
	<a href ="Second.jsp?data=important"> 다음 페이지 </a>
	
</body>
</html>

< Second.jsp 전체 소스 코드>

더보기
<%@ page contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title> 데이타 받는 페이지 </title>
</head>
<body>
<% 
	// 기존 방식
	// 1. 세션으로 온 데이터 받기
	Object obj = session.getAttribute("login");
	// 2. 쿠키로 온 데이터 받기
	Cookie[] cookies = request.getCookies();
	for(Cookie c : cookies) {
		
	}
	// 3. 파라미터로 온 데이터 받기
	String p = request.getParameter("data");
	/////////////////////////////////////////////
%>

파라메터 값(전 페이지에서 넘어오는 값) : ${param.data} <br/> 
<!-- session이란 이름을 이미 내장객체 명으로 사용해서 또 쓰면 안 되서 정한 표현언어의 이름이 sessionScope??????? -->
세션의 값 : ${sessionScope.login}<br/>

쿠키의 값 :	 ${cookie.isFlag.value}<br/>


<hr>


</body>
</html>

 

 


2. JSTL if문

 

(06_el_class/4_jstl 폴더에서)

 

(1) 1_basic.jsp 라는 jsp 파일 생성

(2) 태그라이브러리를 삽입한다. 

<%@ taglib prefix='c' uri="http://java.sun.com/jsp/jstl/core" %>

 

(3) 변수를 선언한다.

<body>
<c:set var='gender' value='male'/>

 

(4) 제어흐름을 작성하면 if 조건에 맞을 경우 태그 사이의 문구가 화면에 출력된다. 

<c:if test="${genger == 'male'}">당신은 남자입니다.</c:if>
<c:if test="${gende r== 'female'}">당신은 여자입니다.</c:if>

 

(5) age 변수에 24를 지정하고, 만일 age가 20 이상이면 "성인" 출력하기

<c:set var='age' value='24' />
<c:if test="${age ge '20'}">성인</c:if>

 

(6) 10세 미만 "어린이" / 10세 이상 20세 미만 "청소년" / 그 외 "성인" 출력하기

<c:set var='age' value='14' />

<c:choose>
	<c:when test="${age lt 10}">어린이</c:when>
	<c:when test="${age ge 10 and age lt 20}">청소년</c:when>
	<c:otherwise>성인</c:otherwise>
</c:choose>

 

 


3. JSTL for문

 

(1) 1~100까지 합 출력하기

<c:set var='sum' value='0'/>
<c:forEach var='i' begin='1' end='100'>
	<c:set var='sum' value='${sum + i}' />
</c:forEach>
1 ~ 100까지의 합 : ${sum} <br/>

 

 

(2) 1~100까지 홀수의 합과 짝수의 합 출력하기

<c:set var='oddsum' value='0' />
<c:set var='evensum' value='0' />
<c:forEach var='i' begin='1' end='100'>
    <c:if test="${i % 2 != 0}">
    <c:set var='oddsum' value='${oddsum + i}'/>
    </c:if>
    <c:if test="${i % 2 == 0}">
    <c:set var='evensum' value='${evensum + i}'/>
    </c:if>
</c:forEach>
1 ~ 100까지의 홀수의 합 : ${oddsum} <br/>
1 ~ 100까지의 짝수의 합 : ${evensum} <br/>
<hr/>

 

 

 

< 1_basic.jsp 전체 소스 코드 >

더보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix='c' uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 1_basic.jsp </title>
</head>
<body>
<!-- 변수 선언 -->
<c:set var='gender' value='male'/>

<!-- 제어흐름 : 조건에 맞으면 태그 사이의 문구가 출력됨 -->
<c:if test="${gender == 'male'}">당신은 남자입니다.</c:if>
<c:if test="${gender == 'female'}">당신은 여자입니다.</c:if>
<hr/>

<!-- age 변수에 24를 지정하고, 
	 만일 age가 20 이상이면 "성인" 출력 -->
<c:set var='age' value='14' />
<c:if test="${age ge 20}">성인</c:if>
<hr/>

<c:choose>
	<c:when test="${age lt 10}">어린이</c:when> <%-- 10세 미만 --%>
	<c:when test="${age ge 10 and age lt 20}">청소년</c:when> <%-- 10세 이상 20세 미만 --%>
	<c:otherwise>성인</c:otherwise>
</c:choose>
<hr/>

<c:set var='sum' value='0'/>
<c:forEach var='i' begin='1' end='100'>
	<c:set var='sum' value='${sum + i}' />
</c:forEach>
1 ~ 100까지의 합 : ${sum}
<hr/>

<c:set var='oddsum' value='0' />
<c:set var='evensum' value='0' />
<c:forEach var='i' begin='1' end='100'>
	<c:if test="${i % 2 != 0}">
	<c:set var='oddsum' value='${oddsum + i}'/>
	</c:if>
	<c:if test="${i % 2 == 0}">
	<c:set var='evensum' value='${evensum + i}'/>
	</c:if>
</c:forEach>
1 ~ 100까지의 홀수의 합 : ${oddsum} <br/>
1 ~ 100까지의 짝수의 합 : ${evensum} <br/>
<hr/>

</body>
</html>

 


4. JSTL의 변수에 관하여

 

(06_el_class/4_jstl 폴더에서)

 

(1) 2_var.jps 파일 생성

(2) 태그라이브러리를 삽입하고 사용할 자바 파일을 임포트 한다. 

<%@ taglib prefix='c' uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="member.beans.Member" %>

 

(3) 클래스의 객체를 생성한 뒤 변수에 값을 지정한다. 

<% 
	Member m = new Member();
	m.setName("박길자");
	m.setId("800808-1234567");
%>

 

(4) EL 표현언어를 사용하여 화면에 출력해봐도 값이 출력되지 않는다. 

    (자바 객체와 EL 객체가 따로 관리 때문인듯.. 정확한 이유는 모름)

이름 : ${m.name} / 번호 : ${m.id}

 

 

(5) 객체를 따로 EL 변수에 담은 뒤 출력하면 화면에 정상적으로 나온다. 

<c:set var="m2" value="<%= m %>" />
이름 : ${m2.name} / 번호 : ${m2.id}

 

 

< 2_var.jsp 전체 소스 코드 >

더보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix='c' uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="member.beans.Member" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 2_var.jsp </title>
</head>
<body>

<% 
	Member m = new Member();
	m.setName("박길자");
	m.setId("800808-1234567");
%>


이름 : ${m.name} / 번호 : ${m.id}
이름 : <%= m.getName() %> / 번호 : <%= m.getId() %>

<c:set var="m2" value="<%= m %>" />
이름 : ${m2.name} / 번호 : ${m2.id}

</body>
</html>

 


5. JSTL을 사용하여 1~100까지 중 숫자 맞추기

 

(06_el_class/4_jstl/3_QuizNumberEl.jsp 파일에서)

 

(0) JSTL 설정

<%@ taglib prefix='c' uri="http://java.sun.com/jsp/jstl/core" %>

 

(1) 이전 화면의 값을 얻어와 변수에 지정

<c:set var="guess" value='${param.guess}' />

 

(2) 변수 guess에는 사용자가 입력하기 전에 null 값이므로 임의의 수를 만들어 세션에 지정

<c:if test="${empty guess}">
    자~ 게임을 시작합시다 <hr/>
    <%
        // 자바 코딩을 사용할 수 밖에 없음
        int ranNum = (int)(Math.random()*100) + 1;
    %>
</c:if>

 

(3) 세션의 값을 가져와 answer 변수에 지정

<c:if test="${empty guess}">
    자~ 게임을 시작합시다 <hr/>
    <%
        // 자바 코딩을 사용할 수 밖에 없음
        int ranNum = (int)(Math.random()*100) + 1;
        // 세션에 값 저장
        session.setAttribute("answer", ranNum);
    %>
</c:if>

 

(4) guess의 변수에 값이 있을 경우, 

    guess와 answer의 값이 같다면 맞췄다고 출력 / 다르다면 guess의 값이 answer보다 크거나 ㅈ ㅏㄱ다고 출력

<c:choose>
    <c:when test="${empty guess}"></c:when>
    <c:otherwise>
        <c:if test="${guess == answer }">
            정답입니다!
        </c:if>
        <c:if test="${guess gt answer}">
            너무 큰 숫자입니다!
        </c:if>
        <c:if test="${guess lt answer}">
            너무 작은 숫자입니다!
        </c:if>
    </c:otherwise>
</c:choose>

 

(결과)

 

 

 

< 3_QuizNumberEl.jsp 전체 소스 코드 >

더보기
<%@ page contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!-- 0. JSTL 설정 -->
<%@ taglib prefix='c' uri="http://java.sun.com/jsp/jstl/core" %>


<!DOCTYPE html>
<html>
<head>
<title> 1~100까지 중 숫자 맞추기 </title>
</head>
<body>

<!-- 1. 이전화면 값 얻어와 guess 변수에 지정 -->
<c:set var="guess" value='${param.guess}' />
<!-- 2. 그 값이 없다면 임의의 수를 만들어 세션에 지정 -->
<c:if test="${empty guess}">
	자~ 게임을 시작합시다 <hr/>
	<%
		// 자바 코딩을 사용할 수 밖에 없음
		int ranNum = (int)(Math.random()*100) + 1;
		// 세션에 값 저장
		session.setAttribute("answer", ranNum);
	%>
</c:if>

<!-- 3. 세션의 값을 가져와 answer 변수에 지정 -->
<c:set var="answer" value='${sessionScope.answer}' />

<!-- 4. guess의 변수에 값이 있다면 -->
<%--  (1) guess와 answer값이 같다면 맞춰다고 출력 --%>
<%--  (2) 다르다면 guess값이 answer값보다 크면 크다고 출력 작으면 작다고 출력 --%>
<c:choose>
	<c:when test="${empty guess}"></c:when>
	<c:otherwise>
		<c:if test="${guess == answer }">
			정답입니다!
		</c:if>
		<c:if test="${guess gt answer}">
			너무 큰 숫자입니다!
		</c:if>
		
		<c:if test="${guess lt answer}">
			너무 작은 숫자입니다!
		</c:if>
	</c:otherwise>
</c:choose>



	<hr><hr>
	1부터 100까지 수 중에서 하나를 잘 찍으시오~!! <br/>
	
	<form method='get'>
			어떤 수일까요?
			<input type='text' name='guess'>
			<input type='submit' value="Submit">
	</form>
</body>
</html>

 

 


6. 스프링 설치 (Spring)

 

스프링의 다양한 프로젝트 : Spring MVC / Spring Boot / Spring Cloud 등

                                    → 이를 통해 웹 어플리케이션, REST API, microservice를 개발

(스프링의 일부 기능을 개선한 스프링 부트는 추후 개별적으로..)

 

(1) http://www.spring.io 접속 - http://www.spring.io/tools3/sts/all 접속

 

(2) Spring Tool Suite 3 wiki 클릭 - 깃허브에서 full distribution on Eclipse 가장 최신 버전 중 window용 다운로드 (spring-tool-suite-3.9.14.RELEASE-e4.17.0-win32-x86_64.zip 로 끝나는 링크 클릭하여 다운 받음) - "여기에 풀기"로 압축 해제 (폴더명을 간단하게 하기 위함) - sts-bundle 폴더 - sts-3.9.14.RELEASE 폴더 - STS 실행 

     런타임 에러 발생할 경우, STS.ini 환경설정 파일에서 JDK 설치 경로에 관해 작성해준다. 

     (위치는 반드시 -vmargs 위에 자리해야 함)

 

(3) STS 실행 - Browse - C: - java - webwork

     - webwork 폴더 내에 Spring 폴더 생성 - Spring 폴더 내에 Basic 폴더 생성

 

(4) C:\java\webwork\Spring\Basic 을 WorkSpace로 하여 Launch (실행)

 

(5) 좌측 Package Explorer 우클릭

     - New

     - Spring Legacy Project 를 사용할 목적으로 Tools 3 설치 한 것 (아직 사용 안 함)

 

(6) 좌측 Package Explorer 우클릭

     - New

     - Java Project

     - 프로젝트명 지정해서 생성

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'교육과정 > KOSMO' 카테고리의 다른 글

Day52  (0) 2020.12.14
Day51  (0) 2020.12.11
Day49  (0) 2020.12.09
Day48  (1) 2020.12.08
Day47  (0) 2020.12.07