관리 메뉴

거니의 velog

231124_SPRING 2 (3-2) 본문

대덕인재개발원_웹기반 애플리케이션

231124_SPRING 2 (3-2)

Unlimited00 2023. 11. 24. 08:29

[ModelMemberController.java]

package kr.or.ddit.controller.model;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@Controller
public class ModelMemberController {

	/*
	 * [ 6장 : 데이터 전달자 모델 ]
	 * 
	 * 		1. 모델 객체
	 * 
	 * 			- Model 객체는 뷰(View)에 컨트롤러에서 생성된 데이터를 담아서 전달하는 역할을 한다.
	 * 
	 * 		2. 모델을 통한 데이터 전달
	 * 
	 * 			- Model 객체를 통해서 다양한 데이터를 뷰(View)에 전달할 수 있다.
	 * 
	 * 			** 우리가 사용해 본 데이터 전달자
	 * 				> ModelAndView
	 * 				> Model
	 */
	
	// 1) 매개변수에 선언된 Model 객체의 addAttribute() 메서드를 호출하여 데이터를 뷰(View)에 전달한다.
	@RequestMapping(value = "/read01", method = RequestMethod.GET)
	public String read01(Model model) {
		log.info("read01() 실행...!");
		
		model.addAttribute("userId", "hongkd");
		model.addAttribute("password", "1234");
		model.addAttribute("email", "aaa@ccc.com");
		model.addAttribute("userName", "홍길동");
		model.addAttribute("birthDay", "1999-09-09");
		
		return "member/read01";
	}
	
}

[read01.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>READ01 - Result</title>
	</head>
	<body>
		
		<h3>READ01 - Result</h3>
		userId : ${userId }<br />
		password : ${password }<br />
		email : ${email }<br />
		userName : ${userName }<br />
		birthDay : ${birthDay }<br />
		
	</body>
</html>

- http://localhost/read01


	// 2) Model 객체에 자바빈즈 클래스 객체를 값으로만 전달할 때는 뷰에서 참조할 이름을 클래스명의 앞글자를 소문자로 변환하여 처리한다.
	@RequestMapping(value = "/read02", method = RequestMethod.GET)
	public String read02(Model model) {
		log.info("read02() 실행...!");
		
		Member member = new Member();
		member.setUserId("hongkd");
		member.setPassword("1234");
		member.setEmail("aaa@ccc.com");
		member.setUserName("홍길동");
		member.setBirthDay("1999-09-09");
		
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, 1999);
		cal.set(Calendar.MONTH, 10);
		cal.set(Calendar.DAY_OF_MONTH, 10);
		
		member.setDateOfBirth(cal.getTime());
		model.addAttribute(member);
		
		return "member/read02";
	}

[read02.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>READ02 - Result</title>
	</head>
	<body>
		
		<h3>READ02 - Result</h3>
		userId : ${member.userId }<br />
		password : ${member.password }<br />
		email : ${member.email }<br />
		userName : ${member.userName }<br />
		birthDay : ${member.birthDay }<br />
		dateOfBirth : ${member.dateOfBirth }<br />
		
	</body>
</html>

- http://localhost/read02


	// 3) Model 객체에 자바빈즈 클래스 객체를 특정한 이름을 지정하여 전달할 수 있다.
	@RequestMapping(value = "/read03", method = RequestMethod.GET)
	public String read03(Model model) {
		log.info("read03() 실행...!");
		
		Member member = new Member();
		member.setUserId("hongkd");
		member.setPassword("1234");
		member.setEmail("aaa@ccc.com");
		member.setUserName("홍길동");
		member.setBirthDay("1999-09-09");
		
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, 1999);
		cal.set(Calendar.MONTH, 10);
		cal.set(Calendar.DAY_OF_MONTH, 10);
		
		member.setDateOfBirth(cal.getTime());
		model.addAttribute("user", member);
		
		return "member/read03";
	}

[read03.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>READ03 - Result</title>
	</head>
	<body>
		
		<h3>READ03 - Result</h3>
		userId : ${user.userId }<br />
		password : ${user.password }<br />
		email : ${user.email }<br />
		userName : ${user.userName }<br />
		birthDay : ${user.birthDay }<br />
		dateOfBirth : ${user.dateOfBirth }<br />
		
	</body>
</html>

- http://localhost/read03


	// 4) Model 객체를 통해 배열과 컬렉션 객체를 전달할 수 있다.
	@RequestMapping(value = "/read04", method = RequestMethod.GET)
	public String read04(Model model) {
		log.info("read04() 실행...!");
		
		String[] carArray = {"jeep", "bmw"};
		
		List<String> carList = new ArrayList<String>();
		carList.add("jeep");
		carList.add("bmw");
		
		String[] hobbyArray = {"Music", "Movie"};
		
		List<String> hobbyList = new ArrayList<String>();
		hobbyList.add("Music");
		hobbyList.add("Movie");
		
		model.addAttribute("carArray", carArray);
		model.addAttribute("carList", carList);
		model.addAttribute("hobbyArray", hobbyArray);
		model.addAttribute("hobbyList", hobbyList);
		
		return "member/read04";
	}

[read04.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>READ04 - Result</title>
	</head>
	<body>
		
		<h3>READ04 - Result</h3>
		
		<h4>carArray</h4>
		<hr />
		<c:forEach items="${carArray }" var="car">
			<c:out value="${car }" />&nbsp;
		</c:forEach>
		<br /><hr />
		
		<h4>carList</h4>
		<hr />
		<c:forEach items="${carList }" var="car">
			<c:out value="${car }" />&nbsp;
		</c:forEach>
		<br /><hr />
		
		<h4>hobbyArray</h4>
		<hr />
		<c:forEach items="${hobbyArray }" var="hobby">
			<c:out value="${hobby }" />&nbsp;
		</c:forEach>
		<br /><hr />
		
		<h4>hobbyList</h4>
		<hr />
		<c:forEach items="${hobbyList }" var="hobby">
			<c:out value="${hobby }" />&nbsp;
		</c:forEach>
		<br /><hr />
		
	</body>
</html>

- http://localhost/read04


	// 5) Model 객체를 통해 다양한 타입의 값을 전달할 수 있다.
	@RequestMapping(value = "/read05", method = RequestMethod.GET)
	public String read05(Model model) {
		log.info("read05() 실행...!");
		
		Member member = new Member();
		member.setUserId("hongkd");
		member.setPassword("1234");
		member.setEmail("aaa@ccc.com");
		member.setUserName("홍길동");
		member.setBirthDay("1999-09-09");
		member.setGender("남자");
		member.setDeveloper("Y");
		member.setForeigner(true);
		member.setNationality("Korea");
		member.setCars("Jeep");
		
		String[] carArray = {"jeep", "bmw"};
		member.setCarArray(carArray);
		
		List<String> carList = new ArrayList<String>();
		carList.add("bmw");
		carList.add("audi");
		member.setCarList(carList);
		
		member.setHobby("Music, Movie");
		String[] hobbyArray = {"Music", "Movie"};
		member.setHobbyArray(hobbyArray);
		
		List<String> hobbyList = new ArrayList<String>();
		hobbyList.add("Music");
		hobbyList.add("Sports");
		member.setHobbyList(hobbyList);
		
		Address address = new Address();
		address.setPostCode("080098");
		address.setLocation("Daejeon");
		member.setAddress(address);
		
		List<Card> cardList = new ArrayList<Card>();
		Card card1 = new Card();
		card1.setNo("12345");
		
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, 2023);
		cal.set(Calendar.MONTH, 11);
		cal.set(Calendar.DAY_OF_MONTH, 20);
		card1.setValidMonth(cal.getTime());
		cardList.add(card1);
		
		Card card2 = new Card();
		card2.setNo("67890");
		
		cal.set(Calendar.YEAR, 2023);
		cal.set(Calendar.MONTH, 11);
		cal.set(Calendar.DAY_OF_MONTH, 23);
		card2.setValidMonth(cal.getTime());
		cardList.add(card2);
		
		member.setCardList(cardList);
		member.setDateOfBirth(cal.getTime());
		member.setIntroduction("안녕하세요!\n반갑습니다!");
		
		model.addAttribute("user", member);
		
		return "member/read05";
	}

[read05.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>READ05 - Result</title>
	</head>
	<body>
		
		<h3>READ05 - Result</h3>
		userId : ${user.userId }<br />
		password : ${user.password }<br />
		userName : ${user.userName }<br />
		email : ${user.email }<br />
		birthDay : ${user.birthDay }<br />
		gender : ${user.gender }<br />
		hobby : ${user.hobby }<br />
		
		<p>hobbyArray</p>
		<c:forEach items="${user.hobbyArray }" var="hobby">
			<c:out value="${hobby }" />
		</c:forEach>
		<br />
		<br />
		
		<p>hobbyList</p>
		<c:forEach items="${user.hobbyList }" var="hobby">
			<c:out value="${hobby }" />
		</c:forEach>
		<br />
		<br />
		
		foreigner : ${user.foreigner }<br />
		developer : ${user.developer }<br />
		nationality : ${user.nationality }<br />
		address.postCode : ${user.address.postCode }<br />
		address.location : ${user.address.location }<br />
		
		<p>cardList</p>
		<c:forEach items="${user.cardList }" var="card">
			<c:out value="${card.no } ${card.validMonth }" />
		</c:forEach>
		<br />
		<br />
		
		<p>carList</p>
		<c:forEach items="${user.carList }" var="car">
			<c:out value="${car }" />
		</c:forEach>
		<br />
		<br />
		
		introduction : ${user.introduction }<br />
		dateOfBirth : ${user.dateOfBirth }<br />
		
	</body>
</html>

- http://localhost/read05


[ModelArrtibuteMemberController.java]

package kr.or.ddit.controller.model;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@Controller
@RequestMapping("/modelarrtibute")
public class ModelArrtibuteMemberController {

	/*
	 * 		3. @ModelArrtibute 어노테이션
	 * 
	 * 			- @ModelArrtibute는 전달받은 매개변수를 강제로 Model에 담아서 전달하도록 할 때 필요한 어노테이션이다
	 */
	
	@RequestMapping(value = "/registerForm", method = RequestMethod.GET)
	public String registerForm() {
		log.info("registerForm() 실행...!");
		return "member/registerModelAttributeForm";
	}
	
}

[registerModelAttributeForm.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>registerModelAttributeForm</title>
	</head>
	<body>
		
		<h3>3. @ModelAttribute 어노테이션</h3>
		<hr />
		
		<p>2) 기본 자료형인 매개변수에 @ModelAttribute 어노테이션을 지정하여 데이터를 전달한다.</p>
		<form action="/modelattribute/register02" method="post">
			userId : <input type="text" name="userId" /><br />
			password : <input type="text" name="password" /><br />
			<button type="submit">전송</button>
		</form>
		
	</body>
</html>

- http://localhost/modelarrtibute/registerForm


	// 2) 기본 자료형인 매개변수에 @ModelAttribute 어노테이션을 지정하여 데이터를 전달한다.
	// 이 때, 어노테이션을 적용하지 않은 기본 자료형인 경우엔 데이터를 전달할 수 없다.
	@RequestMapping(value = "/register02", method = RequestMethod.POST)
	public String register02(
			@ModelAttribute String userId,
			@ModelAttribute String password
			) {
		
		log.info("register02() 실행...!");
		log.info("userId : " + userId);
		log.info("password : " + password);
		
		return "result";
	}

[result.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>RESULT</title>
	</head>
	<body>
		userId : ${userId }<br />
		password : ${password }<br />
		
		member.userId : ${member.userId }<br />
		member.password : ${member.password }<br />
		
		msg : ${msg }
	</body>
</html>

- http://localhost/modelarrtibute/registerForm


	// 2) 기본 자료형인 매개변수에 @ModelAttribute 어노테이션을 지정하여 데이터를 전달한다.
	// 이 때, 어노테이션을 적용하지 않은 기본 자료형인 경우엔 데이터를 전달할 수 없다.
	@RequestMapping(value = "/register02", method = RequestMethod.POST)
	public String register02(
			@ModelAttribute("userId") String userId,
			@ModelAttribute("password") String password
			) {
		
		log.info("register02() 실행...!");
		log.info("userId : " + userId);
		log.info("password : " + password);
		
		return "result";
	}


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>registerModelAttributeForm</title>
	</head>
	<body>
		
		<h3>3. @ModelAttribute 어노테이션</h3>
		<hr />
		
		<p>2) 기본 자료형인 매개변수에 @ModelAttribute 어노테이션을 지정하여 데이터를 전달한다.</p>
		<form action="/modelarrtibute/register02" method="post">
			userId : <input type="text" name="userId" /><br />
			password : <input type="text" name="password" /><br />
			<button type="submit">전송</button>
		</form>
		
		<p>3) 자바빈즈 규칙에 맞는 객체는 매개변수로 선언하면 기본적으로 전달된다.</p>
		<form action="/modelarrtibute/register03" method="post">
			userId : <input type="text" name="userId" /><br />
			password : <input type="text" name="password" /><br />
			<button type="submit">전송</button>
		</form>
		
	</body>
</html>
	// 3) 자바빈즈 규칙에 맞는 객체는 매개변수로 선언하면 기본적으로 전달된다.
	@RequestMapping(value = "/register03", method = RequestMethod.POST)
	public String register03(Member member) {
		log.info("register03() 실행...!");
		
		log.info("userId : " + member.getUserId());
		log.info("password : " + member.getPassword());
		
		return "result";
	}

- http://localhost/modelarrtibute/registerForm


	// 3) 자바빈즈 규칙에 맞는 객체는 매개변수로 선언하면 기본적으로 전달된다.
	@RequestMapping(value = "/register03", method = RequestMethod.POST)
	public String register03(Member user) {
		log.info("register03() 실행...!");
		
		// Member 객체의 객체명 앞글자가 소문자로 바뀌어 화면단에 key로 넘어간다.
		log.info("userId : " + user.getUserId());
		log.info("password : " + user.getPassword());
		
		return "result";
	}

[RedirectAttributeMemberController.java]

package kr.or.ddit.controller.model;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@Controller
@RequestMapping("/redirectattribute")
public class RedirectAttributeMemberController {

	/*
	 * 		4. RedirectAttribute 타입
	 * 
	 * 			- RedirectAttribute는 일회성 데이터를 전달하는 용도로 사용한다.
	 */
	
	// RedirectAttribute 타입 테스트 페이지
	@RequestMapping(value = "/registerForm", method = RequestMethod.GET)
	public String registerForm() {
		log.info("registerForm() 실행...!");
		return "/member/registerRedirectAttributeForm";
	}
	
}

[registerRedirectAttributeForm.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>registerRedirectAttributeForm</title>
	</head>
	<body>
		
		<h3>RedirectAttribute 타입</h3>
		<form action="/redirectattribute/register" method="post">
			userId : <input type="text" name="userId" /><br />
			password : <input type="text" name="password" /><br />
			msg : <input type="text" name="msg" /><br />
			<button type="submit">전송</button>
		</form>
		
	</body>
</html>
package kr.or.ddit.controller.model;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import kr.or.ddit.vo.Member;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Controller
@RequestMapping("/redirectattribute")
public class RedirectAttributeMemberController {

	/*
	 * 		4. RedirectAttribute 타입
	 * 
	 * 			- RedirectAttribute는 일회성 데이터를 전달하는 용도로 사용한다.
	 */
	
	// RedirectAttribute 타입 테스트 페이지
	@RequestMapping(value = "/registerForm", method = RequestMethod.GET)
	public String registerForm() {
		log.info("registerForm() 실행...!");
		return "/member/registerRedirectAttributeForm";
	}
	
	@RequestMapping(value = "/register", method = RequestMethod.POST)
	public String register(
			Member member, String msg, RedirectAttributes ra
			) {
		log.info("register() 실행...!");
		log.info("userId : " + member.getUserId());
		log.info("password : " + member.getPassword());
		log.info("msg : " + msg);
		ra.addFlashAttribute("msg", msg);
		return "redirect:/redirectattribute/result";
	}
	
	@RequestMapping(value = "/result", method = RequestMethod.GET)
	public String result() {
		log.info("result() 실행...!");
		return "result";
	}
	
}

- http://localhost/redirectattribute/registerForm

일회성 메시지 이므로 새로고침하면 msg가 사라진다.


[JSPHomeController.java]

package kr.or.ddit.controller.jsp;

import org.springframework.stereotype.Controller;

@Controller
public class JSPHomeController {

	/*
	 * 		[ 7장 : JSP ]
	 * 
	 * 			1. 지시자
	 * 
	 * 				- 지시자(directive)는 JSP 페이지에 대한 설정 정보를 지정할 때 사용한다.
	 * 				- JSP가 제공하는 지시자에는 page 지시자, taglib 지시자, include 지시자로 세 가지가 있다.
	 * 
	 * 					1) page 지시자
	 * 
	 * 						- JSP 페이지에 대한 정보를 지정한다.
	 * 
	 * 							속성				|	설명
	 * 						--------------------------------------------------------------
	 * 						contentType			|	JSP가 생성할 문서의 MIME 타입과 문자 코드를 지정한다.
	 * 						pageEncoding		|	JSP 페이지 자체의 문자 코드를 지정한다.
	 * 						session				|	JSP 페이지가 세션을 사용할 지의 여부를 결정한다.
	 * 						import				|	JSP 페이지에서 사용할 자바 클래스를 지정한다.
	 * 						--------------------------------------------------------------
	 * 
	 * 					2) taglib 지시자
	 * 
	 * 						- JSP 페이지에서 사용할 태그 라이브러리를 지정한다.
	 * 
	 * 							속성				|	설명
	 * 						--------------------------------------------------------------
	 * 						prefix				|	태그 라이브러리를 호출할 때 사용할 접두어를 지정한다.
	 * 						uri					|	TDL 파일이 위치한 URI 혹은 파일 경로를 지정한다.
	 * 						--------------------------------------------------------------
	 * 
	 * 					3) include 지시자
	 * 
	 * 						- JSP 페이지의 특정 영역에 다른 문서를 포함한다.
	 * 
	 * 							속성				|	설명
	 * 						--------------------------------------------------------------
	 * 						file				|	포함할 파일의 경로를 지정한다.
	 * 						--------------------------------------------------------------
	 * 
	 * 			2. 스크립틀릿
	 * 
	 * 				- 스크립틀릿(Scriptlet)은 JSP 페이지에서 자바 코드를 실행할 때 사용하는 코드의 블록이다.
	 * 				- 스크립틀릿 코드 블록은 "<%" 와 "%>" 사이, 그리고  "<%=" 와 "%>" 사이에 자바 코드를 포함할 수 있다.
	 * 				- 현재는 스크립틀릿을 사용하기 보다는 JSTL과 같은 커스텀 태그 라이브러리와 EL을 조합해서 JSP를 구현하는 방법을 많이 사용한다.
	 * 
	 * 			3. 커스텀 태그 라이브러리
	 * 
	 * 				- 스크립트 요소가 많아지면 많아질수록 JSP 코드는 복잡해진다.
	 * 				- 이 문제를 해결하는 한 가지 방법은 커스텀 태그를 사용하는 것이다.
	 * 				- 커스텀 태그를 사용하면 뷰를 표시하기 위한 로직을 공통화하거나, 표현하기 복잡한 로직을 캡슐화할 수 있어서
	 * 				- JSP의 구현 코드를 간결하게 만들 수 있다. 그리고, 커스텀 태그를 모아 놓은 것을 커스텀 태그 라이브러리라고 한다.
	 * 
	 * 				# 대표적인 태그 라이브러리
	 * 				- JSTL(JavaServer Pages Standard Tag Library)
	 * 				- spring-form JSP Tag Library
	 * 				- spring JSP Tag Library
	 * 				- spring Security JSP Tag Library
	 * 
	 * 			4. 표현언어(EL)
	 * 
	 * 				- JSP는 EL(Expression Language)이라는 표현 언어를 사용해 값의 참조, 출력, 연산을 할 수 있다.
	 * 				- EL 식은 ${...} 또는 #{...} 형식으로 작성한다.
	 * 
	 * 				# EL을 사용하여 객체를 조회하는 방법은 다음과 같다.
	 * 				- 자바빈즈 프로퍼티를 조회하는 경우 "속성명.프로퍼티명"을 지정한다.
	 * 				- List나 배열 요소를 조회하는 경우 "속성명[요소위치]"를 지정한다.
	 * 				- Map 요소를 조회하는 경우 "속성명.키명" 또는 "속성명[키명]"을 지정한다.
	 * 
	 * 				# 사용 가능한 연산자
	 * 				- EL에서는 다음과 같은 연산자를 사용할 수 있다.
	 * 
	 * 					# 산술 연산자
	 * 						+   |   -   |   *   |   /(div)   |   %(mod)   |
	 * 					---------------------------------------------------
	 * 					  더하기	|  빼기	|  곱하기	|  나누기		 |	나머지	  |
	 * 					---------------------------------------------------
	 * 
	 * 					# 비교 연산자
	 * 					연산자		|		설명
	 * 					---------------------------------------------------
	 * 					==(eq)		| 같은 값인지 비교한다
	 * 					!=(ne)		| 다른 값인지 비교한다
	 * 					<=(le)		| 왼쪽이 작거나 같은 값인지 비교한다
	 * 					>=(ge)		| 왼쪽이 크거나 같은 값인지 비교한다
	 * 					<(lt)		| 왼쪽이 작은 값인지 비교한다
	 * 					>(gt)		| 왼쪽이 큰 값인지 비교한다
	 * 
	 * 					# empty 연산자
	 * 					- null 이거나 공백(문자열의 경우 공백 문자)인지 비교
	 * 
	 * 						[true 조건:::]
	 * 							- null 값, 빈 문자열(""), 길이가 0인 배열, 빈 Collection
	 * 
	 * 					# 논리 연산자
	 * 						연산자	|		설명
	 * 					---------------------------------------------------
	 * 					&&(and)		| 두 피연산자 모두 true 이면 bool true를 반환하고, 그렇지 않으면 false를 반환한다.
	 * 					||(or)		| 두 피연산자 중 하나 또는 모두 true면 bool true를 반환하고, 그렇지 않으면 false를 반환한다.
	 * 					!(not)		| 해당 피연산자의 의미를 반대로 바꾼다.
	 * 					---------------------------------------------------
	 */
	
}

	@RequestMapping(value = "/home0104", method = RequestMethod.GET)
	public String home0104(Model model) {
		log.info("home0104() 실행...!");
		
		Map<String, String> memberMap = new HashMap<String, String>();
		memberMap.put("userId", "hong");
		memberMap.put("password", "1234");
		memberMap.put("email", "aaa@ccc.com");
		memberMap.put("userName", "홍길동");
		
		model.addAttribute("memberMap", memberMap);
		return "home/home0104";
	}

[home0104.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>home0104</title>
	</head>
	<body>
		
		<h3>4. 표현언어(EL)을 이용하여 출력</h3>
		<p>1) 자바빈즈 프로퍼티를 조회하는 경우 '속성명.프로퍼티명' 또는 '속성명[키명]'을 지정한다.</p>
		
		<table border="1">
			<tr>
				<td>\${memberMap.userId }</td>
				<td>${memberMap["userId"] }</td>
			</tr>
			<tr>
				<td>\${memberMap.password }</td>
				<td>${memberMap["password"] }</td>
			</tr>
			<tr>
				<td>\${memberMap.email }</td>
				<td>${memberMap["email"] }</td>
			</tr>
			<tr>
				<td>\${memberMap.userName }</td>
				<td>${memberMap["userName"] }</td>
			</tr>
		</table>
		
	</body>
</html>

- http://localhost/home0104


	// 산술 연산자
	@RequestMapping(value = "/home0201", method = RequestMethod.GET)
	public String home0201(Model model) {
		log.info("home0201() 실행...!");
		int coin = 100;
		model.addAttribute("coin", coin);
		return "home/home0201";
	}

[home0201.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>home0104</title>
	</head>
	<body>
		
		<h3>4. 표현언어(EL)</h3>
		<p>2) 산술 연산자를 이용한 방법</p>
		
		<table border="1">
			<tr>
				<td>\${coin }</td>
				<td>${coin }</td>
			</tr>
			<tr>
				<td>\${coin + 100 }</td>
				<td>${coin + 100 }</td>
			</tr>
			<tr>
				<td>\${coin - 100 }</td>
				<td>${coin - 100 }</td>
			</tr>
			<tr>
				<td>\${coin * 100 }</td>
				<td>${coin * 100 }</td>
			</tr>
			<tr>
				<td>\${coin / 100 }</td>
				<td>${coin / 100 }</td>
			</tr>
			<tr>
				<td>\${coin div 100 }</td>
				<td>${coin div 100 }</td>
			</tr>
			<tr>
				<td>\${coin % 100 }</td>
				<td>${coin % 100 }</td>
			</tr>
			<tr>
				<td>\${coin mod 100 }</td>
				<td>${coin mod 100 }</td>
			</tr>
		</table>
		
	</body>
</html>

- http://localhost/home0201


	// 비교 연산자
	@RequestMapping(value = "/home0202", method = RequestMethod.GET)
	public String home0202(Model model) {
		log.info("home0202() 실행...!");
		
		int coin = 1000;
		String userId = "hongkd";
		
		model.addAttribute("coin", coin);
		model.addAttribute("userId", userId);
		
		return "home/home0202";
	}

[home0202.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>home0104</title>
	</head>
	<body>
		
		<h3>4. 표현언어(EL)</h3>
		<p>3) 비교 연산자를 이용한 방법</p>
		
		<table border="1">
			<tr>
				<td>\${coin == 1000 }</td>
				<td>${coin == 1000 }</td>
			</tr>
			<tr>
				<td>\${coin eq 1000 }</td>
				<td>${coin eq 1000 }</td>
			</tr>
			<tr>
				<td>\${coin != 500 }</td>
				<td>${coin != 500 }</td>
			</tr>
			<tr>
				<td>\${coin ne 500 }</td>
				<td>${coin ne 500 }</td>
			</tr>
			<tr>
				<td>\${coin &lt; 2000 }</td>
				<td>${coin < 2000 }</td>
			</tr>
			<tr>
				<td>\${coin lt 2000 }</td>
				<td>${coin lt 2000 }</td>
			</tr>
			<tr>
				<td>\${coin &gt; 500 }</td>
				<td>${coin > 500 }</td>
			</tr>
			<tr>
				<td>\${coin gt 500 }</td>
				<td>${coin gt 500 }</td>
			</tr>
			<tr>
				<td>\${coin &lt;= 1000 }</td>
				<td>${coin <= 1000 }</td>
			</tr>
			<tr>
				<td>\${coin le 1000 }</td>
				<td>${coin le 1000 }</td>
			</tr>
			<tr>
				<td>\${coin &gt;= 1000 }</td>
				<td>${coin >= 1000 }</td>
			</tr>
			<tr>
				<td>\${coin ge 1000 }</td>
				<td>${coin ge 1000 }</td>
			</tr>
		</table>
		
		<table border="1">
			<tr>
				<td>\${userId == 'hongkd' }</td>
				<td>${userId == 'hongkd' }</td>
			</tr>
			<tr>
				<td>\${userId eq 'hongkd' }</td>
				<td>${userId eq 'hongkd' }</td>
			</tr>
		</table>
		
	</body>
</html>

- http://localhost/home0202


	// empty 연산자
	@RequestMapping(value = "/home0302", method = RequestMethod.GET)
	public String home0302(Model model) {
		log.info("home0302() 실행...!");
		Member member = new Member();
		model.addAttribute("member", member);
		return "home/home0302";
	}

[home0302.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>home0104</title>
	</head>
	<body>
		
		<h3>4. 표현언어(EL)</h3>
		<p>4) empty 연산자를 이용한 방법</p>
		
		<table border="1">
			<tr>
				<td>\${empty member }</td>
				<td>${empty member }</td>
			</tr>
			<tr>
				<td>\${empty member.userId }</td>
				<td>${empty member.userId }</td>
			</tr>
		</table>
		
	</body>
</html>

- http://localhost/home0302

값은 비어있지 않는 상태임


	// 논리 연산자
	@RequestMapping(value = "/home0401", method = RequestMethod.GET)
	public String home0401(Model model) {
		log.info("home0401() 실행...!");
		
		int coin = 1000;
		String userId = "hongkd";
		Member member = new Member();
		
		model.addAttribute("coin", coin);
		model.addAttribute("userId", userId);
		model.addAttribute("member", member);
		
		return "home/home0401";
	}

[home0401.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>home0104</title>
	</head>
	<body>
		
		<h3>4. 표현언어(EL)</h3>
		<p>5) 논리 연산자를 이용한 방법</p>
		
		<table border="1">
			<tr>
				<td>\${coin == 1000 && userId == 'hongkd' }</td>
				<td>${coin == 1000 && userId == 'hongkd' }</td>
			</tr>
			<tr>
				<td>\${coin == 1000 and userId eq 'hongkd' }</td>
				<td>${coin == 1000 and userId eq 'hongkd' }</td>
			</tr>
			<tr>
				<td>\${not empty member && userId eq 'hongkd' }</td>
				<td>${not empty member && userId eq 'hongkd' }</td>
			</tr>
			<tr>
				<td>\${! empty member && userId eq 'hongkd' }</td>
				<td>${! empty member && userId eq 'hongkd' }</td>
			</tr>
		</table>
		
	</body>
</html>

- http://localhost/home0401


 

'대덕인재개발원_웹기반 애플리케이션' 카테고리의 다른 글

231127_SPRING 2 (4-2)  (0) 2023.11.27
231127_SPRING 2 (4-1)  (0) 2023.11.27
231124_SPRING 2 (3-1)  (2) 2023.11.24
231123_SPRING 2 (2-3) 과제  (0) 2023.11.23
231123_SPRING 2 (2-2)  (0) 2023.11.23