Legday
[Spring] DB연결 후 데이터 가져오기(페이크버전) 본문
DB연동을 위해서는 Service, DAO(DTO), Entity 가 필요하지만 이번 글에서는 db연결한 척하기 위해
dao,entity만 생성하여 웹브라우저에 띄워 보는 연습입니다
1) Entity, Dao 생성
- 우선 domain 패키지를 생성해준다


- 실제론 여러 테이블을 만들겠지만 이번 글에서는 user라는 테이블만 만들어서 체험해보겠습니다
- domain 안에 user라는 패키지를 만들어 dao와 entity를 생성하겠습니다(가시성을 위해 board라는 패키지도 하나 만들겠습니다)


- User, UserDao 클래스 생성
- User라는 테이블은 db를 연결하지 않았기 때문에 가상으로 id,username,password,email이라는 속성을 가지는 테이블이라 가정하겠습니다
- DAO도 CRUD를 지켜서 4개를 만들지만 1개만 만들겠습니다
package site.metacoding.demo.domain.user;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class User {
private Integer id;
private String username;
private String password;
private String email;
}
package site.metacoding.demo.domain.user;
public class UserDao {
public User findById(Integer id) {
return new User(1,"test","test","test@test.com"); //아직연동안하고 페이크
}
}
2) Controller와 jsp파일 작성
- Controller먼저 작성하겠습니다
- UserController라는 이름의 클래스 생성

- 우선 PathVariable 방식으로 데이터를 받기 때문에 getmapping에 {}로 id를 받고
- 파라미터로 id, 그리고 Model객체를 받습니다.
- Model은 VIEW가 있는 @Controller에서만 사용가능하고 동작원리를 간단하게 설명하겠습니다
Client가 port를 통해 요청이 들어오면 디스패처 서블릿이 url을 파싱하여 식별자를 찾아서 라우팅을 해줍니다 . 이때 파라미터에 받은 데이터를 넣어주고 Model이 있다면 model객체를 생성하여 전달합니다.
이때 db에 있는 객체를 넣어준다
즉 model객체는 Controller로 받은 데이터를 View까지 전달해주는 역할을 합니다
- 그리고 addAttribute메서드를 통하여 첫번째 파라미터로 key를 넣고 두 번째 파라미터에는 개체를 넣어주면 됩니다.
package site.metacoding.demo.test;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import site.metacoding.demo.domain.user.User;
import site.metacoding.demo.domain.user.UserDao;
@Controller
public class UserController {
@GetMapping("/test/{id}")
public String test(@PathVariable Integer id, Model model) {
UserDao userDao = new UserDao();
User userPS = userDao.findById(id);
model.addAttribute("user", userPS);
return"";
}
}
- 먼저 jsp파일을 작성하겠습니다. ViewResolver가 찾을 수 있게 WEB-INF 파일내부에 만듭니다
- test.jsp파일이라고 만듭니다
- model를 이용할려면 jsp문법을 써야합니다.
- ${} : 대괄호 안에 데이터를 넣는데 이때 아까 controller파일에서 만든 model 객체의 addAttribute메서드를 보면 첫번째 매개변수로 "user"라는 키를 받았습니다. 그 키를 이용하여 값에 접근합니다.
원래라면 user.getUsername() 이렇게 getter를 통해 접근하지만 lombok이 알아서 컨버팅하여 인식하기 때문에 사용자는 키.상태변수명을 적어주면 됩니다. ( 단, lombok을 이용하지않고 getter를 직접작성했다면 getter이름 그대로 써야합니다)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Test jsp 실행</h1>
<br>
유저네임 : ${user.username}<br/>
비밀번호 : ${user.password}<br/>
이메일 : ${user.email}<br/>
</body>
</html>
3) 실행확인
- 확인전에 먼저 어떤 데이터가 나올지 알아봅시다
- Dao파일에 findById라는 메서드를 Client에 요청받은 id값을 이용해 찾기 때문에 id를 받습니다

- Dao파일을 들여다 보면
- User 개체의 id값이 1 username이 test , password가 test, email이 test@test.com 인걸 알 수 있습니다.
- 이제 브라우저로 접속해서 잘 뜨는지 확인해봅시다

- 브라우저 주소에 localhost:8080/test/1 입력

'Spring&Springboot > Spring(개인공부용)' 카테고리의 다른 글
| [Spring]HTTP Mapping기술 (0) | 2022.08.29 |
|---|---|
| [Spring]Apache Tomcat 내부원리 (0) | 2022.08.26 |
| GET/POST 방식이란? (0) | 2022.08.25 |
| [Spring] URI와 URL이란? (0) | 2022.08.25 |
| [Spring]IoC 컨테이너란? (0) | 2022.08.25 |