DAY-73 Spring 초기 환경설정, annotation, redirect
💻2022-06-16
❗ 수업을 듣고, 개인이 공부한 내용을 적은 것 이기에 오류가 많을 수도 있음
1️⃣ 시작
- facets(자바,webModuel)확인 -> pom.xml 수정(자바 버전,스프링 버전,loggin)
- home.jsp에 <%@ page language=”java” contentType=”text/html; charset=UTF-8” pageEncoding=”UTF-8”%> 넣어줘야 함(새로 만드는 jsp는 자동으로 생기지만 프로젝트 생성 시 home.jsp에는 존재하지 않음)
2️⃣ 값 받기
input.jsp
1. 기존 방법(jsp)
- request를 이용해 값을 받아온다
2. spring 방법
- input.jsp안의 input의 name과 sendInput의 인자의 name과 일치 한다면 값이 출력된다.
- input.jsp안의 input의 name과 sendInput의 인자로 넣으면 null 값이 출력된다.
즉 input의 name과 Method의 인자가 같아야 한다
3. setter 이용 (많은 데이터를 받아올 때)
messageDTO
- setter 이용
- input.jsp의 input의 name과 dto의 변수명이 같아야한다
3️⃣ 값 전달
- controller에서 jsp로 전달하는 방식 : 기존의 request대신Model 이라는 객체를 이용
- controller의 모든 RequestMapping된 메서드의 모든 default 리턴 방식은 forward로 동작 → forward를 해주지 않아도 데이터가 전달된다.
output.jsp
- jsp처럼 ${} 방식으로 값 도출
4️⃣ db와 관련된 코드
💡 webapp → WEB-INF → spring → root-context.xml에서 db코드를 넣는다
1. sql developer 계정 만들기
- system 계정으로 접속
- 생성할 계정 아이디 비밀번호 입력 후 권한 부여
2. Spring에서 dbcp 연결(bean 이용)
💡 bean을 등록하면 기본적으로 singleton으로 생성
5️⃣ 어노테이션
- 어노테이션을 통해 직접 주입 해주는게 아닌, 자동적으로 주입을 해준다.
WEB-INF → spring → appServlet → servlet-context.xml에서
해당 코드는 com.message.controller만 scan 한다 → 다른 범위도 scan 하기 위해선
1.Autowired , Repository
root-context.xml
MessageDAO
- MessageDAO 형 인스턴스 생성 (생성될 당시에는 bds라는 맴버필드는 null)
- @Autowired 달려있는 멤버필드는 스프링 컨테이너 안에서 해당 자료형의 인스턴스를 찾아서 그 멤버필드에 값을 셋팅해주는 작업을 알아서 해주는 annotation
- @Autowired : MessageDAO의 객체 이름을 root-context의 bean 중에 id가 bds인 것을 찾는다
- @Repository : 직접적으로 db에 데이터를 전달/수정/삭제/조회 하는 클래스에 붙여준다 (dao) → 즉 MessageDAO의 어노테이션은 Controller가 되면 안된다.
HomeController.java
🔔 결론
- Controller를 담당하는 HomeController는 @Controller 이용
- 자동 주입시 @Autowired 이용
- db와 연관된 class는 @Repository 이용
❗ 조심
HomeController
- spring 에서 return을 할 때는 forward가 기본 전제이다. 따라서 return “home” 이런식으로 작성하게 되면, 데이터가 중복적으로 보내진다. → 그래서 페이지를 이동하기 위해서는 반드시 “redirect:/”를 사용해야 한다.
- 단순 return “viewName”같은 경우는 viewName에 해당하는 view를 보여주는 것이고, return “redirect:/”같은 경우는 redirect 오른쪽의 주소로 URL 요청을 다시 하는 것 그로 인해 주소가 바뀐다.(return “viewName” 같은 경우 화면만 viewName으로 바뀌고 url은 안바뀜)
페이지 이동시에는 redirect를 이용한다.
Leave a comment