2022_03_05 - oneso123456789/2022 GitHub Wiki
๊ฐ ์์ญ์ ๋ํ ๋ชจ๋ ์ฒ๋ฆฌ์ ํ
์คํธ๊ฐ ์๋ฃ๋จ
๋ง์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๋ชจ๋ ๋ฌธ์ ๋ ํ๋ฉด ์ชฝ์์๋ง ๋ฐ์ํ๋ค๊ณ ๋งํ ์ ์์
ํ๋ฉด์๋ JSP์ JavaScript(jQuery), CSS, HTML์ ์ด์ฉํด์ ์์ฑํจ
ํ๋ฉด์ ๊ฐ๋ฐํ๊ธฐ ์ ์๋ ๋ฐ๋์ ํ๋ฉด์ ์ ์ฒด ๋ ์ด์์์ด๋ ๋์์ธ์ด ๋ฐ์๋
์ํ์์ ๊ฐ๋ฐํ๋ ๊ฒ์ ์ถ์ฒํจ
์ผ๋ถ ๊ฐ๋ฐ์๋ค์ ํ๋ฉด์ ๋์ค์ ์ฒ๋ฆฌํ๋ค๊ณ ์๊ฐํ๊ณ ์งํํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ๊ฒฐ๊ณผ์ ์ผ๋ก๋
๋ ๋ฐฐ์ ์๊ฐ์ ๋ค์ด๋ ๊ฒฐ๊ณผ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ๊ถ์ฅํ์ง ์์
๋ง์ผ ์น ๋์์ด๋๊ฐ ๊ฐ์ด ์ฐธ์ฌํ์ง ๋ชปํ๋ค๋ฉด ์ต๊ทผ์ ์ ํํ๋ BootStrap์ ์ด์ฉํ
๋ฌด๋ฃ ๋์์ธ์ ์ฐพ์๋ณด๋ ๊ฒ๋ ์ข์
https://startbootstrap.com/template-categories/all/
์์ ์์ ์ฌ์ฉํ ๋์์ธ์ 'SB Admin2'๋ฅผ ์ด์ฉํฉ๋๋ค
SB Admin2๋ http://startbootstrap.com/template-overviews/sb-admin-2/
๋ฅผ ํตํด์
๋ค์ด๋ก๋ ํ์๋ ์์ถ์ ํ์ด์ ์ฌ์ฉํ๋ฉด ๋จ
์คํ๋ง MVC์ JSP๋ฅผ ์ฒ๋ฆฌํ๋ ์ค์ ์ servlet-context.xml์ ์๋์ ๊ฐ์ด ์์ฑ๋์ด ์์
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
์คํ๋ง MVC์ ์ค์ ์ ViewResolver๋ผ๋ ๊ฐ์ฒด๋ฅผ ํตํด์ ์ด๋ฃจ์ด์ง๋๋ฐ,
์์ ์ค์ ์ ๋ณด๋ฉด /WEB-INF/views/
ํด๋๋ฅผ ์ด์ฉํ๋๊ฒ์ ๋ณผ ์ ์์
WEB-INF
๊ฒฝ๋ก๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์ ๊ทผํ ์ ์๋ ๊ฒฝ๋ก์ด๋ฏ๋ก ๋ฐ๋์
Controller๋ฅผ ์ด์ฉํ๋ ๋ชจ๋ธ2 ๋ฐฉ์์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์
๊ฒ์๋ฌผ ๋ฆฌ์คํธ์ URL์ /board/list
์ด๋ฏ๋ก ์ต์ข
์ ์ธ ๊ฒฝ๋ก๋
/WEB-INF/views/board/list.jsp
๊ฐ ๋จ ํด๋น ๊ฒฝ๋ก์ list.jsp ํ์ผ์ ์ถ๊ฐํ๊ฒ ์
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>List Page</h1>
</body>
</html>
list.jsp๋ ์ฐ์ ์ ์์ ์ผ๋ก URL ์ฒ๋ฆฌ๊ฐ ๋๋์ง๋ฅผ ํ์ธํด์ผ ํ๋ฏ๋ก Tomcat์ผ๋ก ์คํํด์ ํ์ธํจ
'ex02' ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ณ Run on Server๋ก tomcat์คํ
localhost๊ฒฝ๋ก์ /controller/board/list๋ก ์ ๊ทผ
์ฒซ ์คํ์์๋ง /controller๋ฅผ ๋ถ์ด๊ณ ์๋ฒ์ค์ ์์ Path๋ฅผ /๋ก ๊ต์ฒดํด์ค
์ ์์ ์ผ๋ก 'board/list' ํ์ด์ง๊ฐ ๋์ํ๋ค๋ฉด SB Admin2์ pages ํด๋์ ์๋
tables.html ๋ด์ฉ์ list.jsp์ ๋ด์ฉ์ผ๋ก ๊ทธ๋๋ก ์นดํผ์คํ์ด์คํธ ํด์ค
์ด๋ list.jsp์ ์๋จ์ JSP Page ์ง์์๋ ์ง์ฐ์ง ์์์ผํจ
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
... ์ดํ ์๋ต ...
๋ธ๋ผ์ฐ์ ์์๋ CSS ๋ฑ์ด ์์ ํ ๊นจ์ง ์ํ์ด๋ฏ๋ก ํ ์คํธ๋ง ์ถ๋ ฅ๋๋๊ฒ์ ๋ณผ ์ ์์
CSS์ JSํ์ผ๋ค์ ๊ฒฝ๋ก๋ฅผ ์์ ํ๋ ์์
์ ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ํตํด์ ํ์ธํ๋ฉฐ ์งํํจ
๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ํตํด์ ํ์ฌ ๋ธ๋ผ์ฐ์ ์ Network ๋ถ๋ถ์ ํ์ธํ๊ณ , ํ์ด์ง๋ฅผ '์๋ก๊ณ ์นจ'ํ๋ฉด ์๋ชป๋ URL์ ์ ๋ณด๋ฅผ ํ์ธ๊ฐ๋ฅ
SB Admin02์ CSS ๊ฒฝ๋ก๋ http://localhost:8080/vendor/bootstrap/css/bootstrap.min.css
์ด๋ฏ๋ก
ํ์ฌ ํ๋ก์ ํธ์์๋ ์ ๋๋ก ์๋น์ค๋ ์ ์์
com.crow.config.WebConfig ํด๋์ค์๋ CSS๋ JS ํ์ผ๊ณผ ๊ฐ์ด ์ ์ ์ธ(static) ์์๋ค์ ๊ฒฝ๋ก๋ฅผ
resources
๋ผ๋ ๊ฒฝ๋ก๋ก ์ง์ ํ๊ณ ์์
<resources mapping="/resources/**" location="/resources/" />
SB Admin2์ ์์ถ์ ํ์ด๋ ๋ชจ๋ ํด๋๋ฅผ ํ๋ก์ ํธ ๋ด webapp ๋ฐ์ resources ํด๋๋ก ๋ณต์ฌํด ๋ฃ์ด์ค
(resources๋ผ๋ ํด๋๊ฐ ์ฌ๋ฌ๊ฐ ์กด์ฌํ๋ฏ๋ก ์ฃผ์ํด์ผํจ WEB-INF๋ผ๋ ๊ฒฝ๋ก๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐพ๋ ๊ฒ์ด ์ข์)
ํ์ผ๋ค์ resources ๊ฒฝ๋ก๋ก ๋ฃ์ด๋ ์์ง์ ํ์ด์ง์์ ๊ฒฝ๋ก๋ฅผ ์์ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒ์ ๋์ผํจ
list.jsp ํ์ผ์์ CSS๋ JS ํ์ผ์ ๊ฒฝ๋ก๋ฅผ /resources
๋ก ์์ํ๋๋ก ์์ ํจ
(๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ Find/Replace๋ฅผ ์ด์ฉํ๋ ๋ฐฉ์์ ํ์ง๋ง bootstrap ๊ฐํธํ ์ฌ์ดํธ ์์ ๋ฐ์ ๋ฒ์ ์์ ๋ถ๊ฐ๋ฅ)
์์ ํ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด์ /board/list
๋ฅผ ํธ์ถํ๋ฉด CSS๊ฐ ์ ์์ ์ผ๋ก ์ ์ฉ๋ ํ๋ฉด์ ๋ณผ ์ ์์
CSS, JS ํ์ผ๋ค์ ๋งํฌ๋ ๋ชจ๋ ํ์ด์ง์์ ์ฌ์ฉ๋ ๊ฒ์ด๋ฏ๋ก ํ๋ฉด์์ ๋์์ธ์ด ๊นจ์ง์ง ์๋ ๊ฒ์ ํ์ธํ ํ์ ๋ค์ ๋ด์ฉ์ ์งํํ๋๋ก ํด์ผํจ
JSP๋ฅผ ์์ฑํ ๋๋ง๋ค ๋ง์ ์์ HTML ์ฝ๋๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด JSP includes ์ง์์๋ฅผ ํ์ฉํด์
ํ์ด์ง ์ ์ ์์ ํ์ํ ๋ด์ฉ๋ง์ ์์ฑํ ์ ์๊ฒ ์ฌ์ ์ ์์
์ ํด์ผ ํจ
ํ์ฌ ํ๋ก์ ํธ views ํด๋์ includes ํด๋๋ฅผ ์์ฑํ๊ณ , header.jsp์ footer.jsp๋ฅผ ์ ์ธํจ
header.jsp๋ ํ์ด์ง์์ ํต์ฌ์ ์ธ ๋ถ๋ถ์ด ์๋ ์์ญ ์ค์๋ ์์ชฝ์ HTML ๋ด์ฉ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ์์ฑํจ
๋ธ๋ผ์ฐ์ ์์ ๊ฒ์ฌ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ํน์ ํ <div>
๊ฐ ์ด๋ค ๋ถ๋ถ์ ์๋ฏธํ๋์ง ํ์ธํ ์ ์์
SB Admin2๋ <div>
๋ค ์ค์์ id ์์ฑ๊ฐ์ด page-wrapper
๋ถํฐ๊ฐ ํต์ฌ์ ์ธ ํ์ด์ง์ ๋ด์ฉ์
list.jsp ํ์ผ์ ์ฒ์ ๋ถ๋ถ์์ <div id='page-wrapper'>
๋ผ์ธ๊น์ง ์๋ผ์ header.jsp์ ๋ด์ฉ์ผ๋ก ์ฒ๋ฆฌํจ
(์ฝ 378๋ผ์ธ ๊ทผ์ฒ)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="../includes/header.jsp" %>
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Tables</h1>
...์๋ต...
header.jsp <%@include ...
๋ก ์ฒ๋ฆฌํ ํ์๋ ๋ค์ ๋ธ๋ผ์ฐ์ ์์ ํ๋ฉด์ด ๊นจ์ง์ง ์๋์ง ํ์ธํด์ผ ํจ