๊ฐ๋ฐํ๊ฒฝ
์ธ์ด : JAVA (JDK 11)
์๋ฒ : Apache Tomcat 9.0
ํ๋ ์์ํฌ : Spring Framework 3.9.18, MyBatis 3.5.8, Bootstrap 5.2.3
DB : OracleXE 11gR2
IDE : sts-3.9.18.RELEASE, SQL Developler
๊ตฌํ๋ด์ฉ
- ๋ฉ์ธํ์ด์ง / ๊ฒ์ํ ๋ชฉ๋ก ๊ตฌํ
- CREATE : ๊ฒ์๊ธ ์์ฑ
- READ : ๊ฒ์๊ธ ๋ณด๊ธฐ + ์กฐํ์ ์ฆ๊ฐ
- UPDATE : ๊ฒ์๊ธ ์์
- DELETE : ๊ฒ์๊ธ ์ญ์
- tiles๋ฅผ ์ด์ฉํด ์นํ์ด์ง ๋ ์ด์์ ์ค์
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
</tiles-definitions>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="baseLayout" template="/WEB-INF/tiles/layout/baselayout.jsp">
<put-attribute name="title" value=""/>
<put-attribute name="heading" value=""/>
<put-attribute name="subheading" value=""/>
<put-attribute name="header" value="/WEB-INF/tiles/common/header.jsp"/>
<put-attribute name="content" value=""/>
<put-attribute name="footer" value="/WEB-INF/tiles/common/footer.jsp"/>
</definition>
<definition name="home" extends="baseLayout">
<put-attribute name="title" value="Main"/>
<put-attribute name="heading" value="WELCOME TO MY SPACE!"/>
<put-attribute name="subheading" value="๋ก๊ทธ์ธํ์ฌ ๋ค์ํ ์ ๋ณด๋ฅผ ์ป์ด๋ณด์ธ์!"/>
<put-attribute name="content" value="/WEB-INF/views/home.jsp"/>
</definition>
</tiles-definitions>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div class="b-example-divider"></div>
<header class="p-3 text-bg-dark">
<div class="container">
<div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start">
<a href="/" class="d-flex align-items-center mb-2 mb-lg-0 text-white text-decoration-none">
<svg xmlns="http://www.w3.org/2000/svg" width="45" height="45" fill="currentColor" class="bi bi-egg-fried" viewBox="0 0 16 16">
<path d="M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/>
<path d="M13.997 5.17a5 5 0 0 0-8.101-4.09A5 5 0 0 0 1.28 9.342a5 5 0 0 0 8.336 5.109 3.5 3.5 0 0 0 5.201-4.065 3.001 3.001 0 0 0-.822-5.216zm-1-.034a1 1 0 0 0 .668.977 2.001 2.001 0 0 1 .547 3.478 1 1 0 0 0-.341 1.113 2.5 2.5 0 0 1-3.715 2.905 1 1 0 0 0-1.262.152 4 4 0 0 1-6.67-4.087 1 1 0 0 0-.2-1 4 4 0 0 1 3.693-6.61 1 1 0 0 0 .8-.2 4 4 0 0 1 6.48 3.273z"/>
</svg>
</a>
<ul class="nav col-12 col-lg-auto me-lg-auto mb-2 justify-content-center mb-md-0">
<li><a href="#" class="nav-link px-2 text-secondary"></a></li>
<li><a href="#" class="nav-link px-2 text-white">Board</a></li>
</ul>
<div class="text-end">
<p class="nav-link px-2 text-white"></p>
<button type="button" class="btn btn-outline-light me-2">Login</button>
<button type="button" class="btn btn-warning">Sign-up</button>
</div>
</div>
</div>
</header>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div class="b-example-divider"></div>
<header class="p-3 text-bg-dark">
<div class="container">
<div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start">
<a href="/" class="d-flex align-items-center mb-2 mb-lg-0 text-white text-decoration-none">
<svg xmlns="http://www.w3.org/2000/svg" width="45" height="45" fill="currentColor" class="bi bi-egg-fried" viewBox="0 0 16 16">
<path d="M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/>
<path d="M13.997 5.17a5 5 0 0 0-8.101-4.09A5 5 0 0 0 1.28 9.342a5 5 0 0 0 8.336 5.109 3.5 3.5 0 0 0 5.201-4.065 3.001 3.001 0 0 0-.822-5.216zm-1-.034a1 1 0 0 0 .668.977 2.001 2.001 0 0 1 .547 3.478 1 1 0 0 0-.341 1.113 2.5 2.5 0 0 1-3.715 2.905 1 1 0 0 0-1.262.152 4 4 0 0 1-6.67-4.087 1 1 0 0 0-.2-1 4 4 0 0 1 3.693-6.61 1 1 0 0 0 .8-.2 4 4 0 0 1 6.48 3.273z"/>
</svg>
</a>
<ul class="nav col-12 col-lg-auto me-lg-auto mb-2 justify-content-center mb-md-0">
<li><a href="#" class="nav-link px-2 text-secondary"></a></li>
<li><a href="/list.do" class="nav-link px-2 text-white">Board</a></li>
</ul>
<div class="text-end">
<p class="nav-link px-2 text-white"></p>
<button type="button" class="btn btn-outline-light me-2">Login</button>
<button type="button" class="btn btn-warning">Sign-up</button>
</div>
</div>
</div>
</header>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div class="b-example-divider"></div>
<div class="container">
<footer class="d-flex flex-wrap justify-content-between align-items-center py-3 my-4 border-top">
<div class="col-md-4 d-flex align-items-center">
<a href="/" class="mb-3 me-2 mb-md-0 text-muted text-decoration-none lh-1">
<svg class="bi" width="30" height="24"><use xlink:href="#bootstrap"/></svg>
</a>
<span class="mb-3 mb-md-0 text-muted">© 2023 Company, Inc</span>
</div>
<ul class="nav col-md-4 justify-content-end list-unstyled d-flex">
<li class="ms-3"><a class="text-muted" href="#"><svg class="bi" width="24" height="24"><use xlink:href="#twitter"/></svg></a></li>
<li class="ms-3"><a class="text-muted" href="#"><svg class="bi" width="24" height="24"><use xlink:href="#instagram"/></svg></a></li>
<li class="ms-3"><a class="text-muted" href="#"><svg class="bi" width="24" height="24"><use xlink:href="#facebook"/></svg></a></li>
</ul>
</footer>
</div>
src="resources/images/mainphoto.png"
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<div align="center">
<img src="resources/images/mainphoto.png" width="200" height="200"/>
</div>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- controller -->
<bean class="com.mycompany.myapp.HomeController" />
<!-- tiles -->
<bean class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles/tiles.xml</value>
</list>
</property>
</bean>
<!-- viewResolver -->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
</bean>
</beans>
<definition name="/board/list" extends="boardLayout">
<put-attribute name="title" value="Board"/>
<put-attribute name="content" value="/WEB-INF/views/board/list.jsp"/>
</definition>
<definition name="/board/write" extends="baseLayout">
<put-attribute name="title" value="Write"/>
<put-attribute name="content" value="/WEB-INF/views/board/write.jsp"/>
</definition>
<definition name="/board/read" extends="baseLayout">
<put-attribute name="title" value="Write"/>
<put-attribute name="content" value="/WEB-INF/views/board/read.jsp"/>
</definition>
<definition name="/board/update" extends="baseLayout">
<put-attribute name="title" value="Write"/>
<put-attribute name="content" value="/WEB-INF/views/board/update.jsp"/>
</definition>
<input type="submit" value="์์ฑ" id='btnWrite'/>
<input type="submit" value="์ทจ์" id='btnCancle'/>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#btnCancle').click(function(){
$('#frm').attr('action', 'list.do').submit();
})
});
</script>
NOT NULL
: null์ ํ์ฉํ์ง ์์DROP TABLE boardBasic;
CREATE TABLE boardBasic(
num number CONSTRAINT boardBasic_num PRIMARY KEY,
writer varchar2(50) not null,
title varchar2(50) not null,
content varchar2(100) not null,
regdate date,
readcount number default 0
);
DROP SEQUENCE boardBasic_num_seq;
CREATE SEQUENCE boardBasic_num_seq
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;
INSERT INTO boardBasic (num, writer, title, content, regdate, readcount)
VALUES(boardBasic_num_seq.nextval, '๋ฐ์ฌ์ธ','์ฒซ๋ฒ์งธ ๊ฒ์๊ธ','์ฒซ๋ฒ์งธ ๊ฒ์๊ธ์ ๋ด์ฉ์
๋๋ค',sysdate,0);
INSERT INTO boardBasic (num, writer, title, content, regdate, readcount)
VALUES(boardBasic_num_seq.nextval, '์ด์งํ','๋๋ฒ์งธ ๊ฒ์๊ธ','๋๋ฒ์งธ ๊ฒ์๊ธ์ ๋ด์ฉ์
๋๋ค',sysdate,0);
commit;
<form name="frm" method="post">
<input type="button" value="์์ฑ" id='btnWrite'/>
<input type="button" value="์ทจ์" id='btnCancle'/>
</form>
<script>
$(document).ready(function(){
$('#btnWrite').click(function() {
$('#frm').attr('action', 'write.do').submit();
});
$('#btnCancle').click(function() {
$('#frm').attr('action', 'list.do').submit();
});
});
</script>
<table class="table table-border mt-1">
<form name="frm" id="frm" method="post">
<input type="button" href="write.do" value="๊ธ์ฐ๊ธฐ" id="btnWrite" class="btn btn-secondary btn-sm"/>
</form>
<script>
$(document).ready(function(){
$('#btnWrite').click(function() {
$('#frm').attr('action', 'write.do').submit();
});
});
</script>
<table class="table table-border mt-1">
<form name="frm" id="frm" method="get">
<input type="button" href="write.do" value="๊ธ์ฐ๊ธฐ" id="btnWrite" class="btn btn-secondary btn-sm"/>
</form>
<a>
์์๋ฅผ <input> button
์ผ๋ก ๋ณ๊ฒฝ<form name="frm" id="frm" method="get">
<input type="button" value="๋ชฉ๋ก" id="btnList" class="btn btn-secondary btn-sm"/>
<input type="button" value="์์ " id="btnUpdate" class="btn btn-secondary btn-sm"/>
<input type="button" value="์ญ์ " id="btnDelete" class="btn btn-secondary btn-sm"/>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#btnUpdate').click(function() {
$('#frm').attr('action', 'update.do?num=${dto.num}').submit();
});
$('#btnDelete').click(function() {
$('#frm').attr('action', 'delete.do?num=${dto.num}').submit();
});
$('#btnList').click(function() {
$('#frm').attr('action', 'list.do').submit();
});
});
</script>
<tr><input type="hidden" name="num" value="${dto.num}" />