Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Uipath
- string
- Thymeleaf
- 문자열
- spring
- Database
- Board
- db
- 배열
- JDBC
- Controller
- Java
- React
- html
- mysql
- jquery
- MVC
- Scanner
- 상속
- Oracle
- SpringBoot
- Eclipse
- git
- View
- jsp
- Array
- 이클립스
- rpa
- 조건문
- API
Archives
- Today
- Total
유정잉
🎀 스프링 레거시 흐름과 코드 예시 본문
전체적인 흐름
- 사용자 요청 (Client Request)
- 사용자가 웹 브라우저를 통해 특정 URL을 요청합니다.
- Controller
- 요청이 들어오면 스프링 프레임워크는 적절한 컨트롤러로 요청을 전달합니다.
- 컨트롤러는 URL 요청을 매핑하고 요청을 처리합니다. 예를 들어, 사용자가 /user/list URL을 요청하면 UserController가 이를 처리합니다.
- Service
- 컨트롤러는 비즈니스 로직을 처리하기 위해 서비스 계층을 호출합니다. 서비스 계층은 비즈니스 로직을 담당합니다.
- 예를 들어, UserController는 UserService를 호출하여 사용자 목록을 가져옵니다.
- Mapper (Interface 및 XML)
- 서비스 계층은 데이터베이스와 상호 작용하기 위해 매퍼를 호출합니다. 매퍼는 MyBatis와 같은 ORM(Object-Relational Mapping) 프레임워크를 사용하여 데이터베이스와 통신합니다.
- 매퍼 인터페이스는 매퍼 XML 파일에 정의된 SQL 쿼리를 호출합니다.
- 예를 들어, UserService는 UserMapper 인터페이스를 호출하여 사용자 목록을 가져오고, UserMapper는 UserMapper.xml에 정의된 SQL 쿼리를 실행합니다.
- Entity
- 매퍼가 데이터베이스에서 데이터를 가져오면, 이 데이터를 엔티티 객체로 매핑합니다. 엔티티는 데이터베이스 테이블과 매핑되는 클래스입니다.
- 예를 들어, UserMapper는 데이터베이스에서 가져온 사용자 데이터를 User 엔티티 객체로 변환합니다.
- JSP (View)
- 서비스 계층에서 데이터를 받아온 컨트롤러는 이 데이터를 JSP 파일에 전달하여 화면에 출력합니다.
- JSP 파일은 사용자에게 데이터를 보여주는 역할을 합니다.
- 예를 들어, UserController는 사용자 목록 데이터를 JSP 파일에 전달하고, JSP 파일은 이를 HTML 형식으로 렌더링하여 사용자에게 보여줍니다.
[ Controller ]
// UserController 클래스: 클라이언트의 요청을 처리하는 컨트롤러 계층
@Controller
@RequestMapping("/user")
public class UserController {
// UserService를 주입받습니다.
@Autowired
private UserService userService;
// "/user/list" URL 요청을 처리하는 메서드
@GetMapping("/list")
public String getUserList(Model model) {
// UserService를 호출하여 사용자 목록을 가져옵니다.
List<User> users = userService.getUserList();
// 사용자 목록을 모델에 추가하여 뷰에 전달합니다.
model.addAttribute("users", users);
// "userList"라는 이름의 JSP 파일을 반환하여 사용자에게 결과를 표시합니다.
return "userList";
}
}
[ Service ]
// UserService 클래스: 비즈니스 로직을 처리하는 서비스 계층
@Service
public class UserService {
// UserMapper를 주입받습니다.
@Autowired
private UserMapper userMapper;
// 모든 사용자 목록을 반환하는 메서드
public List<User> getUserList() {
// UserMapper를 사용하여 데이터베이스에서 사용자 목록을 가져옵니다.
return userMapper.getAllUsers();
}
}
[ Mapper Interface ]
// UserMapper 인터페이스: User 엔티티와 데이터베이스 간의 상호작용을 정의합니다.
public interface UserMapper {
// 데이터베이스에서 모든 사용자를 조회하는 메서드
List<User> getAllUsers();
}
[ Mapper XML ]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- UserMapper 인터페이스와 매핑되는 XML 파일 -->
<mapper namespace="com.example.mapper.UserMapper">
<!-- 모든 사용자를 조회하는 SQL 쿼리 -->
<select id="getAllUsers" resultType="com.example.domain.User">
SELECT * FROM users
</select>
</mapper>
[ Entity ]
// User 엔티티 클래스: 데이터베이스의 users 테이블과 매핑되는 클래스
public class User {
private int id; // 사용자 ID (primary key)
private String name; // 사용자 이름
private String email;// 사용자 이메일
// Getters와 Setters는 각 필드에 접근하고 값을 설정하기 위해 필요합니다.
...
}
[ JSP ]
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!-- userList.jsp: 사용자 목록을 표시하는 JSP 파일 -->
<html>
<head>
<title>User List</title>
</head>
<body>
<h2>User List</h2>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
<!-- 사용자 목록을 반복하여 테이블에 표시합니다. -->
<c:forEach var="user" items="${users}">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.email}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
728x90
'개발자 공부 > 🎀 스프링 공부' 카테고리의 다른 글
🎀 스프링 부트 [ JPA, Repository, @Query ] (0) | 2024.07.09 |
---|---|
🎀 스프링부트 SpringBoot 파일 생성 (0) | 2024.06.18 |
⭐️ @PostConstruct와 @PreDestroy 빈의 초기화 + 빈의 소멸 (0) | 2024.05.29 |
⭐️ Controller와 RestController의 차이점 (0) | 2024.05.29 |
⭐️ @Componentscan과 @Configuration + @Bean의 차이점 (0) | 2024.05.29 |