2022_04_09 - oneso123456789/2022 GitHub Wiki
registerํ์ด์ง ์์ฑ์ค ๋ก๊ทธ๊ฐ ์์ฐํ๋ ๋ฌธ์ ๋ฅผ ์ฐพ์๋
๋ก๊ทธ๊ฐ ์์ฐํ๋ ๋ฌธ์ ๋ ์์คํ
๊ตฌ๋์์ ํฐ ๋ฌธ์ ๋ ์๋
ํ์ง๋ง ์ ์ง ๋ณด์ ์ธก๋ฉด์์ ๋ณด๋ฉด ํฐ ๋ฌธ์ ๊ฐ ๋จ
์น์ด ์ด๋ ๋ถ๋ถ๊น์ง ์๋ํ๋์ง ์ด๋ ๋ถ๋ถ์์ ๋ฒ๊ทธ๊ฐ ์๊ธด๊ฑด์ง ์์๋ณด๊ธฐ ์ํด์ ๊ผญ ๊ณ ์ณ์ผํจ
๊ทธ๋ ๊ฒ ํฐ ๋ฌธ์ ๋ ์๋๊ณ ๊ทธ๋ฅ ๋ด๊ฐ ์ฒ์์ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ๋
testํจํค์ง ์ชฝ resources/log4j.xml์๋ jdbc๋๋ผ์ด๋ฒ ๋ก๊ทธ๋ ๋ฒจ์ ์ค์ ํด์ค
๊ทธ๋ ์ง๋ง mainํจํค์ง ์ชฝ resources/log4j.xml์๋ jdbc ๋๋ผ์ด๋ฒ ๋ก๊ทธ ๋ ๋ฒจ ์ค์ ์ ๋๋ฝํจ
<!-- 2022-01-8 log level์ค์ ๋ถ๋ถ -->
<!-- 2022-02-11 ๋ก๊ทธ ๋ ๋ฒจ์ ์ค์ ํ๋ ค๋ฉด mybatis๋ฒ์ ์ 3.4.6์์ 3.5.4๋ก ๋ณ๊ฒฝํด์ผํจ -->
<logger name="jdbc.audit">
<level value="warn" />
</logger>
<logger name="jdbc.resultset">
<level value="warn" />
</logger>
<logger name="jdbc.connection">
<level value="warn" />
</logger>
์ด๋ฒ ๋ฌธ์ ๋ ๊ทธ๋ฅ ๋๊ฐ์ log4j.xml์ ๋น๊ตํด๋ณธ๊ฒฐ๊ณผ ์ฝ๊ฒ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํด์ ๋ฑํ ์ฐธ๊ณ ํ
์ฌ์ดํธ๋ ์์
ํผ๋๋ฐฑ์ ์ธ์ ๋ ์ค์ ์ด ๊ฐ์ฅ ์ค์ํ๊ธฐ ๋๋ฌธ์ ์ต๋ํ ์ต์ํด ์ง๋๋ก ๋
ธ๋ ฅํ๊ณ
๋ ์์ฆ ํธ๋ ๋๋ฅผ ๋ฐ๋ผ์ ์ค์ ์ java๋ก ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก ๋ค์๋ถํด xml๋์
์ต๋ํ ์๋ฐ ์ค์ ์ ์ฌ์ฉํ๋๋ก ๋
ธ๋ ฅํด์ผํจ
์๋ก์ด ๊ฒ์๋ฌผ์ ๋ฑ๋กํ์ ๋ ๋ง์ผ ํ๊ธ ์ ๋ ฅ์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค๋ฉด
- ๋ธ๋ผ์ฐ์ ์์ ํ๊ธ์ด ๊นจ์ ธ์ ์ ์ก์ด๋๋์ง๋ฅผ ํ์ธํ๊ณ
- ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ์คํ๋ง MVC์ชฝ์์ ํ๊ธ์ ์ฒ๋ฆฌํ๋ ํํฐ๋ฅผ ๋ฑ๋กํด์ผํจ
๋ธ๋ผ์ฐ์ ์์ ์ ์ก๋๋ ๋ฐ์ดํฐ๋ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด์ฉํด์ ํ์ธํ ์ ์์
๊ฐ๋ฐ์ ๋๊ตฌ์์ Network
ํญ์ ์ด์ด๋ ์ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ํด๋น ๋ด์ฉ์ ๋ณผ ์ ์์ผ๋ฏ๋ก
์ด๋ POST ๋ฐฉ์์ผ๋ก ์ ๋๋ก ์ ์ก๋์๋์ง, ํ๊ธ์ด ๊นจ์ง ์ํ๋ก ์ ์ก๋ ๊ฒ์ธ์ง๋ฅผ ํ์ธํ ์ ์์
์์ ํ๋ฉด(p242 or ๋ธ๋ผ์ฐ์ ์์ Networkํญ์ผ๋ก ๋ณธ ๋ด๊ฐ ์ ์กํ ๋ฐ์ดํฐ)์ ๋ณด๋ฉด
๋ธ๋ผ์ฐ์ ๊ฐ ํ๊ธ์ ๋ฌธ์ ์์ด ๋ณด๋์์ ์ ์ ์๋๋ฐ,
๋ฌธ์ ๋ Controllerํน์ DataBase์ชฝ์ด๋ผ๋๊ฒ์ ์ ์ ์์
BoardController์ BoardServiceImpl์ ๊ฐ๋ฐํ ๋๋ ์ด๋ฏธ Lombok์ ๋ก๊ณ ๋ฅผ ์ด์ฉํด์
ํ์ํ ๊ธฐ๋ฅ๋ค์ ๊ธฐ๋กํด ๋์์ผ๋ฏ๋ก, ์ด๋ฅผ ํ์ธํด์ผํจ
์์ ๋ก๊ทธ(p242~243์ฐธ๊ณ )๋ฅผ ์ดํด๋ณด๋ฉด BoardController์ ์ ๋ฌ๋ ๋ ์ด๋ฏธ ํ๊ธ์ด ๊นจ์ง ์ํ๋ก
์ฒ๋ฆฌ๋ ๊ฒ์ ๋ณผ ์ ์์
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์web.xml์ ๋ผ์ ์ ๊ฐ์ด ํํฐ๋ฅผ ์ถ๊ฐํด์ผํจ
<!-- 37~50๊น์ง WEB Encoding์ ํํฐ ์ฒ๋ฆฌ -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<servlet-name>appServlet</servlet-name>
</filter-mapping>
Java ์ค์ ์ ๊ฒฝ์ฐ
web.xml์ ๋์ ํ๋ WebConfig ํด๋์ค์์๋ ํํฐ๋ฅผ getSerlvetFilters()๋ฅผ
์ฌ์ ์ํด์ ์ฒ๋ฆฌํ ์ ์์
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
return new Filter[] { characterEncodingFilter };
}
ํ๊ธ์ ๋ํ ์ฒ๋ฆฌ๊ฐ ๋๋ ํ ๋ค์ ๊ฒ์๋ฌผ์ ์์ฑํด ๋ณด๋ฉด ํ๊ธ์ ๋ฌธ์ ๊ฐ ์์ด ์
๋ ฅ๋๋ ๊ฒ์
ํ์ธํ ์ ์์
๋ฑ๋ก ๊ณผ์ ์์ POST ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋ ๊ณผ์ ์ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์
(P245)์ฐธ๊ณ
BoardController์์ register() ๋ฉ์๋๋ redirect:/board/list
๋ฅผ ์ ์กํ๋๋ฐ
๋ธ๋ผ์ฐ์ ๋ ์ด๋ฅผ ํต๋ณด ๋ฐ์ ํ /board/list
๋ก ์ด๋ํ๊ฒ ๋จ
๋ง์ผ ์์ ๊ฐ์ด ์ฌ์ ์ก์ ํ์ง ์๋๋ค๋ฉด ์ฌ์ฉ์๋ ๋ธ๋ผ์ฐ์ ์ ์๋ก๊ณ ์นจ์ ํตํด์
๋์ผํ ๋ด์ฉ์ ๊ณ์ ์๋ฒ์ ๋ฑ๋กํ ์ ์๊ธฐ ๋๋ฌธ์(ํํ ๋๋ฐฐ๋ผ๊ณ ํํ) ๋ฌธ์ ๊ฐ ๋ฐ์ํจ
๋ธ๋ผ์ฐ์ ์์๋ ์ด๋ฐ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ์ฐฝ์ ๋ณด์ฌ์ฃผ๊ธฐ๋ ํ์ง๋ง ๊ทผ๋ณธ์ ์ผ๋ก ์ฐจ๋จ ํ์ง๋ ์์
๋ฐ๋ผ์ ๋ฑ๋ก, ์์ , ์ญ์ ์์
์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ํ ๋ค์ ๋์ผํ ๋ด์ฉ์ ์ ์กํ ์ ์๋๋ก
์์ ๋ธ๋ผ์ฐ์ ์ URL์ ์ด๋ํ๋ ๋ฐฉ์์ ์ด์ฉํจ
์ด๋ฌํ ๊ณผ์ ์์ ํ๋ ๋ ์ ๊ฒฝ ์จ์ผ ํ๋ ๊ฒ์ ๋ธ๋ผ์ฐ์ ์ ๋ฑ๋ก, ์์ , ์ญ์ ์ ๊ฒฐ๊ณผ๋ฅผ
๋ฐ๋ก ์ ์ ์๊ฒ ํผ๋๋ฐฑ์ ์ค์ผ ํ๋ค๋ ์ ์
๊ฒฝ๊ณ ์ฐฝ์ด๋ <div>
๋ฅผ ์ด์ฉํ๋ ๋ชจ๋ฌ์ฐฝ์ ์ด์ฉํด์ ์ด๋ฌํ ์์
์ ์ฒ๋ฆฌํจ
BoardController์์ redirect ์ฒ๋ฆฌ๋ฅผ ํ ๋ RedirectAttributes๋ผ๋ ํน๋ณํ ํ์
์
๊ฐ์ฒด๋ฅผ ์ด์ฉํ์
addFlashAttribute()์ ๊ฒฝ์ฐ ์ด๋ฌํ ์ฒ๋ฆฌ์ ์ ํฉํ๋ฐ,
๊ทธ ์ด์ ๋ ์ผํ์ฑ์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์
addFlashAttribute()๋ก ๋ณด๊ด๋ ๋ฐ์ดํฐ๋ ๋จ ํ๋ฒ๋ง ์ฌ์ฉํ ์ ์๊ฒ ๋ณด๊ด๋จ
(๋ด๋ถ์ ์ผ๋ก๋ HttpSession์ ์ด์ฉํด์ ์ฒ๋ฆฌํจ)
list.jsp ํ์ด์ง์ ์๋์ชฝ์ <script> ํ๊ทธ๋ฅผ ์ด์ฉํด์ ์ํฉ์ ๋ฐ๋ฅธ ๋ฉ์์ง๋ฅผ ํ์ธํ ์ ์์
<script type="text/javascript">
$(document).ready(function(){
var result = '<c:out value="${result}"/>';
});
</script>
๋ง์ผ ์๋ก์ด ๊ฒ์๋ฌผ์ด ๋ฑ๋ก๋ ์งํ์ ์์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌ๋จ
(p246๊ทธ๋ฆผ์ ๋ฒํธ๋ ์์ฑ๋ ๊ฒ์๋ฌผ์ ๋ฒํธ์)
์๋ก์ด ๊ฒ์๋ฌผ์ ๋ฒํธ๋ addFlashAttribute()๋ก ์ ์ฅ๋์๊ธฐ ๋๋ฌธ์ ํ ๋ฒ๋ ์ฌ์ฉ๋ ์ ์ด ์๋ค๋ฉด
์์ ๊ฐ์ด ๊ฐ์ ๋ง๋ค์ด ๋ด์ง๋ง ์ฌ์ฉ์๊ฐ /board/list
๋ฅผ ํธ์ถํ๊ฑฐ๋, ์๋ก๊ณ ์นจ
์ ํตํด์
ํธ์ถํ๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ์๋ฌด๋ฐ ๋ด์ฉ์ด ์๊ฒ ๋จ
addflashAttribute()๋ฅผ ์ด์ฉํด์ ์ผํ์ฑ์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ด๋ฅผ ์ด์ฉํด์
๊ฒฝ๊ณ ์ฐฝ์ด๋ ๋ชจ๋ฌ์ฐฝ ๋ฑ์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ ์ ์์
์ต๊ทผ ๋ธ๋ผ์ฐ์ ์์ ๊ฒฝ๊ณ ์ฐฝ(alert)
์ ๋์ฐ๋ ๋ฐฉ์๋ณด๋ค ๋ชจ๋ฌ์ฐฝ(Modal)
์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์
๋ง์ด ์ฌ์ฉํจ
BootStrap์ ๋ชจ๋ฌ์ฐฝ์ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๋ชฉ๋ก ํ๋ฉด์์ ํ์ํ ๋ฉ์์ง๋ฅผ
๋ณด์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด ๋ณด๊ฒ ์
์ต์ข
์ ์ธ ํํ๋ p247์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๋ชจ์ต์ด๋จ
๋ชจ๋ฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก<div>
๋ฅผ ํ๋ฉด์ ํน์ ์์น์ ๋ณด์ฌ์ฃผ๊ณ , ๋ฐฐ๊ฒฝ์ด ๋๋ <div>
์ ๋ฐฐ๊ฒฝ์์ ์
ํ์ ์ฒ๋ฆฌํจ
๋ชจ๋ฌ์ฐฝ์ ํ์ฑํ๋ <div>
๋ฅผ ์ ํํ์ง ์๊ณ ๋ ๋ค์ ์๋์ ํ๋ฉด์ ๋ณผ ์ ์๋๋ก ๋ง๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๋๋ฐ
ํจ๊ณผ์ ์ธ ๋ฐฉ์์
๋ชจ๋ฌ์ฐฝ์ ๋ํ ์ฝ๋๋ ๋ค์ด๋ก๋ํ SBAdmin2์ pages ํด๋ ๋ด notifications.html ํ์ผ์ ์ฐธ๊ณ ํ๋ฉด ๋จ
๋ชจ๋ฌ์ฐฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ์ฐ์ <div>
๋ฅผ ์ด์ฉํด์ ํ์ด์ง์ ์ฝ๋์ ์ถ๊ฐํด์ผํจ
list.jsp ๋ด์ <table>
ํ๊ทธ์ ์๋์ชฝ์ ๋ชจ๋ฌ์ฐฝ์ <div>
๋ฅผ ์ถ๊ฐํจ
</table><!-- tableํ๊ทธ์ ๋-->
<!-- Modal ์ถ๊ฐ -->
<div class="modal fade" id="mymodal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์์ต๋๋ค.</div>
<div class="modal-footer">
<button type="button" class="btn btn-default"
data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
<-- 2022_04_09 Modal๊ด๋ จ div๋ฅผ ๋ง๋ค๊ธด ํ์ง๋ง ์์ง ๋ชจ๋ฌ์ฐฝ์ ๋ณด์ฌ์ฃผ๋ ์์ ๋ ์ํ๊ณ ์์ค์ ๋ํ ๋๋ฒ๊น ๋ ์ํด์ ์ค๋ฅ๊ฐ ์์์ ์์ผ๋ 10์ผ์ ๊ณ ์น๋๋ก ํ๊ฒ ์ -->