- ํ๋ก์ ํธ๋ช : ๋๋ฆฌ๋ธ๋ฌ๋ฆฌ - ๋์๊ด ์น ์ดํ๋ฆฌ์ผ์ด์ ํ๋ก์ ํธ
- ํ๋ช : ํ์ฃผ๊ธ์ง
- ์ฐธ์ฌ์ธ์ : 6๋ช
- ๊ฐ๋ฐ๊ธฐ๊ฐ : 2020.10.1 ~ 2020.11.30
- ๋ด์ฉ : SpringMVCํจํด์ ํ์ฉํ ์จ๋ผ์ธ ๋์๊ด ๋์ฌ ์๋น์ค ์ ๊ณตํ๋ ์น์ฌ์ดํธ ์ ์
- ๊ฐ๋ฐํ๊ฒฝ : MyBatis, Oracle, Spring Boot 4, Bootstrap 4, JSP & Servlet, Javascript, Vue.js, jQuery
- ๋ด๋น์ ๋ฌด : QNA๊ฒ์ํ ๊ฒ์๊ธ ๋ฐ ๋๊ธ CRUD, ํ์ด์ง์ฒ๋ฆฌ, ๊ฒ์๊ธฐ๋ฅ, ์ธ๊ธฐ๋์ํ์ด์ง, ์ ์ฐฉ๋์ํ์ด์ง, faq, ์ค์๋๊ธธํ์ด์ง ๋ฑ
1๏ธโฃ ํํ๋ฉด
โ๏ธ๋ชจ๋ ํ์ด์ง๋ ๋ถํธ์คํธ๋ฉ์ ์ ์ฉํด ๋ฐ์ํ์ผ๋ก ๋ง๋ค์ด์ฃผ์๋ค.
โ๏ธ ํํ๋ฉด์ ์๋ก๊ณ ์นจ ํ ๋๋ง๋ค ๋๋ค์ผ๋ก ๋์๊ด ๋์์ ๊ด๋ จ๋ ํค๋๋ผ์ธ ๊ธ๊ท, ๋์๊ด ์ด๋ฏธ์ง, ์ด๋ฏธ์ง์ ๋ง๋ ์ฅ์๊ฐ
๋์ค๋๋ก ๊ตฌํํ์๋ค.
โซํํค๋ฉ ์ด๋ฏธ์ง ๋๋ค์ถ๋ ฅ ๊ตฌํ์์
const home_heading = document.getElementById('home-heading');
const images = ['library1.png','library2.png','library3.png','library4.png','library5.png','library6.png','library7.png','library8.jpg'];
const getImage = Math.floor(Math.random() * images.length);
home_heading.style.background = "url('../img/" + images[getImage] + "')";
โ๏ธ ์บ๋ฌ์
: ํํ๋ฉด์์ ์บ๋ฌ์
์ ์ด์ฉํด์ ๋์๋ชฉ๋ก๊ณผ ๊ด๊ณ ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๋๋ก ํ์๋ค.
โ๏ธ ํธํฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจ ํ ๋๋ง๋ค ๋์๊ด๋ จ ๋ช
์ธ๋ฌธ๊ตฌ๋ฅผ ๋๋ค์ผ๋ก ์ง์ ํด์ฃผ์๋ค.
2๏ธโฃ ๋์๊ด์๊ฐ ํ์ด์ง
3๏ธโฃ ๋์์ ๋ณด ํ์ด์ง
โ๏ธDB์์ ๊ฐ์ฅ ๋น๋ฆฐ ๋์๊ฐ ๋ง์ ์์ผ๋ก 12๊ฐ์ ๋์์ ์ ๋ณด๋ฅผ ์ธ๊ธฐ๋์ ํ์ด์ง์ ์ถ๋ ฅ. ๋์๋ฅผ ๋๋ฅด๋ฉด ๋ฐ๋ก ์ฑ
์ ์์ธํ์ด์ง๋ก ์ฐ๊ฒฐ.
โซ์ธ๊ธฐ๋์ ๋ชฉ๋ก์ ๋ฝ์์ค๊ธฐ ์ํ DB Select ๋ฌธ
<!-- ์ด๋ฌ์ ์ธ๊ธฐ๋์ ๋ชฉ๋ก -->
<select id="getPopBook" resultType="bookVO">
<![CDATA[select * from(select b_title, b_writer,b_image,count(bor_no) from book,
borrow where book.b_no = borrow.b_no group by b_title, b_writer, b_image order by count(bor_no) desc)
where rownum<=12 ]]>
</select>
โซ์ ์ฐฉ๋์ ๋ชฉ๋ก์ ๋ฝ์์ค๊ธฐ ์ํ DB Select ๋ฌธ
โ๏ธbookํ
์ด๋ธ์ ์
๊ณ ์ผ์ ์ปฌ๋ผ์ธ b_year๋ฅผ ๊ธฐ์ค์ผ๋ก ์ต๊ทผ ๋ ์ง๋ถํฐ 12๊ฐ์ ๋์์ ์ ๋ณด๋ฅผ ์ ์ฐฉ๋์ ํ์ด์ง์ ์ถ๋ ฅ. ๋ง์ฐฌ๊ฐ์ง๋ก ๋์๋ฅผ ๋๋ฅด๋ฉด ๋ฐ๋ก ์ฑ
์ ์์ธํ์ด์ง๋ก ์ฐ๊ฒฐ.
<!-- ์ ์ฐฉ๋์ ๋ชฉ๋ก -->
<select id="selectAllNew" resultType="bookVO">
<![CDATA[ select * from (select * from book order by b_year desc) where rownum <=12 ]]>
</select>
4๏ธโฃ ๊ฒ์ํ
โPostController ์์ค์ฝ๋
โQnaController ์์ค์ฝ๋
โ๏ธ Read : ๊ฒ์ํ์ ์ ์ฒด ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๊ณ ์ ์ฒด ๊ฒ์๊ธ์ ํ์ธ์ด ๊ฐ๋ฅํ๋ค. ํ์ฌ ํ์ด์ง์ ๋ฐฐ๊ฒฝ์์ ์ฃผ์ด ๋ช๋ฒ์งธ ํ์ด์ง์ ์๋์ง ์ ์ ์๋ค.
โ๏ธ Insert : ๋ก๊ทธ์ธ์ ํ์ง ์๊ณ ๊ธ์ฐ๊ธฐ๋ฅผ ํด๋ฆญ ํ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋์ํจ๋ค. ๊ธ ์์ฑ์์๋ ๋ง๋จธ๋ฆฌ๋ฅผ ์ ํํ๊ณ ์ ๋ชฉ, ๋ด์ฉ์ ์ฐ๊ณ ํ์ผ์ฒจ๋ถ๊ฐ ๊ฐ๋ฅํ๋ค.
โ๏ธ Update : ๊ธ ์์ ์ ๋ณธ์ธ๊ณผ ๊ด๋ฆฌ์๋ง ๊ฐ๋ฅํ๋ค. ๋ง๋จธ๋ฆฌ, ์ ๋ชฉ, ๋ด์ฉ, ์ฒจ๋ถํ์ผ ์ ๋ถ ์์ ๊ฐ๋ฅํ๋ค.
โ๏ธ Delete : ๊ธ ์ญ์ ๋ํ ๋ณธ์ธ๊ณผ ๊ด๋ฆฌ์๋ง ๊ฐ๋ฅํ๋ค. ์ญ์ ๋ฒํผ์ ํด๋ฆญํ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ์ฐฝ์ ๋์ ํ์ธ์ํจ ํ ์ญ์ ๋ฅผ ์งํ ๋๋ ์ทจ์ํ ์ ์๋ค.
โ๏ธ ๊ฒ์ํ ๋๊ธ
-
Insert : ๋๊ธ์ ๋ ฅ๋์ ๋ด์ฉ์ ์ ๋ ฅํ์ง ์์ ์ํ์์ ๋ฑ๋ก ๋ฒํผ์ ํด๋ฆญํ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ์ฐฝ์ ๋์ด๋ค.
-
Update, Delete : ๋๊ธ ์์ ๋ฐ์ญ์ ๋ ๋ณธ์ธ๊ณผ ๊ด๋ฆฌ์๋ง ๊ฐ๋ฅํ๋ค. ์ญ์ ๋ฒํผ์ ํด๋ฆญํ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ์ฐฝ์ ๋์ ํ์ธ์ํจ ํ ์ญ์ ๋ฅผ ์งํ ๋๋ ์ทจ์ํ ์ ์๋ค.
โ๏ธ ๊ฒ์๊ธฐ๋ฅ
- ์ ๋ชฉ, ์์ฑ์, ๋ด์ฉ์ ๋ฐ๋ผ ๊ฒ์์ด ๊ฐ๋ฅํ๊ณ , ๊ฒ์์ผ๋ก ์ธ์ ์ ์ ์ฅํด ๊ฒ์๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌํ์ด์ง์ผ ๊ฒฝ์ฐ์ ํ์ด์ง๋ฅผ ๋๊ฒจ๋ ๊ฒ์ํ ๋ด์ฉ์ด ๋จ์์์ด์ ์ ์์ ์ผ๋ก ํ์ด์ง ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ์๋ค.
5๏ธโฃ ๋ถ์์ ์ธ ํ์ด์ง
๐น์์ฃผ๋ฌป๋์ง๋ฌธ ํ์ด์ง
์๋ธ๋ฉ๋ด๋ฐ๋ ๋ด๋น๊ฒ์ด์
๋ฐ๋ก ํ์ฉํ๋ ์์ฝ๋์ธ ํจ๊ณผ๋ฅผ ์์ฃผ๋ฌป๋์ง๋ฌธ ๊ฒ์ํ์ ์ฌ์ฉํ์์ต๋๋ค.
์์ฃผ๋ฌป๋ ์ง๋ฌธ์ ๋ด์ฉ๊ณผ ๋ต๋ณ์ ๋ฏธ๋ฆฌ ๊ฐ๋จํ๊ฒ ํ์ด์ง์ ์
๋ ฅํด๋๊ณ ๊ฐ๊ฐ์ ๋ผ๋ฒจ์ input type์ radio๋ก ๋๊ณ ์จ๊ธด๋ค์ ํด๋ฆญํ์๋ ํธ๋์ง์
์ ์ฃผ์ด ํ ๊ฐ์ ์ง๋ฌธ์ ํด๋ฆญํ ๋๋ง๋ค ๋ต๋ณ๋ถ๋ถ์ด ์ด๋ฆฌ๋๋ก cssํจ๊ณผ๋ฅผ ๋ํ๋ด์์ต๋๋ค.
๐น์ค์๋๊ธธ ํ์ด์ง
์ค์๋๊ธธ์ ๋นํธ์บ ํ ์ ์ด์ผํฐ ์ฃผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉํ์์ต๋๋ค.
๋ค๋ฅธ HTMLํ์ด์ง๋ฅผ ํ์ฌ ํ์ด์ง์ ํฌํจ์ํค๋ ์ค์ฒฉ๋ ๋ธ๋ผ์ฐ์ ๋ก iframe์์๋ฅผ ์ด์ฉํ์์ต๋๋ค.
src์ ์ฝ์
ํ ํ์ด์ง์ฃผ์๋ฅผ ์ฝ์
ํ์ฌ ์ค์๋๊ธธ ์น ํ์ด์ง ์์ ๊ตฌ๊ธ๋งต ํ์ด์ง๋ฅผ ๋ถ๋ฌ์์ต๋๋ค.