JSTL 라이브러리가 없거나 구버전 사용시 발생함.
build.gradle 에 추가


// JSTL
implementation('javax.servlet:jstl:1.2')
implementation('org.apache.tomcat.embed:tomcat-embed-jasper:10.0.14')

 

Posted by 철냄비짱
,

JSP의 위치 

src/main/webapp/WEB-INF/jsp

 

기존 SpringBoot는 src/main/resources/teamplates에 타임리프가 들어가면 간단하게 조회된다.

 

그렇다면 JSP는 위치가 다른데 어떻게?

 

1. gradle, maven이면 디펜던시를 추가해야한다.

 

gradle의 경우

compile("javax.servlet:jstl")

compile("org.apache.tomcat.embed:tomcat-embed-jasper")

- 필요하다면 버전을 추가한다, 필자의 경우 springboot 플러그인으로 알아서 버전을 찾아준다.

 

maven의 경우

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jstl</artifactId>

</dependency>

<dependency>

<groupId>org.apache.tomcat.embed</groupId>

<artifactId>tomcat-embed-jasper</artifactId>

</dependency>

- maven도 마찬가지로 버전이 필요하면 추가한다.

 

 

 

2. 자바 설정 혹은 application.properties에 경로를 지정한다.

@Configuration

public class SpringConfig extends WebMvcConfigurerAdapter {

@Bean

public ViewResolver getViewResolver() {

InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();

viewResolver.setPrefix("/WEB-INF/jsp/");

viewResolver.setSuffix(".jsp");

return viewResolver;

}

}

 

혹은

 

spring.mvc.view.prefix: /WEB-INF/jsp/

spring.mvc.view.suffix: .jsp

 

 

 

참고)

 

시작점 코드(com.mysample.root)

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

@SpringBootApplication에는 

@EnableAutoConfiguration

@ComponentScan이 포함되어 자동으로 하위  package 경로(com.mysample.root이하)는 자동으로 읽는다.

 

출처: https://seongtak-yoon.tistory.com/23 [테이키스토리]

Posted by 철냄비짱
,

============================= 발췌 부분 시작 ======================================
JSP 2.0의 el( ${} )과 jstl(c, fmt, fn)을 쓰다보면 이렇게 편할수 있구나 하고 느꼇는데...
뭔가 부족한게 있어서 fn관련 Soruce를 보게 되었는데..
헉.... fn.tld를 보면 <function>이라는 tag에 class명과 호출 방식으로 선언되어 있고
Classs를 보면 일반 Static function을 바로 불러 쓰고 있었습니다.
다음은 fn.tld의 예 인데.. 너무 단순하지요...
taglib를 만든 다기 보다는 taglib에 기존 Class 함수를 정의만 해두면 되니까요.
예제
------------------- [mi-html-util.tld]----------------
<function>
<description>
New line to br tag
</description>
<name>nl2br</name>
<function-class>
javacross.util.HTMLUtil
</function-class>
<function-signature>
java.lang.String nl2br(java.lang.String)
</function-signature>
<example>
${mhtml:nl2br(String txt)}
</example>
</function>
---------------- HTMLUtil.java --------------
package javacross.util;
public class HTMLUtil {
static final RE reg_NL = new RE("(\015\012)|(\015)|(\012)");
public static String nl2br(String txt){
if (txt == null) {
return null;
} else {
return reg_NL.subst(txt,"<br />" );
}
}
public static String null2nbsp(String txt){
if (txt == null) {
return "&nbsp;";
} else {
return txt;
}
}
}
------------------- test.jsp ----------------------
<%@ page language="java" contentType="text/html; charset=MS949" %>
<%@ taglib prefix="mhtml" uri="/WEB-INF/tld/mi-html-util.tld" %>
<table>
<tr>
<th>테스트 해보기</th>
</tr>
<tr>
<td>${mhtml:nl2br(course.first_remark)}</td>
</tr>
</table>
============================= 발췌 부분 끝 ========================================

출처 : http://haruma95.blog.me/80009565986
Posted by 철냄비짱
,