Spring Boot Board Project_10 My Page

송지윤·2024년 4월 20일
0

Spring Framework

목록 보기
43/65

1. 메인 페이지에서 로그인했을 때 닉네임 클릭하면 내 정보 수정할 수 있는 마이 페이지로 이동할 수 있게 만들어줄 거임

main.html

<a href="/myPage/info" id="nickname" th:text="*{memberNickname}">닉네임</a>

2. Controller 에서 요청 받아서 로그인한 사람 정보 보여줘야함

주소 구분자 "^^^" 이렇게 넣어놓음 다시 보여줘야함

@SessionAttribute

session 에 있는 loginMember 정보 얻어오기
@SessionAttribute("loginMember") Member loginMember
사용하려면 Controller 위에 @SessionAttributes 어노테이션 붙여줘야함
@SessionAttributes({"loginMember"})

MyPageController

	/** 내 정보 조회/수정 화면으로 전환
	 * @param loginMember : 세션에 존재하는 loginMember를 얻어와 매개변수에 대입
	 * @param model : 데이터 전달용 객체 (기본 request scope)
	 * @return myPage/myPage-info 로 요청 위임
	 */
	@GetMapping("info")
	public String info(
			@SessionAttribute("loginMember") Member loginMember,
			Model model
			) {
		
		// 이동하자마자 보여줘야하는 내용들 (현재 로그인한 사람의 정보)
		
		// 주소만 꺼내옴
		String memberAddress = loginMember.getMemberAddress();
		
		// 주소 있을 경우에만 동작
		if(memberAddress != null) {
			
			// 구분자 "^^^"를 기준으로
			// memberAddress 값을 쪼개어 String[] 로 반환
			String[] arr = memberAddress.split("\\^\\^\\^");
			// "^^^" 안 먹힘, "\^\^\^" 이것도 안 먹힘
			// regex 정규표현식이라서 그냥 문자열 안 먹힘
			
			// "08350^^^서울 구로구 천왕동 2-19^^^천왕"
			// -> ["08350", "서울 구로구 천왕동 2-19", "천왕"]
			model.addAttribute("postcode", arr[0]);
			model.addAttribute("address", arr[1]);
			model.addAttribute("detailAddress", arr[2]);
		}
		return "myPage/myPage-info";
	}

3. hmtl 로 돌아온 값을 thymeleaf 로 넣어주기

myPage-info.html

          <div class="myPage-row">
            <label>닉네임</label>

            <input type="text" name="memberNickname" 
              maxlength="10" id="memberNickname"
              th:value="${session.loginMember.memberNickname}"
              >
          </div>


          <div class="myPage-row">
            <label>전화번호</label>
            <input type="text" name="memberTel" 
              maxlength="11" id="memberTel"
              th:value="${session.loginMember.memberTel}"
              >
          </div>

          <div class="myPage-row info-title">
            <span>주소</span>
          </div>

          <div class="myPage-row info-address">
            <input type="text" name="memberAddress"
              placeholder="우편번호" id="postcode"
              th:value="${postcode}"
              >
            <!-- 주소는 request scope 에 세팅해서 보내줌 -->

            <button type="button">검색</button>
          </div>

          <div class="myPage-row info-address">
            <input type="text" name="memberAddress"
              placeholder="도로명/지번 주소" id="address"
              th:value="${address}"
              >
          </div>

          <div class="myPage-row info-address">
            <input type="text" name="memberAddress"
              placeholder="상세 주소" id="detailAddress"
              th:value="${detailAddress}"
              >
          </div>

로그인해서 닉네임 클릭했을 때 보여지는 화면

0개의 댓글