본문 바로가기

수업 복습하기/Spring

Day 03 - spring02 + 아이콘 사용하기

728x90
728x90

= spring02 =

- p01controller -

< Controller04.java >

package org.zerock.controller.p01controller;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.DateTimeFormat.ISO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.zerock.controller.p01controller.bean.Bean01;
import org.zerock.controller.p01controller.bean.Bean02;
import org.zerock.controller.p01controller.bean.Bean03;
import org.zerock.controller.p01controller.bean.Bean04;
import org.zerock.controller.p01controller.bean.Bean05;
import org.zerock.controller.p01controller.bean.Bean06;
import org.zerock.controller.p01controller.bean.Bean07;
import org.zerock.controller.p01controller.bean.Bean08;

@Controller
@RequestMapping("/cont04")
public class Controller04 {

	@RequestMapping("/met01")
	public void method01(String name, String city) {
		System.out.println(name);
		System.out.println(city);
	}
	
	@RequestMapping("/met02")
	public void method02(HttpServletRequest request) {
		//2. 분석 가공
		String name = request.getParameter("name");
		String city = request.getParameter("city");
		
		Bean01 bean = new Bean01();
		bean.setName(name);
		bean.setCity(city);
		
		System.out.println(bean);
		//3. business logic
		
		//4. add attributes
		
		//5. forward / redirect
	}
	
	@RequestMapping("/met03")
	public void method03(Bean01 bean) {
		System.out.println(bean);
	}
	
	// /cont04/met04?country=usa&phone=0109999&address=seoul&email=usa@seoul.com
	@RequestMapping("/met04")
	public void method04(Bean02 bean) {
		System.out.println(bean);
	}
	
	// /cont04/met05?name=john&age=33
	@RequestMapping("/met05")
	public void method05(Bean03 bean) {
		System.out.println(bean);
	}

	// /cont04/met06?id=99&score=99.99
	@RequestMapping("/met06")
	public void method06(Bean04 bean) {
		System.out.println(bean); // 각 프로퍼티가 0이 아니도록 요청
	}
	
	// /cont04/met07?tel=010&tel=011&tel=012
	@RequestMapping("/met07")
	public void method07(@RequestParam("tel") ArrayList<String> tel) {
		System.out.println(tel);
	}
	
	// /cont04/met08?name=john&tel=010&tel=011
	@RequestMapping("/met08")
	public void method08(Bean05 bean) {
		System.out.println(bean);
	}
	
	//?name=john&id=99&address=seoul&address=jeju&address=ny
	@RequestMapping("/met09")
	public void method09(Bean06 bean) {
		System.out.println(bean);
	}
	
	@RequestMapping("/met10")
	public void method10(@RequestParam("date") 
//	@DateTimeFormat(pattern = "yyyy-MM-dd") 아래와 같은 식이다.
	@DateTimeFormat(iso=ISO.DATE)
	LocalDate date) {
		System.out.println(date);
	}
	
	@RequestMapping("/met11")
	public void method11(@RequestParam("dateTime")
	@DateTimeFormat(iso=ISO.DATE_TIME)
	LocalDateTime dateTime){
		System.out.println(dateTime);
	}

	// /cont04/met12?name=donald&birth=1999-01-01&inserted=1988-01-02T15:33:22
	@RequestMapping("/met12")
	private void method12(Bean07 bean) {
		System.out.println(bean);
	}

	// /cont04/met13?name=trump&age=99&moved=1988-02-02&writed=2010-03-03T17:22:11
	@RequestMapping("/met13")
	private void method13(Bean08 bean) {
		System.out.println(bean);
	}
	
	@RequestMapping("/met14")
	public void method14(@RequestParam String name, @RequestParam int age, HttpServletRequest request) {
		System.out.println(name);
		System.out.println(age);
		System.out.println(request);
	}
}

met01
met02
met07 (LIST 사용하기)

met03부터는 아래 bean을 사용해서 문제를 풀어 나가기 때문에, 아래 적도록 하겠다!


< Bean01.java >

package org.zerock.controller.p01controller.bean;

import lombok.Data;

@Data
public class Bean01 {
		private String name;
		private String city;
}

< Bean02.java >

package org.zerock.controller.p01controller.bean;

import lombok.Data;

@Data
public class Bean02 {
	private String country;
	private String address;
	private String phone;
	private String email;
}

< Bean03.java >

package org.zerock.controller.p01controller.bean;

import lombok.Data;

@Data
public class Bean03 {
	private String name;
	private int age;
}

< Bean04.java >

package org.zerock.controller.p01controller.bean;

import lombok.Data;

@Data
public class Bean04 {
	private int id;
	private double score;
}

< Bean05.java >

package org.zerock.controller.p01controller.bean;

import java.util.ArrayList;

import lombok.Data;
@Data
public class Bean05 {
	private String name;
	private ArrayList<String> tel;
}

< Bean06.java >

package org.zerock.controller.p01controller.bean;

import java.util.ArrayList;

import lombok.Data;

@Data
public class Bean06 {
	private String name;
	private int id;
	private ArrayList<String> address;
}

< Bean07.java >

package org.zerock.controller.p01controller.bean;

import java.time.LocalDate;
import java.time.LocalDateTime;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.DateTimeFormat.ISO;

import lombok.Data;

@Data
public class Bean07 {
	private String name;
	@DateTimeFormat(iso = ISO.DATE)
	private LocalDate birth;
	@DateTimeFormat(iso = ISO.DATE_TIME)
	private LocalDateTime inserted;
}

http://localhost:8080/controller/cont04/met10?date=2021-12-25

입력하면 나온다!

 

< Bean08.java >

package org.zerock.controller.p01controller.bean;

import java.time.LocalDate;
import java.time.LocalDateTime;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.DateTimeFormat.ISO;

import lombok.Data;
@Data
public class Bean08 {
	private String name;
	private int age;
	@DateTimeFormat(iso=ISO.DATE)
	private LocalDate moved;
	@DateTimeFormat(iso=ISO.DATE_TIME)
	private LocalDateTime writed;
}

http://localhost:8080/controller/cont04/met11?dateTime=2021-12-25T12:22:23

입력하면 나온다!


- p02controller -

< Controller05.java >

package org.zerock.controller.p02controller;

import javax.servlet.http.HttpServletRequest;

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

@Controller
@RequestMapping("/cont05")
public class Controller05 {
	//request handler method return values
	
	@RequestMapping("/met01")
	private String method01(HttpServletRequest request) {
		// 2. request 분석/가공
		
		// 3. business 로직
		
		// 4. add attribute
		
		// 5. forward / redirect
		/* servlet / jsp 사용할 때 */
//		String path = "/WEB-INF/view/view01.jsp";
//		request.getRequestDispatcher(path).forward(request, response);
		
		/* spring mvc 사용시 */ 
		return "view01";
	}
	
	// 할일 : /cont05/met02 로 요청이 오면 
	// /WEB-INF/views/view02.jsp로 포워드 되도록 method02작성
	@RequestMapping("/met02")
	public String method02() {
		return "view02";
	}
	
	@RequestMapping("/met03") 
	public String method03() {
		return "cont05/view03"; // prefix: /WEB-INF/views/  , suffix : .jsp
	}
	
	@RequestMapping("/met04")
	public String method04() {
		return "/cont05/view04"; // /WEB-INF/views//cont05/view04.jsp
	}
	
	//redirect
	
	@RequestMapping("/met05")
	public String method05() {
		/* servlet 사용 시*/
//		String location = request.getContextPath() + "/path";
//		response.sendRedirect( location);
		
		/*  spring mvc 사용 시 */
		return "redirect:/cont05/met04";
	}
	
	// 할일 : /cont05/met06 으로 요청 왔을 때 /cont05/met04 로 redirect 되는 method06을 만들기
	@RequestMapping("/met06")
	public String method06() {
		return "redirect:/cont05/met04";
	}
	
	// /cont05/met07
	@RequestMapping("/met07")
	public String method07() {
		return null; // view 이름과 요청 경로가 같은 경우 null 리턴 가능
	}
	
	// /cont05/met08
	@RequestMapping("/met08")
	public void method08() {
		// view 이름과 요청 경로가 같은 경우 void return 타입으로 결정
	}
    
	// 할 일 : /cont05/met09 로 요청이 왔을 때 /WEB-INF/views/cont05/met09.jsp로 포워드 되도록 method09 메소드를 작성
	@RequestMapping("/met09")
	public void method09() {
	}
}

이제는, console에 출력 되는 것이 아니라 jsp를 통해서 화면 양식으로 나타낼 수 있는지 확인하는 영역으로

들어섰다!

met04는 /가 두개붙여져 있는데, /가 2개이어도 1개가 붙어있는 것으로 인식되기 때문에, 

무시해도 된다는 점을 배우기 위해서 식을 짯다.

 

met05는 return "redirect:/cont05/met04"로 마무리가 붙어있는데, met05로 입력해도 url이 자동으로 04로 연결이 된다는 것을 인식했다.

 

met07  요청 경로와, jsp의 이름이 같을 경우가 많은데, return 을 null로 시키면, 자동으로 이름이 같은 jsp를 찾으려고 한다.

 

met08 return을 null로 하지않고, 그냥 입력하지 않아도 void return 타입으로 결정되어서 jsp를 찾게된다.

 

할 일 : /cont05/met09 로 요청이 왔을 때 

/WEB-INF/views/cont05/met09.jsp로 포워드 되도록 method09 메소드를 작성이 과제였는데

그냥 아무것도 작성하지 않으면 자연스럽게 요청 경로와 같은 jsp를 찾는다@

 

 


< view01.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>

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



<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
 
<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<h1>포워드 잘됨</h1>

	<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>

</body>
</html>

< view02.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>

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



<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
 
<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<h1>할일 2번</h1>

	<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>

</body>
</html>

< met09.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<h1>met09.jsp 포워드 완료 <i class="fas fa-search"></i></h1>

<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

이모티콘이 안나와서 이상하다 생각했는데 resources가 아니라 resource로 바뀌었다는 점 까먹지 말기~

 

< view03.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<h1>view03 포워드 완료 <i class="fab fa-apple"></i> </h1>

<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

- p03controller -

이 업무를 시작하기 위한 단계를 차근차근 연습하자

< Controller06.java >

package org.zerock.controller.p03controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.zerock.controller.p03controller.bean.Bean01;
import org.zerock.controller.p03controller.bean.Bean02;

@Controller
@RequestMapping("/cont06")
public class Controller06 {

	@RequestMapping("/met01")
	public void method01(HttpServletRequest request) {
		request.setAttribute("myatt12", "hello world");
	}

	@RequestMapping("/met02")
	public void method02(Model model) {
		// 4. add attribute
		model.addAttribute("myattr1", "myvalue1");

		// 5
	}

	// 할일 : 요청 경로 : /cont06/met03
	// view name : /cont06/met03
	// view에서 사용하는 attribute 명 : "myattr2"
	// myattr2의 값 : "myvalue2"
	// 가 되도록 method03 작성
	// 또한 view도 작성해서 myattr2가 myvalue2를 출력하는 확인

	@RequestMapping("/met03")
	public void method03(Model model) {
		model.addAttribute("myattr2", "myvalue2");
	}

	@RequestMapping("/met04")
	public void method04(Model model) {
		// 3.
		Bean01 bean = new Bean01();
		bean.setAge(99);
		bean.setName("trump");

		// 4.
		model.addAttribute("myBean", bean);
	}

	@RequestMapping("/met05")
	public void method05(Model model) {
		// 3.
		Bean01 bean = new Bean01();
		bean.setAge(88);
		bean.setName("donald");

		// 4.
		// model.addAttribute("bean01", bean); // attribute의 이름이 클래스(type)의 이름(to lower
		// camel case)과 같은 경우 생략 가능
		model.addAttribute(bean);
		
        // 할일 : view (jsp) 를 만들어서 "bean01" attribute가 있는 지 확인)
	}

	@RequestMapping("/met06")
	public void method06(Model model) {
		model.addAttribute("attr1", "val1");
		model.addAttribute("attr2", "val2");
	}

	@RequestMapping("/met07")
	public void method07(String name, String city, Model model) {
		model.addAttribute("name", name);
		model.addAttribute("city", city);
	}

	@RequestMapping("/met08")
	public String method08(@ModelAttribute("name") String name,
			@ModelAttribute("city") String city) {
		return "/cont06/met07";
	}

	@RequestMapping("/met09")
	public void method09(Bean01 bean, Model model) {
		model.addAttribute("bean", bean);
	}
	
	@RequestMapping("/met10")
	public String method10(@ModelAttribute("bean") Bean01 bean) {
		return "/cont06/met09";
	}
	
	@RequestMapping("/met11")
	public void method11(@ModelAttribute Bean01 bean) {	
	}
	
	@RequestMapping("/met12")
	public String method12(Bean01 bean) {
		return "/cont06/met11";
	}
	
	// /cont06/met13?city=seoul&address=gangnam
	@RequestMapping("/met13")
	public void method13(Bean02 bean) {
		// todo1: Bean02 클래스 완성
		// todo2: /cont06/met13.jsp 를 작성해서 seoul,gangnam이 출력   
	}
}

< Bean01.java >

package org.zerock.controller.p03controller.bean;

import lombok.Data;

@Data
public class Bean01 {
	private String name;
	private int age;
}

위치 : ex00\src\main\webapp\WEB-INF\views\cont06

< met01.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<h1>/cont06/met01.jsp forward</h1>
<p>${myatt12 }</p>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

이제 본격적으로,

< met02.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<h2>/cont05/met02.jsp 포워드 됨</h2>
<p>${myattr1 }</p>

<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

< met03.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<h1>
/con06/met03.jsp 실행 되었음
</h1>
<p>
${myattr2 }
</p>

<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

< met04.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<p>${myBean.age }</p>
<p>${myBean.name }</p>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

< met05.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<p>${bean01.age }</p>
<p>${bean01.name }</p>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

< met06.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<p>${attr1 }</p>
<p>${attr2 }</p>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

아직 모델이 왜 꼭 필요한지는 잘 모르겟다..?

 

< met07.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<p>${name }</p>
<p>${city }</p>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

http://localhost:8080/controller/cont06/met07?name=captain&city=ny

met08같은 경우에는 return met07로 돌리게 되면서, met 숫자만 바뀌고, 뒤에 식은 같은데, 

return 값이 같게 들어가게되다보면 어짜피 model을 통해서 나오는값은 같게 된다는건데.

model의필요성이 명확하게 파악되지 않았기 때문에, 조금 힘들지도~

modelattribute을 사용해서 "bean"이라는 이름으로 들어가라고 말해주는 것이다.

 

< met09.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<p>${bean.name }</p>
<p>${bean.age }</p>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

met09도 10을 확용해서 7과 8같이 연습하는데, 아직도 잘 모르겠다고..

굳이 왜 모델을 사용해서 넣어야 하는지 따로 공부를 좀 해봐야 할 것 같다.

 

< met011.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<p>\${bean01.name } : ${bean01.name }</p>
<p>\${bean01.age } : ${bean01.age }</p>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>

http://localhost:8080/controller/cont06/met11?name=ironman&age=77

< met013.java >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">

<title>Insert title here</title>
</head>
<body>
<h1>
\${bean02.city } : ${bean02.city }
</h1>
<h1>
\${bean02.address } : ${bean02.address }
</h1>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>


= 아이콘 사용하기 =

< 파일 넣어서 수정하기 >

src\main\webapp\resources

필요한 자료들을 저렇게 폴더 위치에 넣어놓으면 된다.

 

< 주소 수정하기 >

font awesome을 활용해서, 아이콘을 삽입하기 위해, 파일을 삽입하고, 사용 할 수 있게 주소를 수정해야한다.

src\main\webapp\WEB-INF\spring\appServlet\servlet-context.xml에

 

내기준, 16번째 줄
<resources mapping="/resource/**" location="/resources/" />
로 수정

728x90