diff --git a/src/main/java/com/example/demo/constant/Role.java b/src/main/java/com/example/demo/constant/Role.java
new file mode 100644
index 0000000000000000000000000000000000000000..a29848020e9e8e35445611e08d01398f37c93fd1
--- /dev/null
+++ b/src/main/java/com/example/demo/constant/Role.java
@@ -0,0 +1,8 @@
+package com.example.demo.constant;
+
+public enum Role {
+
+    USER, ADMIN
+    
+}
+
diff --git a/src/main/java/com/example/demo/controller/MemberController.java b/src/main/java/com/example/demo/controller/MemberController.java
new file mode 100644
index 0000000000000000000000000000000000000000..af6cc6b5948be28a1ecf62247da07b525980fb98
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/MemberController.java
@@ -0,0 +1,77 @@
+package com.example.demo.controller;
+
+import com.example.demo.service.MemberService;
+import com.example.demo.entity.Member;
+import com.example.demo.dto.MemberDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.repository.query.Param;
+import org.springframework.web.bind.annotation.*;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.example.demo.constant.Role;
+
+
+@RestController
+public class MemberController {
+
+    @Autowired
+    MemberService memberService;
+
+    public Member createMember(){
+        MemberDto memberDto = new MemberDto();
+        memberDto.setEmail("test@email.com");
+        memberDto.setName("홍길동");
+        memberDto.setAddress("서울시 마포구 합정동");
+        memberDto.setPassword("1234");
+        return Member.createMember(memberDto);
+    }
+
+    @RequestMapping(value = "/membertest", method = RequestMethod.GET)
+    public void membertest(){
+
+        Member member = createMember();
+        Member savedMember = memberService.saveMember(member);
+
+        System.out.println(member);
+        System.out.println(savedMember);
+
+    }
+    @RequestMapping(value = "/makeMember", method = RequestMethod.POST)
+    public String makeMember(@RequestBody String param){
+    
+        System.out.println(param);
+        JsonElement element = JsonParser.parseString(param);
+        JsonObject object = element.getAsJsonObject();
+    
+        String id = object.get("id").getAsString();
+        System.out.println("id : " + id);
+    
+        String email = object.get("email").getAsString();
+        System.out.println("email : " + email);
+    
+        String address = object.get("address").getAsString();
+        System.out.println("address : " + address);
+    
+        String name = object.get("name").getAsString();
+        System.out.println("name : " + name);
+    
+        String password = object.get("password").getAsString();
+        System.out.println("password : " + password);
+    
+        Member member = new Member();
+        member.setName(name);
+        member.setEmail(email);
+        member.setAddress(address);
+        member.setPassword(password);
+        member.setRole(Role.USER);
+    
+        memberService.saveMember(member);
+    
+        return "OK";
+    
+    }
+
+
+
+}
diff --git a/src/main/java/com/example/demo/controller/TestController.java b/src/main/java/com/example/demo/controller/TestController.java
index a587b1d36a65002aaa0c7ac83efcb4d71542bb74..8cefa888c14fe9f51ee2d26ce5daeb72ee7ca9ad 100644
--- a/src/main/java/com/example/demo/controller/TestController.java
+++ b/src/main/java/com/example/demo/controller/TestController.java
@@ -11,18 +11,34 @@ import com.google.gson.JsonObject;
 @RestController
 public class TestController{
 
-    @RequestMapping(value = "/", method = RequestMethod.GET)
-    public String test(@RequestParam("id") String id){
-        
-        JsonObject obj = new JsonObject();
-        obj.addProperty("title", "산사와 아가싸");
-        obj.addProperty("content", "로맨틱 코메디");
+    @RequestMapping(value = "/productlist", method = RequestMethod.GET)
+    public String productList(){
 
-        JsonObject data = new JsonObject();
-        data.addProperty("time", "토일 8시");
-        obj.add("data", data);
+        JsonObject obj1 = new JsonObject();
+        obj1.addProperty("item_nm", "수제 햄버거");
+        obj1.addProperty("item_detail", "소고기 패티와 토마토가 들어 있는 햄버거");
+        obj1.addProperty("item_reg_date", "2022/04/22");
+        obj1.addProperty("item_price", "4000");
 
-        return obj.toString();
+        JsonObject obj2 = new JsonObject();
+        obj2.addProperty("item_nm", "카레라이스");
+        obj2.addProperty("item_detail", "매운 3분 카레라이스");
+        obj2.addProperty("item_reg_date", "2022/03/10");
+        obj2.addProperty("item_price", "8000");
 
+        JsonObject obj3 = new JsonObject();
+        obj3.addProperty("item_nm", "라면");
+        obj3.addProperty("item_detail", "소고기 라면");
+        obj3.addProperty("item_reg_date", "2021/09/10");
+        obj3.addProperty("item_price", "1500");
+
+        JsonArray infoArray = new JsonArray();
+        infoArray.add(obj1);
+        infoArray.add(obj2);
+        infoArray.add(obj3);
+
+        return infoArray.toString();
     }
-    }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/demo/dto/MemberDto.java b/src/main/java/com/example/demo/dto/MemberDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..e16a7f13be6f68f2367278a1faa89f3797a3e077
--- /dev/null
+++ b/src/main/java/com/example/demo/dto/MemberDto.java
@@ -0,0 +1,15 @@
+package com.example.demo.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class MemberDto {
+
+    private String name;
+    private String email;
+    private String password;
+    private String address;
+    
+}
diff --git a/src/main/java/com/example/demo/entity/Member.java b/src/main/java/com/example/demo/entity/Member.java
new file mode 100644
index 0000000000000000000000000000000000000000..fa89b93f949fc47342b0e309eb894f841f421a14
--- /dev/null
+++ b/src/main/java/com/example/demo/entity/Member.java
@@ -0,0 +1,44 @@
+package com.example.demo.entity;
+import javax.persistence.*;
+import com.example.demo.dto.MemberDto;
+import com.example.demo.constant.Role;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+@Entity
+@Table(name="member")
+@Getter
+@Setter
+@ToString
+public class Member {
+
+    @Id
+    @Column(name="member_id")
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+
+    private String name;
+
+    @Column(unique = true)
+    private String email;
+
+    private String password;
+
+    private String address;
+
+    @Enumerated(EnumType.STRING)
+    private Role role;
+
+    public static Member createMember(MemberDto memberDto){
+        Member member = new Member();
+        member.setName(memberDto.getName());
+        member.setEmail((memberDto.getEmail()));
+        member.setAddress((memberDto.getAddress()));
+        member.setPassword(memberDto.getPassword());
+        member.setRole(Role.USER);
+        return member;
+
+    }
+}
+
diff --git a/src/main/java/com/example/demo/repository/MemberRepository.java b/src/main/java/com/example/demo/repository/MemberRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..0e4e6500831d0a5e3c7aed22583b7e571cb082b7
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/MemberRepository.java
@@ -0,0 +1,10 @@
+package com.example.demo.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import com.example.demo.entity.*;
+
+public interface MemberRepository extends JpaRepository<Member, Long>{
+
+    Member findByEmail(String email);
+    
+}
diff --git a/src/main/java/com/example/demo/service/MemberService.java b/src/main/java/com/example/demo/service/MemberService.java
new file mode 100644
index 0000000000000000000000000000000000000000..6fd8c9687db2b3591aecb86d850191345f741f82
--- /dev/null
+++ b/src/main/java/com/example/demo/service/MemberService.java
@@ -0,0 +1,39 @@
+package com.example.demo.service;
+
+import com.example.demo.entity.Member;
+import com.example.demo.repository.MemberRepository;
+import lombok.RequiredArgsConstructor;
+
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import javax.transaction.Transactional;
+
+@Service
+@Transactional
+@RequiredArgsConstructor
+public class MemberService {
+
+    private final MemberRepository memberRepository;
+
+   public Member saveMember(Member member){
+        validateDuplicatetMember(member);
+
+        return memberRepository.save(member);
+    }
+
+    
+    private boolean validateDuplicatetMember(Member member){
+        
+            Member findMember = memberRepository.findByEmail(member.getEmail());
+            if(findMember != null){
+                System.out.println("이미 가입된 회원입니다.");
+                return false;
+            }
+    
+            return true;
+     
+    }
+
+}
+
diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..5e6e9a64ff3dcc467b6d1fde41b33df73acd57be
--- /dev/null
+++ b/src/main/resources/static/index.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>Insert title here</title>
+
+  <link rel="stylesheet" href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css">
+  <script src="/webjars/jquery/3.6.0/jquery.min.js"></script>
+  <script src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script>
+  <script src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script>
+</head>
+
+<body>
+<div class="container">
+  <table class="table table-hover">
+    <thead class="thead-dark">
+    <tr>
+      <th>codeId</th>
+      <th>code</th>
+      <th>codeNm</th>
+      <th>codeDc</th>
+    </tr>
+    </thead>
+    <tbody>
+    <tr>
+      <td>COM001</td>
+      <td>REG01</td>
+      <td>단일 게시판 이용 등록</td>
+      <td>단일 게시판 이용 등록</td>
+    </tr>
+    <tr>
+      <td>COM001</td>
+      <td>REG02</td>
+      <td>커뮤니티 등록/td>
+      <td>커뮤니티 등록</td>
+    </tr>
+    </tbody>
+  </table>
+</div>
+</body>
+</html>
+
diff --git a/src/main/resources/static/product.html b/src/main/resources/static/product.html
new file mode 100644
index 0000000000000000000000000000000000000000..c3c779158224ee7145aafd1f8e63c026ffbedc72
--- /dev/null
+++ b/src/main/resources/static/product.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Product</title>
+    <link rel="stylesheet" href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css">
+    <script src="/webjars/jquery/3.6.0/jquery.min.js"></script>
+    <script src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script>
+    <script src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script>
+    <script>
+        $(document).ready(function(){
+          $("button").click(function(){
+
+            $.ajax({
+
+              type: 'GET',
+              url: '/productlist',
+              success: function(data){
+                var array = JSON.parse(data);
+                for(i=0; i < array.length; i++){
+                    var obj = array[i];
+                    html = '';
+                    html += '<tr>';
+                    html += '<td>' + obj.item_nm + '</td>'
+                    html += '<td>' + obj.item_detail + '</td>'
+                    html += '<td>' + obj.item_reg_date + '</td>'
+                    html += '<td>' + obj.item_price + '</td>'
+                    html += '</tr>';
+                    $("#tableBody").append(html);
+                }
+
+              }
+
+            });
+
+
+          });
+        });
+    </script>
+
+</head>
+<body>
+<h1>상품 데이터 목록 출력</h1>
+<button>조회</button>
+<table class="table table-hover">
+    <thead class="thead-dark">
+        <tr>
+            <th>상품이름</th>
+            <th>상품상세설명</th>
+            <th>상품등록일</th>
+            <th>상품가격</th>
+        </tr>
+    </thead>
+    <tbody id="tableBody">
+    </tbody>
+</table>
+</body>
+</html>