티스토리 뷰

728x90

환경설정

  • IntelliJ IDEA 2022.3.3 (Ultimate Edition
  • jdk : 11
  • DB : MySQL
  • Mybatis
  • view : JSP
  • server : Tomcat 9

주요기능

  • 회원가입
  • 로그인
  • 회원목록 출력
  • 상세조회
  • 수정
  • 삭제
  • ajax 이메일 중복체크
index.jsp 구현
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index</title>
</head>
<body>
    <h2>hello spring framwork 회원 프로젝트 입니다</h2>
    <!--localhost:8081/member/save-->
    <a href="/member/save">회원가입</a>
    <a href="/member/login">로그인</a>
    <a href="/member">회원목록 조회</a>
</body>
</html>
MemberController Class 구현
  • 경로 - cotroller package - MemberController
package com.homestudy.project01.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/member")   // 공통 주소 설정
public class MemberController {

    //링크를 타고 들어오기 위해 GetMapping  필요
    @GetMapping("/save")
    public String saveForm(){
        return "save";
    }
}
  • RequestMapping은 공통 주소를 설정할 수 있다. (ex /member)
  • @GetMapping("/member/save")를 RequestMapping에 ("/member")을 설정하면
    @GetMapping("/save")만 입력하면 /member/save를 참조 하게 된다
save.jsp 구현

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>save</title>
</head>
<body>
    <!-- input에 입력된 값을  /member/save에 여기 주소로  post 방식으로 보내겠다 -->
    <form action="/member/save" method="post">
        <input type="text" name="memberEmail" placeholder="이메일">
        <input type="text" name="memberPassword" placeholder="비밀번호">
        <input type="text" name="memberName" placeholder="이름">
        <input type="text" name="memberAge" placeholder="나이">
        <input type="text" name="memberMobile" placeholder="전화번호">
        <input type="submit" value="회원가입">
    </form>
</body>
</html>
dto package 생성 -> MemberDTO Class 구현
package com.homestudy.project01.dto;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class MemberDTO {
    //회원과 관련된 정보 인스턴스 변수 생성
    private Long id;
    private String memberEmail;
    private String memberPassword;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getMemberEmail() {
        return memberEmail;
    }

    public void setMemberEmail(String memberEmail) {
        this.memberEmail = memberEmail;
    }

    public String getMemberPassword() {
        return memberPassword;
    }

    public void setMemberPassword(String memberPassword) {
        this.memberPassword = memberPassword;
    }

    public String getMemberName() {
        return memberName;
    }

    public void setMemberName(String memberName) {
        this.memberName = memberName;
    }

    public int getMemberAge() {
        return memberAge;
    }

    public void setMemberAge(int memberAge) {
        this.memberAge = memberAge;
    }

    public String getMemberMobile() {
        return memberMobile;
    }

    public void setMemberMobile(String memberMobile) {
        this.memberMobile = memberMobile;
    }

    private String memberName;
    private int memberAge;
    private String memberMobile;


}
MemberController에 DTO 객체 생성
service package 생성 -> MemberService Class 구현
repository package 생성 -> MemberRepository Class 구현
  • 어노테이션이 붙어 있으면 스프링 빈으로 등록 해서 객체를 사용할 수 있도록 해줌
  • 의존성을 설정해줘야 한다
  • MemberController에 @RequiredArgsConstructor 어노테이션 추가
    • private final MemberService memberService; - 서비스 클래스를 활용 할 수 있도록 생성
import com.homestudy.project01.dto.MemberDTO;
import com.homestudy.project01.service.MemberService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/member")   // 공통 주소 설정
@RequiredArgsConstructor // 의존성 주입
   private final MemberService memberService;
}
  • MemberService에도 @RequiredArgsConstructor 어노테이션 추가
import com.homestudy.project01.repository.MemberRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service  
@RequiredArgsConstructor  
public class MemberService {  
private final MemberRepository memberRepository;  
}
  • @RequiredArgsConstructor을 사용할 때 final은 필수
    • final이 붙은 필드만 가지고 생성자를 만드는 lombok의 어노테이션
  • 의존성 주입을 받는 걸 생성자 주입이라 한다
spring 에서 400 오류
  • 형변환이 안 돼서 발생한 문제
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함