Repository ~ myBatis:scan
package com.smhrd.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.smhrd.entity.Tbl_Member;
@Repository
public interface MemberRepository extends JpaRepository<Tbl_Member, String>{
}
DTO: Data Transfer Object
package com.smhrd.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Entity
@AllArgsConstructor //์ ์ฒด ํ๋๋ฅผ ์ด๊ธฐํํ๋ ์์ฑ์
@NoArgsConstructor //๊ธฐ๋ณธ์์ฑ์
@Data // Getter/Setter
public class Tbl_Member {
@Id
@Column (length = 50, updatable = false )
private String email;
//pw
@Column (length = 50, nullable = false )
private String pw;
//tel
private String tel;
//address
private String address;
}
package com.smhrd.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.smhrd.entity.Tbl_Member;
import com.smhrd.repository.MemberRepository;
@Controller
@RequestMapping("/guest")
public class MemberController {
//interface-> ์ถ์๋ฉ์๋ ๋ฐ์ ์์ -> ๊ฐ์ฒด ์์ฑ ๋ถ๊ฐ
@Autowired // Spring ๋ฉ๋ชจ๋ฆฌ (spring container)๋ด์์ ๋ฃ๋ฌ์ค ์ ์ใ
๋ ๊ฐ์ฒด๋ฅผ ์ผ์์ ์ฐพ์
private MemberRepository repo;
//http://localhost:8088/{contextpath}/{mapping}/{URLMapping}
//http: localhost:8088/boot/main
//main์ด๋ผ๊ณ ์์ฒญํ์๋ ,main.jsp ๋ก ์ด๋
@RequestMapping ("/main")
public String goMain() {
return "guest/main";
}
@RequestMapping("/join")
public String join(Tbl_Member member) {
// 1. ๋ฐ์ดํฐ ์์ง
//2. ๋ก์ง ์คํ
//์์งํ ์ ๋ณด๋ฅผ db์ ์ ์ฅํ๋ ์ฝ๋
// 3. View ์ ํ / ๋ฐ์ดํฐ ์๋ต
//jpa ์ save:
//1. ID๋ฅผ ๊ธฐ์ค์ผ๋ก select
//2. ์์ผ๋ฉด --> update
//์์ผ๋ฉด --> insert
repo.save(member);
return "guest/join_success";
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- Context path๊ฐ์ ๋ฐ์์ฌ ์ ์๋๋ก -->
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<% String cpath = request.getContextPath();
pageContext.setAttribute("cpath",cpath);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Forty by HTML5 UP</title>
<meta charset="UTF-8" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- href๋ src ์์ฑ์์์ ํด๋ ๋ช
์ผ๋ก ์์ํ๋ ๊ฒฝ์ฐ
>> https://localhost:8088/{ContextPath}/{mapping}/+"href || src"
>> ์๋ชป๋ ๊ฒฝ๋ก
/๋ก ์์ํ๋ ๊ฒฝ์
>> http: //localhost: 8088/+ "href || src"
-->
<link rel="stylesheet" href="${cpath}/assets/css/main.css" />
</head>
<body>
<!-- Wrapper -->
<div id="wrapper">
<!-- Header -->
<header id="header" class="alt">
<a href="index.html" class="logo"><strong>Forty</strong> <span>by HTML5 UP</span></a>
<nav>
<a href="#menu">๋ก๊ทธ์ธ</a>
<!--Ex07. ๋ก๊ทธ์ธ ํ ์ํ๋ผ๋ฉด '๊ฒ์ํ'๋ฒํผ๊ณผ '๊ฐ์ธ์ ๋ณด์์ ', '๋ก๊ทธ์์' ๋ฒํผ์ ์ถ๋ ฅํ์์ค. -->
</nav>
</header>
<!-- Menu -->
<nav id="menu">
<ul class="links">
<%--Ex07. ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ : ์ฌ์ฉ์์๊ฒ ์ ๋ณด๋ฅผ ์
๋ ฅ๋ฐ์ ํ์์ธ์ง ์๋์ง ์กฐํํ๋ ๊ธฐ๋ฅ์ ๋ง๋ค์ด ๋ด
์๋ค. --%>
<li><h5>๋ก๊ทธ์ธ</h5></li>
<form>
<li><input type="text" placeholder="Email์ ์
๋ ฅํ์ธ์"></li>
<li><input type="password" placeholder="PW๋ฅผ ์
๋ ฅํ์ธ์"></li>
<li><input type="submit" value="LogIn" class="button fit"></li>
</form>
</ul>
<ul class="actions vertical">
<%--Ex06. ํ์๊ฐ์
๊ธฐ๋ฅ ๋ง๋ค๊ธฐ : ์ฌ์ฉ์์๊ฒ ์ ๋ณด๋ฅผ ์
๋ ฅ๋ฐ์ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ๋ง๋ค์ด ๋ด
์๋ค. --%>
<li><h5>ํ์๊ฐ์
</h5></li>
<!-- /boot/guest/join -->
<form action = "${cpath}/guest/join" method = "post">
<li><input name = "email" type="text" placeholder="Email์ ์
๋ ฅํ์ธ์"></li>
<li><input name = "pw" type="password" placeholder="PW๋ฅผ ์
๋ ฅํ์ธ์"></li>
<li><input name = "tel" type="text" placeholder="์ ํ๋ฒํธ๋ฅผ ์
๋ ฅํ์ธ์"></li>
<li><input name = "address" type="text" placeholder="์ง์ฃผ์๋ฅผ ์
๋ ฅํ์ธ์"></li>
<li><input type="submit" value="JoinUs" class="button fit"></li>
</form>
</ul>
</nav>
<!-- Banner -->
<section id="banner" class="major">
<div class="inner">
<header class="major">
<%--Ex07. ๋ก๊ทธ์ธ ํ ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์์ ์ธ์
์์ด๋๋ก ๋ฐ๊พธ์์ค. ex)smart๋ ํ์ํฉ๋๋ค --%>
<h1>๋ก๊ทธ์ธ ํ ์ธ์
์์ด๋๋ฅผ ์ถ๋ ฅํด์ฃผ์ธ์</h1>
</header>
<div class="content">
<p>์๋๋ ์ง๊ธ๊น์ง ๋ฐฐ์ด ์น ๊ธฐ์ ๋ค์
๋๋ค.<br></p>
<ul class="actions">
<li><a href="#one" class="button next scrolly">ํ์ธํ๊ธฐ</a></li>
</ul>
</div>
</div>
</section>
<!-- Main -->
<div id="main">
<!-- One -->
<section id="one" class="tiles">
<article>
<span class="image">
<img src="${cpath}/images/pic01.jpg" alt="" />
</span>
<header class="major">
<h3><a href="#" class="link">HTML</a></h3>
<p>ํํ์ด์ง๋ฅผ ๋ง๋๋ ๊ธฐ์ด ์ธ์ด</p>
</header>
</article>
<article>
<span class="image">
<img src="${cpath}/images/pic02.jpg" alt="" />
</span>
<header class="major">
<h3><a href="#" class="link">CSS</a></h3>
<p>HTML์ ๋์์ธํด์ฃผ๋ ์ธ์ด</p>
</header>
</article>
<article>
<span class="image">
<img src="${cpath}/images/pic03.jpg" alt="" />
</span>
<header class="major">
<h3><a href="#" class="link">Servlet/JSP</a></h3>
<p>Java๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ ์น ํ๋ก๊ทธ๋๋ฐ ์ธ์ด/์คํฌ๋ฆฝํธ ์ธ์ด</p>
</header>
</article>
<article>
<span class="image">
<img src="${cpath}/images/pic04.jpg" alt="" />
</span>
<header class="major">
<h3><a href="#" class="link">JavaScript</a></h3>
<p>HTML์ ๊ธฐ๋ณธ์ ์ธ ๋ก์ง์ ์ ์ํ ์ ์๋ ์ธ์ด</p>
</header>
</article>
<article>
<span class="image">
<img src="${cpath}/images/pic05.jpg" alt="" />
</span>
<header class="major">
<h3><a href="#" class="link">MVC</a></h3>
<p>์น ํ๋ก์ ํธ ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋์์ธํจํด</p>
</header>
</article>
<article>
<span class="image">
<img src="${cpath}/images/pic06.jpg" alt="" />
</span>
<header class="major">
<h3><a href="#" class="link">Web Project</a></h3>
<p>์ฌ๋ฌ๋ถ์ ์ต์ข
ํ๋ก์ ํธ์ ์น ๊ธฐ์ ์ ํ์ฉํ์ธ์!</p>
</header>
</article>
</section>
<!-- Two -->
<section id="two">
<div class="inner">
<header class="major">
<h2>๋ฉ์ธ์ง ํ์ธํ๊ธฐ</h2>
</header>
<%-- chatting ๊ธฐ๋ฅ์ ๋ง๋ค์ด ๋ด
์๋ค! --%>
<div class="container chat">
<div class="other">
<p>๋ณด๋ธ์ฌ๋ ์ด๋ฆ :</p>
<p>๋ค๋ฅธ์ฌ๋์๊ฒ์ ์จ ๋ฉ์ธ์ง</p>
</div>
<div class="mychat">
<p>๋ด๊ฐ๋ณด๋ธ ์ฑํ
</p>
</div>
<div class="other">
<p>๋ณด๋ธ์ฌ๋ ์ด๋ฆ2 :</p>
<p>๋ค๋ฅธ์ฌ๋์๊ฒ์ ์จ ๋ฉ์ธ์ง2</p>
</div>
</div>
<%-- ์ฑํ
์ฐฝ ๋! --%>
</div>
</section>
</div>
<!-- Contact -->
<section id="contact">
<div class="inner">
<section>
<form>
<div class="field">
<label for="message">Message</label>
<textarea id="message" rows="6"></textarea>
</div>
<ul class="actions">
<li><input type="button" value="Send Message" class="special" /></li>
<li><input type="reset" value="Clear" /></li>
</ul>
</form>
</section>
<%--Ex07. ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์์ ์ ๋ณด๋ก ๋ณ๊ฒฝํด ๋ด
์๋ค. --%>
<section class="split">
<section>
<div class="contact-method">
<span class="icon alt fa-envelope"></span>
<h3>Email</h3>
<a href="#">๋ก๊ทธ์ธ ํ ์ฌ๋์ ์ด๋ฉ์ผ์ ์ถ๋ ฅ</a>
<!-- ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์์ ์ด๋ฉ์ผ์ ์ถ๋ ฅํ์์ค -->
</div>
</section>
<section>
<div class="contact-method">
<span class="icon alt fa-phone"></span>
<h3>Phone</h3>
<span>๋ก๊ทธ์ธ ํ ์ฌ๋์ ์ ํ๋ฒํธ๋ฅผ ์ถ๋ ฅ</span>
<!-- ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์์ ์ ํ๋ฒํธ๋ฅผ ์ถ๋ ฅํ์์ค -->
</div>
</section>
<section>
<div class="contact-method">
<span class="icon alt fa-home"></span>
<h3>Address</h3>
<span>๋ก๊ทธ์ธ ํ ์ฌ๋์ ์ง์ฃผ์๋ฅผ ์ถ๋ ฅ</span>
<!-- ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์์ ์ง์ฃผ์๋ฅผ ์ถ๋ ฅํ์์ค -->
</div>
</section>
</section>
</div>
</section>
<!-- Footer -->
<footer id="footer">
<div class="inner">
<ul class="icons">
<li><a href="#" class="icon alt fa-twitter"><span class="label">Twitter</span></a></li>
<li><a href="#" class="icon alt fa-facebook"><span class="label">Facebook</span></a></li>
<li><a href="#" class="icon alt fa-instagram"><span class="label">Instagram</span></a></li>
<li><a href="#" class="icon alt fa-github"><span class="label">GitHub</span></a></li>
<li><a href="#" class="icon alt fa-linkedin"><span class="label">LinkedIn</span></a></li>
</ul>
<ul class="copyright">
<li>© Untitled</li><li>Design: <a href="https://html5up.net">HTML5 UP</a></li>
</ul>
</div>
</footer>
</div>
<!-- Scripts -->
<script src="${cpath}/assets/js/jquery.min.js"></script>
<script src="${cpath}/assets/js/jquery.scrolly.min.js"></script>
<script src="${cpath}/assets/js/jquery.scrollex.min.js"></script>
<script src="${cpath}/assets/js/skel.min.js"></script>
<script src="${cpath}/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="${cpath}/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="${cpath}/assets/js/main.js"></script>
</body>
</html>