관리 메뉴

Legday

[Spring] DB연결 후 데이터 가져오기(페이크버전) 본문

Spring&Springboot/Spring(개인공부용)

[Spring] DB연결 후 데이터 가져오기(페이크버전)

Legday 2022. 8. 25. 17:33

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