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
'수업 복습하기 > Spring' 카테고리의 다른 글
day 06 - Spring 05 + 마무리 (0) | 2022.02.07 |
---|---|
Day 05 - Spring04 + TimeMapper -> mapper.xml/.java (0) | 2022.02.03 |
Day 03 - spring02 + 아이콘 사용하기 (0) | 2021.12.27 |
Day 02 - lombok02 + spring01 (0) | 2021.12.24 |
Day 01 - lombok 다운 및 설정 + lombok01 (0) | 2021.12.23 |