본문 바로가기

수업 복습하기/Spring

Day04 - Spring03 + TimeMapper

728x90
728x90

= spring02 =

- p03controller -

< Controller07.java >

package org.zerock.controller.p03controller;

import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.zerock.controller.p03controller.bean.Bean02;

@Controller
@RequestMapping("/cont07")
public class Controller07 {

	@RequestMapping("/met01")
	public String method01(RedirectAttributes rttr) {
		System.out.println("cont07 met01 일함!");

		rttr.addAttribute("name", "donald");
		rttr.addAttribute("address", "ny");

//		return "redirect:/cont07/met02?name=john";
		return "redirect:/cont07/met02";
	}

	@RequestMapping("/met02")
	public void method02() {
		System.out.println("cont07 met02 일함@@");
	}

	// 첫번째 요청 주소 : /cont07/met03
	// 위의 요청의 응답 : redirect:/cont07/met04
	// 응답시 쿼리 스트링 ?id=99&city=seoul&country=korea

	// 메소드 method03 작성

	@RequestMapping("/met03")
	public String method03(RedirectAttributes rttr) {
		rttr.addAttribute("id", 99);
		rttr.addAttribute("city", "seoul");
		rttr.addAttribute("country", "korea");

		return "redirect:/cont07/met04";
	}

	@RequestMapping("/met05")
	public String method05(HttpSession session) {
		session.setAttribute("name", "trump");

		return "redirect:/cont07/met06";
	}

	@RequestMapping("/met06")
	public void method06(HttpSession session) {
		System.out.println("cont07 met06 일함!");
		System.out.println(session.getAttribute("name"));
	}

	@RequestMapping("/met07")
	public String method07(RedirectAttributes rttr) {
		rttr.addFlashAttribute("address", "korea");
		
		return "redirect:/cont07/met08";
	}
	
	@RequestMapping("/met08")
	public void method08(Model model) {
		System.out.println(model.asMap().get("address"));
	}
	
	// 요청경로 : /cont07/met09
	// 응답 : redirect:/cont07/met10
	// flash attribute : Bean02 객체를 전달
	
	@RequestMapping("/met09")
	public String method09(RedirectAttributes rttr) {
		Bean02 bean = new Bean02();
		bean.setAddress("seoul");
		bean.setCity("korea");
		
		rttr.addFlashAttribute("bean", bean);
		return "redirect:/cont07/met10";
	}
	
	@RequestMapping("/met10")
	public void method10() {
	}
}

met07의 redirect가 met02로 이어지는 걸 보면, met01을 입력하면 met02로 url이 이동되면서, 

met02가 출력되는 것을 확인할 수 있다.

 

met03,04는 met01,02와 같은 업무를 수행한다.


met05 주소보내면 06으로 가면서, 05에 attribute에 넣은걸 06에서 가져와서 불러낸다.


- Cont07 -

< met08.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>${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>

 


< met10.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>${bean.address }</h1>
<h1>${bean.city }</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>

요청경로를 09로하면 10을 가져오면서, bean02의 객체를 가져옵니다~


- p04controller -

< Controller08.java >

package org.zerock.controller.p04controller;

import java.sql.Connection;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.zerock.controller.p04controller.dao.CustomerDao;

import lombok.Setter;

@Controller
@RequestMapping("/cont08")
public class Controller08 {
	@Setter(onMethod_ = @Autowired)
	private DataSource dataSource;
	@Setter(onMethod_ = @Autowired)
	private CustomerDao dao = new CustomerDao();

	@RequestMapping("/met01")
	public void method01() {
		System.out.println(dataSource);
	}

///cont08/met02?id=2
	@RequestMapping("/met02")
	public void method02(Integer id) {
		System.out.println(dao);
		try (Connection con = dataSource.getConnection()) {
			System.out.println(dao.getNamedById(con, id));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

< CustomerDao.java >

 

package org.zerock.controller.p04controller.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.springframework.stereotype.Component;

@Component
public class CustomerDao {

	public String getNamedById(Connection con, Integer id) {
		String sql = "SELECT CustomerName FROM Customers WHERE CustomerID = ?";
		
		try(PreparedStatement pstmt = con.prepareStatement(sql)){
			pstmt.setInt(1, id);
			
			try(ResultSet rs = pstmt.executeQuery()){
				if(rs.next()){
					return rs.getString(1);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
			return null;		
	}
}

 


- p05controller -

< Controller09.java >

package org.zerock.controller.p05controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.zerock.controller.p05controller.bean.Bean09;
import org.zerock.controller.p05controller.bean.Bean10;
import org.zerock.controller.p05controller.bean.Bean13;
import org.zerock.controller.p05controller.bean.Bean14;
import org.zerock.controller.p05controller.bean.Bean15;
import org.zerock.mapper.p05mapper.TimeMapper;

import lombok.Setter;

@Controller
@RequestMapping("/cont09")
public class Controller09 {
	
	@Setter(onMethod_ = @Autowired)
	private TimeMapper mapper;

	@RequestMapping("/met01")
	public void method01() {
		String time = mapper.getTime();
		System.out.println(time);
	}
	
	@RequestMapping("/met02")
	public void method02() {
		String name = mapper.getCustomerName();
		System .out.println(name);
	}
	
	@RequestMapping("/met03")
	public void method03(Model model) {
		// 3. business logic
		String name = mapper.getCustomerName();
		
		// 4. add attribute
		model.addAttribute("name", name);
	}
	
	// 요청 경로 : /cont09/met04
	// 실행 쿼리 : SELECT LastName FROM Employees WHERE EmployeeID = 1
	// 뷰 : /cont09/met04.jsp 에 LastName 출력
	
	// 작성할 메소드 Controller09#method04
	//            	TimeMapper#getLastName();
	@RequestMapping("/met04")
	public void method04(Model model) {
		model.addAttribute("lastName",mapper.getLastName());
	}
	
	@RequestMapping("/met05")
	public void method05(Integer id) {
		String name = mapper.getCustomerNameById(id);
		System.out.println(name);
	}
	
	// method06 : request parameter "id"값으로 직원 테이블을 조회해서 
	//            콘솔에 lastName 출력
	@RequestMapping("/met06")
	public void method06(Integer id) {
		System.out.println(mapper.getLastNameById(id));
	}
	
	@RequestMapping("/met07")
	public void method07() {
		List<String>names = mapper.getCustomerNames();
		System.out.println(names);
	}
	
	// method08 에서 직원들의 LastName 들 조회하고 콘솔에 출력
	@RequestMapping("/met08")
	public void method08() {
		System.out.println(mapper.getLastNames());
	}
}

 

- Cont09 -

< 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>${name }</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>

< 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>


<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>

- mapper.p05mapper -

< TimeMapper.java (interface) >

package org.zerock.mapper.p05mapper;

import java.util.List;

import org.apache.ibatis.annotations.Select;
import org.zerock.controller.p05controller.bean.Bean09;
import org.zerock.controller.p05controller.bean.Bean10;
import org.zerock.controller.p05controller.bean.Bean11;
import org.zerock.controller.p05controller.bean.Bean12;
import org.zerock.controller.p05controller.bean.Bean13;
import org.zerock.controller.p05controller.bean.Bean14;
import org.zerock.controller.p05controller.bean.Bean15;

public interface TimeMapper {
	@Select("SELECT NOW()")
	public String getTime();
	
	@Select("SELECT  CustomerName FROM Customers WHERE CustomerID=1")
	public String getCustomerName();
	
	@Select("SELECT LastName FROM Employees WHERE EmployeeID = 1")
	public String getLastName();
	
	@Select("SELECT CustomerName FROM Customers WHERE CustomerID = #{id}")
	public String getCustomerNameById(Integer id);
	
	@Select("SELECT LastName FROM Employees WHERE EmployeeID = #{id}")
	public String getLastNameById(Integer id);
	
	@Select("SELECT CustomerName FROM Customers")
	public List<String> getCustomerNames();
	
	// 직원 테이블의 LastName 들을 조회하는 쿼리를 실행하는 메소드(getLastNames) 작성
	@Select("SELECT LastName FROM Employees")
	public List<String> getLastNames();
}

TimeMapper로 이제 메소드를 모은 후에, 그 메소드에 맞춰서 쿼리를 작성 할 수 있게 되었다는 것 까먹지 말기~

 

728x90