DAY-73 Spring 초기 환경설정, annotation, redirect

1 minute read

💻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 계정 만들기

  1. system 계정으로 접속
  2. 생성할 계정 아이디 비밀번호 입력 후 권한 부여

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를 이용한다.

Categories:

Updated:

Leave a comment