Spring MVC를 사용하며, 기본적인 컨트롤러, 서비스, 모델 및 JSP 뷰 파일로 구성됩니다.
1. 회원 모델 (User)
먼저 사용자 정보를 저장할 모델 클래스를 생성합니다.
public class User {
private String username;
private String password;
// 기본 생성자, getter, setter 생략
}
2. 회원 서비스 (UserService)
간단한 회원 서비스 구현입니다. 실제 애플리케이션에서는 데이터베이스 연동이 필요합니다.
public class UserService {
public User login(String username, String password) {
// 로그인 로직 구현, 예시를 위해 간단하게 처리
if ("admin".equals(username) && "password".equals(password)) {
return new User(username, password);
}
return null;
}
}
3. 회원 컨트롤러 (UserController)
사용자 요청을 처리하는 컨트롤러입니다.
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(String username, String password, HttpSession session) {
User user = userService.login(username, password);
if (user != null) {
session.setAttribute("loggedInUser", user);
return "redirect:/home";
}
return "login";
}
}
4. JSP 뷰 파일
로그인 상태에 따라 다른 콘텐츠를 표시하는 JSP 파일입니다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<c:choose>
<c:when test="${not empty sessionScope.loggedInUser}">
<p>Welcome, ${sessionScope.loggedInUser.username}!</p>
<a href="/logout">Logout</a>
</c:when>
<c:otherwise>
<a href="/login">Login</a>
</c:otherwise>
</c:choose>
</body>
</html>
- 로그인 컨트롤러 (login 메소드): 사용자가 로그인 폼에서 입력한 정보를 받아서 UserService를 통해 사용자를 인증합니다. 인증 성공 시, 사용자 정보를 세션에 저장합니다.
- JSP 뷰: <c:choose>, <c:when>, <c:otherwise> 태그를 사용하여 세션에 loggedInUser 객체가 존재하는지 여부에 따라 다른 콘텐츠를 표시합니다.
'BACKEND > 스프링 Spring' 카테고리의 다른 글
Spring Framework 회원 프로젝트 (1) | 2024.01.03 |
---|---|
스프링 MVC GIS 데이터를 처리 RESTful API 사용 (0) | 2023.12.21 |
Spring Handler Interceptor (0) | 2023.12.19 |
타임리프 문법 정리 (0) | 2023.12.19 |
뷰 템플릿 호출 3가지 방법 (0) | 2023.12.17 |