728x90
반응형
1) SpringBoot
1-1) Session 예제(login, logout, login 시 메뉴)
1) SpringBoot
1-1) Session 예제(login, logout, login 시 메뉴)
(1) [src/main/resources] - [templates] 안에 home.html 파일 생성 후 아래와 같이 작성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>web2</title>
</head>
<body>
<h1>[ web2 ]</h1>
<ol>
<li>Lombok & Logger 사용
<ul>
<li>
<a href="lom/lombok">Lombok 사용하기</a>
</li>
<li>
<a href="lom/logger">Logger 사용하기</a>
</li>
<!--
여기는 메인화면입니다. 위의 l은 소문자 L입니다.
글꼴 때문에 꼬부라져 보이는 것입니다.
-->
</ul>
</li>
<li>서버로 데이터 보내기/받기
<ul>
<li>
<a href="param/view1">GET 방식으로 보내기</a>
</li>
<li>
<a href="param/view2">POST 방식으로 보내기</a>
</li>
<li>
<a href="param/model">Model 객체 이용하기</a>
</li>
</ul>
</li>
<li> 예제
<ul>
<li>
<a href="ex/calc1">계산기</a>
</li>
<li>
<a href="ex/calc2">계산기2</a>
</li>
</ul>
</li>
<li> 세션 사용
<ul>
<li>
<a href="ss/session1">세션에 값 저장</a>
</li>
<li>
<a href="ss/session2">세션에서 값 읽기</a>
</li>
<li>
<a href="ss/session3">세션의 값 삭제</a>
</li>
<li>
<a href="ss/login">로그인</a>
</li>
<li>
<a href="ss/logout">로그아웃</a>
</li>
<li>
<a href="ss/loginTest">로그인해야 들어갈 수 있는 메뉴</a>
</li>
</ul>
</li>
</ol>
</body>
</html>
(2) [src/main/java] - [net.datasa.web2.controller] 안에 SessionController.java 파일 생성 후 아래와 같이 작성
package net.datasa.web2.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import jakarta.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;
@Controller
@RequestMapping("ss")
@Slf4j
public class SessionController {
// 세션에 값 저장
@GetMapping("session1")
public String session1(HttpSession session) {
session.setAttribute("name", "홍길동");
return "redirect:/";
}
// 세션에서 값 읽기
@GetMapping("session2")
public String session2(HttpSession session) {
String name = (String) session.getAttribute("name");
log.debug("세션의 값 : {}", name);
return "ssView/session2";
}
// 세션의 값 삭제
@GetMapping("session3")
public String session3(HttpSession session) {
session.removeAttribute("name");
return "redirect:/";
}
// 로그인 폼으로 이동
@GetMapping("login")
public String login() {
return "ssView/login";
}
// 로그인 처리
@PostMapping("login")
public String loginProcess(
HttpSession session,
@RequestParam("id") String id,
@RequestParam("password") String pw
) {
log.debug("전송된 값: {}/{}", id, pw);
// id가 "abc", 비밀번호가 "123"이면 로그인
if(id.equals("abc") && pw.equals("123")) {
session.setAttribute("loginId", id);
return "redirect:/";
} else {
return "ssView/login";
}
}
// 로그아웃
@GetMapping("logout")
public String logout(
HttpSession session
) {
session.removeAttribute("loginId");
return "redirect:/";
}
// 로그인 폼으로 이동
@GetMapping("loginTest")
public String loginTest(HttpSession session) {
String id = (String) session.getAttribute("loginId");
if (id == null) {
return "redirect:/ss/login";
}
return "ssView/loginTest";
}
}
(3) [src/main/resources] - [templates.ssView] 안에 login.html 파일 생성 후 아래와 같이 작성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>
<body>
<h1>[로그인]</h1>
<form action="login" method="post">
<input type="text" name="id"><br>
<input type="password" name="password"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
(4) [src/main/resources] - [templates.ssView] 안에 loginTest.html 파일 생성 후 아래와 같이 작성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>loginTest.html</title>
</head>
<body>
<p>로그인해야만 보이는 페이지</p>
<p>[[${session.loginId}]]환영합니다.</p>
</body>
</html>
(5) 결과 화면
※ 현재는 id가 "abc", 비밀번호가 "123"일 때만 로그인 가능하도록 조건을 걸어 놓음!
※ "로그아웃"을 누른 뒤 "로그인해야 들어갈 수 있는 메뉴"를 다시 클릭할 시 화면(자동으로 로그인 화면으로 이동시켜줌)
'SpringBoot' 카테고리의 다른 글
SpringBoot(8) - Cookie 예제(쿠키 저장/읽기/삭제, 방문 횟수 카운트), 추가 정리 사항 (0) | 2024.07.01 |
---|---|
SpringBoot(6) - 계산기 예제(Version 2개), Session (0) | 2024.06.27 |
SpringBoot(5) - Web Page 예제2 추가 수정, 추가 정리 사항 (0) | 2024.06.26 |
SpringBoot(4) - Web Page 예제2, 추가 정리 사항 (0) | 2024.06.26 |
SpringBoot(3) - 간단한 Web Page 예제, 추가 정리 사항 (0) | 2024.06.24 |