@PostMapping("/login")
public String login(UserRequest.LoginDTO requestDTO) {
User sessionUser = userRepository.findByUsernameAndPassword(requestDTO);
session.setAttribute("sessionUser", sessionUser);
해석
@PostMapping("/login"):
이 어노테이션은 HTTP POST 요청이 "/login" 엔드포인트에 도달했을 때 이 메소드가 실행되어야 함
을 나타냅니다. 즉, 사용자가 로그인을 시도할 때 이 메소드가 호출됩니다.
public String login(UserRequest.LoginDTO requestDTO):
이 메소드는 문자열을 반환합니다(String).
이 메소드의 파라미터로 UserRequest.LoginDTO 객체가 전달됩니다.
이 객체는 로그인 요청에 필요한 정보를 담고 있을 것으로 추정됩니다.
User sessionUser = userRepository.findByUsernameAndPassword(requestDTO);:
이 줄은 userRepository에서 사용자 이름과 비밀번호를 사용하여 사용자를 찾습니다.
findByUsernameAndPassword는 userRepository에서 사용자를 검색하는 메소드일 것입니다.
이 메소드는 아마도 사용자 이름과 비밀번호를 인자로 받아서
그에 해당하는 사용자를 데이터베이스에서 찾을 것입니다.
+) User sessionUser
User사용자를 sessionUser라고 변수를 지정해줄 것인데, 세션에 저장된 사용자 정보라는 뜻,
즉. 로그인정보를 담은 dto를 통해 로그인을 시켜주겠다.
전체적으로 이 코드는 HTTP POST 요청이 "/login" 엔드포인트에 도달하면,
요청에서 받은 사용자 이름과 비밀번호를 사용하여 사용자를 찾고,
해당 사용자 정보를 sessionUser 변수에 저장하는 것으로 보입니다.
하지만, 이 코드는 완전하지 않기 때문에 정확한 동작은 프로젝트의
다른 부분에 따라 달라질 수 있습니다.
session.setAttribute("sessionUser", sessionUser);
session.setAttribute("sessionUser", sessionUser)은
세션(session)에 특정 속성(attribute)을 저장하는 것입니다.
여기서 session은 아마도 세션 객체를 나타내는 변수일 것입니다.
대부분의 웹 애플리케이션 프레임워크에서는 세션 관리를 위한 세션 객체를 제공하며,
이를 통해 사용자의 상태를 유지할 수 있습니다.
setAttribute 메서드는 세션에 특정 이름(여기서는 "sessionUser")으로 지정된 값을 저장합니다.
이렇게 함으로써 해당 세션에 접근할 때마다 이 값을 검색할 수 있습니다.
여기서 "sessionUser"는 세션에서 이 값을 참조하기 위한 키(key)로 사용되며,
sessionUser는 실제로 세션에 저장될 값입니다.
이 경우에는 로그인된 사용자 정보가 될 것입니다.
db
create user 'root'@'localhost' identified by'1234';
GRANT ALL PRIVILEGES ON store.* To'root'@'localhost';
FLUSH PRIVILEGES;
CREATE DATABASE store;
drop user 'root'@'localhost';
use store;
show variables like 'c%';
drop table product_tb;
create table product_tb(
product_id int auto_increment primary key,
product_name varchar(20) not null unique,
product_price int not null,
product_qty int not null,
created_at timestamp not null
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
select * from product_tb;
INSERT INTO product_tb(product_name, product_price, product_qty, created_at) VALUES('딸기', 1000, 100, NOW());
INSERT INTO product_tb(product_name, product_price, product_qty, created_at) VALUES('복숭아', 2000, 100, NOW());
INSERT INTO product_tb(product_name, product_price, product_qty, created_at) VALUES('수박', 3000, 90, NOW());
INSERT INTO product_tb(product_name, product_price, product_qty, created_at) VALUES('포도', 2000, 80, NOW());
INSERT INTO product_tb(product_name, product_price, product_qty, created_at) VALUES('살구', 1500, 150, NOW());
drop table buyer_tb;
create table buyer_tb(
buyer_id int auto_increment primary key,
buyer_name varchar(20) not null,
buyer_pw varchar(20) not null,
buyer_email varchar(30) not null,
created_at timestamp not null
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
select * from buyer_tb;
INSERT INTO buyer_tb(buyer_name, buyer_pw, buyer_email, created_at) VALUES('ssar','1234','ssar@nate.com',NOW());
INSERT INTO buyer_tb(buyer_name, buyer_pw, buyer_email, created_at) VALUES('cos', '1234', 'cos@nate.com', NOW());
INSERT INTO buyer_tb(buyer_name, buyer_pw, buyer_email, created_at) VALUES('love', '1234', 'love@nate.com', NOW());
INSERT INTO buyer_tb(buyer_name, buyer_pw, buyer_email, created_at) VALUES('zal', '1234', 'zal@nate.com', NOW());
INSERT INTO buyer_tb(buyer_name, buyer_pw, buyer_email, created_at) VALUES('hae', '1234', 'hae@nate.com', NOW());
drop table purchase_tb;
select * from purchase_tb;
CREATE TABLE purchase_tb (
purchase_id INT AUTO_INCREMENT PRIMARY KEY,
buyer_id INT,
product_id INT,
product_qty INT NOT NULL,
pur_qty INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO purchase_tb(buyer_id, product_id, product_qty, pur_qty, created_at)
VALUES
(1, 1, 100, 10, NOW()),
(2, 2, 100, 10, NOW()),
(3, 3, 90, 10, NOW()),
(4, 4, 80, 10, NOW()),
(5, 5, 150, 10, NOW())
;
Share article