71일 차 - 스프링, 의존성 주입 (23.04.10)

yvonne·2023년 4월 10일
0

📂Spring

목록 보기
3/18
post-thumbnail

1. command 객체


✔ GradeController.java

package edu.global.ex.controller;

import javax.servlet.http.HttpServletRequest;

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

import edu.global.ex.vo.GradeVO;

@RequestMapping("/grade")
@Controller
public class GradeController {
	@GetMapping("/")
	public String kem_form() {
		return "kem_form";
	}
   
@PostMapping("/total2")
	public String kem_form2(GradeVO gradeVO) { // command 객체 생성 
	
		return "grade";
	}
	
}

✔ grade.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>Insert title here</title>
</head>
<body>
	국어 : ${gradeVO.kor}<br>
	영어 : ${gradeVO.eng}<br>
	수학 : ${gradeVO.math}<br>	
	합계 : ${gradeVO.total} <br>
	평균 : ${gradeVO.avg}<br>
	등급 : ${gradeVO.grade}<br>
	<hr>
	합계 : ${gradeVO.getTotal()} <br>
	평균 : ${gradeVO.getAvg()}<br>
	등급 : ${gradeVO.getGrade()}<br>
	toString : ${gradeVO.toString()}<br>
</body>
</html>
  • 결과





✔ BoardVO.java

package edu.example.ex.vo;

import java.sql.Timestamp;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString

public class BoardVO {
	private int bid;
	private String bname;
	private String btitle;
	private String bcontent;
	private Timestamp bdate;
	private int bhit;
	private int bgroup;
	private int bstep;
	private int bindent;
}

✔ BoardController.java

package edu.example.ex.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import edu.example.ex.service.BoardService;
import lombok.extern.slf4j.Slf4j;

@Slf4j // 로그
@Controller
@RequestMapping("/jboard/*")

public class BoardController {
	@Autowired
	private BoardService boardService;

	@GetMapping("/list")
	public String view_list(Model model) {
		log.info("view_list() ..");
		System.out.println("view_list() ..");

		model.addAttribute("boards", boardService.getList());
		return "/board/list";
	}
}

✔ BoardDAO.java

package edu.example.ex.repository;

import java.util.List;

import org.springframework.stereotype.Repository;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

import edu.example.ex.vo.BoardVO;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Repository
public class BoardDAO {

	private String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private String uid = "scott";
	private String upw = "tiger";

	public BoardDAO() {

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public List<BoardVO> boardSelect() {
		List<BoardVO> boards = new ArrayList<BoardVO>();

		Connection con = null;
		Statement stmt = null;
		ResultSet resultSet = null;

		try {
			String sql = "Select * from mvc_board";

			con = DriverManager.getConnection(url, uid, upw);
			stmt = con.createStatement();
			resultSet = stmt.executeQuery(sql);

			while (resultSet.next()) {
				int bid = resultSet.getInt("bid");

				String bname = resultSet.getString("bname");
				String btitle = resultSet.getString("btitle");
				String bcontent = resultSet.getString("bcontent");

				Timestamp bdate = resultSet.getTimestamp("bdate");

				int bhit = resultSet.getInt("bhit");
				int bgroup = resultSet.getInt("bgroup");
				int bstep = resultSet.getInt("bstep");
				int bindent = resultSet.getInt("bindent");

				BoardVO vo = new BoardVO(bid, bname, btitle, bcontent, bdate, bhit, bgroup, bstep, bindent);
				boards.add(vo);
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (resultSet != null)
					resultSet.close();

				if (stmt != null)
					stmt.close();

				if (con != null)
					con.close();

			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		return boards;
	}

}

✔ BoardService.java

package edu.example.ex.service;

import java.util.List;

import edu.example.ex.vo.BoardVO;

public interface BoardService {
	public abstract List<BoardVO> getList();
}

✔ BoardServiceImpl.java

package edu.example.ex.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import edu.example.ex.repository.BoardDAO;
import edu.example.ex.vo.BoardVO;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
@AllArgsConstructor
@NoArgsConstructor

public class BoardServiceImpl implements BoardService {
	@Autowired // 주입 (객체 생성 시 new를 하지 않고도 생성이 가능)
	private BoardDAO dao;

	@Override
	public List<BoardVO> getList() {
		log.info("getList()..");
		return dao.boardSelect();
	}
}
  • 결과





  • 의존성 주입
    ✔ 의존성있는 객체에 생성자, setter 함수를 통해 사용할 객체를 주입하는 것
    @Component: new의 기능
    @Controller: @Component에 포함 (@Component + 의미) / 객체 생성 기능
    @Service
    @Repository - DAO
  • IOC (제어의 역전)
  • IOC 컨테이너 (스프링) : 객체 관리
profile
개발 연습장

0개의 댓글