Spring boot๋ JSP ์ฐ๋ํ๋ ๊ฑธ ์ซ์ดํ๋ค.
์๋ ์ซ์ดํ๋ ๊ฑฐ ๊ฐ๋ค! ใ ใทใ ใท ๐คฏ
๊ณต์ ๋ฌธ์์๋ JSP ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ์ง ์์ผ๋ฉฐ ๋ค๋ฅธ ํ ํ๋ฆฟ ์์ง์ ์ฐ๋ผ๊ณ ๋์ ์๋ค.
FreeMarker, Groovy, Thymeleaf, Mustache๋ฅผ ์ถ์ฒํ๊ณ ์๋ค.
JSP๋ JAR ํจํค์ง์ ํ ์ ์๊ณ (war๋ก ํจํค์ง ํด์ผ ํจ) ์์กด์ฑ ๋ฌธ์ ๋ ๋ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ๋ค.
๊ธฐ์กด์ Spring Framwork์์๋ ์น ์ ํ๋ฆฌ์ผ์ ์ ๊ตฌ์ฑ ํ ๋ View ์์ญ์ JSP๋ฅผ ์ฌ์ฉํ๋ค.
ํ์ง๋ง Spring boot๋ฅผ ์ฌ์ฉํ๋ ์ง๊ธ.. JSP๋ฅผ.. ๐ฅ๐คฃ๐ ๋๋ถ๋ถ์ Spring boot ์์ ๋ค๋ ์์ ์ถ์ฒ ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ค.
์ด๊ฑด ์ด์ฉ ์ ์์ด JSP๋ฅผ ์จ์ผ ํ๋ ๋์๊ฒ ๋ฐ์น๋ ํฌ์คํ ์ด๋ค..
์์ใ ใ ใ ใ ์ ...
1. Dependencies ์ถ๊ฐ
์คํ๋ง ๋ถํธ๋ ๋ด์ฅ ํฐ์ผ์ ๊ฐ์ง๊ณ ์์ง๋ง ์ด ๋ด์ฅ ํฐ์ผ ์์ JSP๋ฅผ ๊ตฌ๋์ํค๋ ์น๊ตฌ๋ ํฌํจํ์ง ์๋๋ค.
(์ถ์ฒ ์ ํ๋๊น ๋น์ฐํ ๊ฑธ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค.)
์ฌ์ฉํ๊ณ ์ถ์ ์ฐ๋ฆฌ๊ฐ ์ง์ ์์กด์ฑ์ ์ถ๊ฐํด์ค์ผํ๋ค.
๋ค์ ๋๊ฐ์ ์์กด์ฑ์ dependencies ์์ ์ถ๊ฐํด์ฃผ์
implementation 'javax.servlet:jstl'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
Could not find javax.servlet.jsp.jstl:jstl:1.2.
MVN REPOSITORY์์ jstl๋ฅผ ๊ฒ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์กด์ฑ ์ ๋ณด๊ฐ ๋์จ๋ค.
implementation group: 'javax.servlet.jsp.jstl', name: 'jstl', version: '1.2'
์ด๊ฑธ ์ถ๊ฐํ๋ฉด ์๋ฌ๊ฐ ์๊ธฐ๋๋ฐ group์ ์ฃผ์(?)๊ฐ ์๋ชป๋์ด์ ๊ทธ๋ฐ ๊ฒ ๊ฐ๋ค.
โ solved
implementation group: 'javax.servlet', name: 'jstl', version: '1.2' ์ผ๋ก ์์ ํด์ ์ฌ์ฉํ๋ฉด ํด๊ฒฐ๋๋ค.
์ฐ๋๋ ์๋ฌ๋ฅผ ํด๊ฒฐํ๊ณ ๋ ๋ค version ์ ๋ณด๋ฅผ ์์๊ณ group๊ณผ name์ ํฉ์ณ์ ์ ๋ฆฌํด์คฌ๋ค!
๋ฑํ ์ง์ ํ ๋ฒ์ ์ด ์๋ค๋ฉด ์ ์ฝ๋๋ธ๋ญ ์ฒ๋ผ ์์ฑํ๋๊ฒ ๊น๋ํด๋ณด์ธ๋ค!
24.03.21 ์ถ๊ฐ
3.0 ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ์์ ์ฌ์ฉ๋๋ ์์กด์ฑ ์ฃผ์ ์ด๋, ๋ง์ฝ spring boot 3.0 ๋ฒ์ ์ด์์ด๋ผ๋ฉด ์์ ์ฝ๋ ๋์ ์ ์๋ ์์กด์ฑ์ ์ถ๊ฐํ์!
implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api'
implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
2. application.yml ํ์ผ์ ๋ด์ฉ ์ถ๊ฐ
prefix๋ก webapp ํ๋จ์ ์์น๋ฅผ ์ง์ ํด์ฃผ๊ณ suffix๋ก ํ์ผ ํ์ฅ์๋ฅผ ์ ์ด์ค๋ค.
static-path-pattern ๋ก ์ฐธ๊ณ ํ ์ ์ resource ์์น๋ฅผ ์ก์์ค๋ค. ( css, js, img ํ์ผ ๋ถ๋ฆฌ๋ฅผ ์ํ ์์ )
๋ฌด์จ ๋ง์ธ๊ฐ ์ถ๋ค๋ฉด ์๋ 3๋ฒ์ ํด๋ ๊ตฌ์กฐ์ ๋น๊ตํ๋ฉฐ ๋ณด๊ธธ๋ฐ๋๋ค.
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
static-path-pattern: /resources/**
3. ํด๋ ๊ฒฝ๋ก ์ค์ ๋ฐ ํด๋น ๊ฒฝ๋ก์ .jsp ํ์ผ ์ถ๊ฐ
application.yml์ ์ค์ ํ ๊ฒฝ๋ก๋๋ก ํด๋๋ฅผ ์์ฑํ๊ณ .jsp ํ์ผ์ ๋ฃ์ด์ค๋ค.
๋ด์ฉ์ด ๋ง์ ํ์ํ ๋ถ๋ถ์ด์ธ์๋ ๋ชจ์์ดํฌ๋ฅผ ํ๋ค.
๋ณด๋ค์ถ์ด src/main/webapp/WEB-INF/views/.jsp ๊ฐ ์์นํ๊ณ ์๋ค.
prefix ์ด๋ฆ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ฒ ์ง๋ง ์ด์จ๋ prefix๋ก ์ค์ ํ path๋ src/main/webapp ์์ ๋ค์ด๊ฐ ์์ด์ผ ํ๋ค๋ ๊ฑธ ์ฃผ์ํ์.
css ์ img, js ๋๋ ํ ๋ฆฌ๋ resources/static ์๋์ ์๋ค.
์ฌ์ฉํ ๋๋ ๊ฒฝ๋ก๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
<%-- CSS --%>
<link rel="stylesheet" type="text/css" href="/resources/css/ํ์ผ๋ช
.css">
<%-- img --%>
<img src="/resources/img/ํ์ผ๋ช
.jpg" alt="">
<%-- javascript --%>
<script src="/resources/js/ํ์ผ๋ช
.js" type="text/javascript"></script>
application.yml ํ์ผ์ ๋ด์ฉ์ ๋ค๋ฅธ ์ค์ ๋ถ๋ถ์ด ์์ด sping์ mvc ์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ ์ข ์๋๋ฐ ์ ๊ฒฝ์ฐ์ง๋ง๊ณ ์ 2๋ฒ์ฒ๋ผ ์ฝ๋ฉํ๋ฉด ๋๋ค.
์ฌ๊ธฐ๊น์ง ํ๋ค๋ฉด ์ค์ ๋ ๐คฉ!
์ฌ์ฉ์ ๊ทธ๋ฅ view ํ์ด์ง ๋ถ๋ฅด๋ฏ์ด ํ๋ฉด ๋๋๋ฐ.. ํ์.. ํน์๋ ์ถ์ด ๋ถ๋ถ ์ฝ๋๋ฅผ ์ฒจ๋ถํ๋ค.
// ํด๋์ค๋ช
.java
@Controller
public class ํด๋์ค๋ช
{
@GetMapping("/URL์ฃผ์")
public String ํจ์์ด๋ฆ(){
return "JSPํ์ผ์ด๋ฆ";
}
}
๋ ์ ์ด๋ณด๊ธฐ..
๋ถ๋ช ์ค์ ์ ๋ค ํ๋๋ฐ ์๋์ ๊ฐ์ ์๋ฌ๋ฅผ ๋์๋ค.
ํด๊ฒฐํ๊ณ ๋ ๋ค๋ผ ์ธํฐ๋ท์ ์๋ ์๋ฌ๋ฅผ ๊ฐ์ ธ์๋ค.
~~ ResourceHttpRequestHandler : Path with "WEB-INF" or "META-INF": ๋ผ๋ ์๋ฌ๊ฐ ๋จ๋ฉด์ ์ ์ํ ๋ธ๋ผ์ฐ์ ํ์ด์ง์๋ Whitelabel Error Page๊ฐ ๋ด๋ค.
โ solved
๋ฐ๋ก ์์ ํ ๊ฒ ์์๊ณ ๊ทธ๋ฅ ๊ฐ๋ฐ ํด์ ๊ป๋ค๊ฐ ๋ค์ ์ผ์ ์คํํ๋๊น ๊ณ ์ณ์ก๋ค.
Tip.
ํฌ์คํ ์์ชฝ์ ์ฝ์๋ค๋ฉด JSP๋ฅผ ๋ฐฐํฌํ๋ ค๋ฉด .war๋ก ๋ง๋ค์ด์ผํ๋ค๋ ๊ฑธ ์๊ฒ๋๋ค.
๊ทธ๋ผ .jar ํ์ผ๋ก ์์ฑ ํ ๊ฒฝ์ฐ ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ์ด ์๋๋? ๋ผ๊ณ ๋ฌผ์ผ๋ฉด ํด๊ฒฐ์ด๋๊ธดํ๋ค.
๊ทธ๋ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ๋ซ์๋ค๊ฐ ๋ค์ ์ด์์ ๋ ๋ ์ธ์์ ๋ชปํ๋ค.
๊ทธ๋ฆฌ๊ณ ..๋ง์ฝ ๋์ค์ ๋ฐฐํฌ๋ฅผ ํ๋ ค๊ณ ํ๋ฉด...
ใ -ใ ๊ทธ๋ฅ war ํจํค์ง์ผ๋ก ๋ง๋ค์.
Thanks for ๐
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ solved * [Spring] Cannot resolve taglib with uri http://java.sun.com/jsp/jstl/core (2) | 2024.04.18 |
---|---|
โ solved * Incorrect string value: '\xEA\xB9\x80\xEC\xB1\x84.. (0) | 2021.06.17 |