Fullstack-Study-241204-250625

커리큘럼(12-30/변경)

01. Java
02. git
03. Database 
04. Jsp [Server]

05. HTML,CSS 
07. JS
06. 미니프로젝트-2W

08. SpringFramework , SrpingBoot (v)
09. React JS [Front-end]
10. 중간프로젝트 (1M)
11. Linux 명령어
12. AWS 클라우드
13. DevOps - Docker
14. App - Android
15. 최종프로젝트 (1M)

스프링 프레임워크(Spring Framework)

Model 전달자

1. Model객체 = (ModelMap)

  1. Model타입을 메서드의 파라미터로 주입하게 되면 view로 전달하는 데이터를 담아서 보낼 수 있음
  2. request.setAttribute()와 유사한 역할 ex: 메서드(Model model) / addAttribute()

2. ModelAndView객체 (페이지와 데이터를 동시 지정)

ex: addObject("변수명","값") / setViewName("페이지명")

3. @ModelAttriubte 어노테이션

  • 전달받은 파라미터를 Model에 담아서 화면까지 전달하려 할 때 사용되는 어노테이션 ex: @ModelAttribute("받을값") 사용할 변수

4. RedirectAttribute객체

  • 리다이렉트 이동시 파라미터 값을 전달하는 방법 ex: addFlashAttribute() - 1회성 휘발성 데이터
@Controller
@RequestMapping("/response")
public class ResponseController {

	//ex01화면
	@RequestMapping("/ex01")
	public String ex01() {
		return "response/ex01";
	}
	
	//ex01_ok화면
	
	// Model객체 - request.setAttribute와 유사
//	@RequestMapping("/ex01_ok")
//	public String ex01_ok(Model model) {
//		
//		model.addAttribute("name","홍길동");
//		model.addAttribute("serverTime",new Date());
//		return "response/ex01_ok";
//	}
	
	//ModelAndView객체
//	@RequestMapping("/ex01_result")
//	public ModelAndView ex01_ok() {
//		ModelAndView mv = new ModelAndView();
//		mv.addObject("name","홍길동");
//		mv.addObject("serverTime",new Date());
//		mv.setViewName("response/ex01_ok"); // 뷰에 대한 정보
//		return mv;
//	}
	
	//ModelAttribute
	// 화면에서 id를 받고, id라는 이름으로 데이터를 넘김
//	@RequestMapping("ex01_result")
//	public String ex01_result(@ModelAttribute("nick") String nick) {
//		
//		System.out.println(nick);
//		return "response/ex01_result";
//	}

	// 화면에서 vo에 맵핑되는 값을 받고, myData라는 이름으로 데이터를 넘김
	@RequestMapping("/ex01_result")
	public String ex01_result(@ModelAttribute("myData") MemberVO vo ) {
		
		System.out.println(vo.toString());
		return "response/ex01_result";
	}
	
	/////////////////////////////////////////////////////////////////////
	// 스프링에서 redirect -> 다시 컨트롤러를 태울떄 사용
	
	//화면처리
	@RequestMapping("/redirect_join")
	public String redirect_join() {
		return "response/redirect_join";
	}
	
	@RequestMapping("/joinForm")
	public String joinForm(MemberVO vo,RedirectAttributes ra) {
		
		// 가입에 대한 처리
		
		// 리다이렉트시에는 Model을 사용할 수 없음
		// 리다이렉트시 1회성 데이터를 보낼 수 있음
		ra.addFlashAttribute("msg","회원가입을 축하합니다.");
		// 홈 화면으로
		return "redirect:/"; //다시 컨트롤러를 태움
	}
}

Service 계층 구현

1. new연산자를 이용한 service객체생성 및 참조

private ScoreService scoreService = new ScoreServiceImpl();

2. 스프링 설정파일을 이용한 서비스 객체 생성 및 의존 객체 자동 주입

 // 2nd - ScoreServiceImpl클래스를 빈으로 등록하고, 자바 문서에서 오토와이어드 넣어도됨
	# servlet-context.xml
 <beans:bean id="scoreService" class="com.simple.score.service.ScoreServiceImpl"/>

 # 서비스
	@Autowired
	private ScoreService scoreService;

3. 어노테이션을 이용한 서비스 객체 생성 및 의존객체 자동 주입

# 서비스
@Service("scoreService") // @Service어노테이션을 붙이고, 패키지를 읽어서 빈으로 만드는 전략
public class ScoreServiceImpl implements ScoreService{

# 컨트롤러
@Qualifier("scoreService")
private ScoreService scoreService;

DAO 계층 구현

어노테이션을 이용해 DAO객체 생성 및 의존 객체 자동 주입

# DAOImpl영역
@Repository("scoreDAO") // 컴포넌트스캔에 읽힘
public class ScoreDAOImpl implements ScoreDAO {

# Controller영역
@Autowired
@Qualifier("scoreDAO")
private ScoreDAO scoreDAO;