스프링부트에서 예전처럼 jstl을 사용하기 위해 pom.xml 파일에 dependency를 설정합니다.

 

               <dependency>
                       <groupId>javax.servlet</groupId>
                       <artifactId>jstl</artifactId>
                       <version>1.2</version>
               </dependency>

 

이게 기존에 사용하던 jstl 내용인데 Spring Boot 3.0부터는 오류가 발생 합니다.

 

웹 브라우저에서는 [Whitelabel Error Page]와 함께 하단에 status=500 오류가 나타납니다.

 

 

 

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Feb 15 09:19:28 KST 2024
There was an unexpected error (type=Internal Server Error, status=500).
 

 

 

서버 로그에서는 Servlet.service() for servlet [jsp] threw exception 오류가 발생합니다.

 

 

 

2024-02-15T09:19:27.884+09:00  INFO ---[nio-8080-exec-1]o.a.c.c.C.[Tomcat].[localhost].[/]      : Initializing Spring DispatcherServlet 'dispatcherServlet'

2024-02-15T09:19:27.884+09:00  INFO ---[nio-8080-exec-1]o.s.web.servlet.DispatcherServlet       : Initializing Servlet 'dispatcherServlet'

2024-02-15T09:19:27.886+09:00  INFO ---[nio-8080-exec-1]o.s.web.servlet.DispatcherServlet       : Completed initialization in 2 ms

2024-02-15T09:19:28.149+09:00 ERROR ---[nio-8080-exec-1]o.a.c.c.C.[.[localhost].[/].[jsp]       : Servlet.service() for servlet [jsp] threw exception

 

java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.TagLibraryValidator

        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]

        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]

        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]

        at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]

        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) ~[na:na]

 

 

지금까지 잘 사용하던 jstl dependency라 잘못 적용한 내용은 없지만 Spring Boot 버전이 맞지 않아 발생하는 오류입니다.

 

기존 jstl 1.2 설정은 Spring Boot 3.0부터 지원을 하지 않으므로 가능하면 다른 해결방법을 찾기 위해 노력하지 말고 다른 dependency를 설정해 주면 됩니다.

 

 

               <dependency>

                       <groupId>jakarta.servlet</groupId>

                       <artifactId>jakarta.servlet-api</artifactId>

                       <version>6.0.0</version>

                       <scope>provided</scope>

               </dependency>

              

               <dependency>

                       <groupId>jakarta.servlet.jsp.jstl</groupId>

                       <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>

                       <version>3.0.0</version>

               </dependency>

                             

               <dependency>

                       <groupId>org.glassfish.web</groupId>

                       <artifactId>jakarta.servlet.jsp.jstl</artifactId>

                       <version>3.0.1</version>

               </dependency>

 

 

이렇게 수정된 내용으로 pom.xml에 추가를 하고 예전처럼 Controller를 작성해서

 

@Controller

public class TestController {

 

        @RequestMapping("/test/cal")

        public String cal() throws Exception {

               return "test/cal";

        }

}

 

 

실행을 하면 아무런 일 없이 cal.jsp를 호출하고 결과를 볼 수 있습니다.

 

 

- copy coding -

 


JQueryBootStrap을 제작사 홈페이지에서 다운로드 받아 추가하는 방법 이외에 Mavendependencyscript만 추가하여 주면 프로젝트에 추가를 할 수 있습니다스크립트는 일반 예제에서 복사해 와도 되지만 프로젝트 별로 사용할 버전을 선택 해야 하기 때문에 그냥 복사하기 보다는 공신력이 있는 사이트를 이용해서 참조를 하는것이 좋습니다여기서 2곳의 사이트를 소개합니다.

 

https://mvnrepository.com/


mvnrepository.com에서는 라이브러리를 검색을 통하여 찾을 수 있습니다


maven jquery bootstrap


귀찮기는 하지만 검색을 하면 버전 별로 정보가 리스트 되고 리스트에서 원하는 버전을 선택 하면


maven jquery bootstrap


스크립트를 복사해올 수 있습니다. Gradle을 클릭 하면 Gradle용 스크립트가 나옵니다.

 


https://www.webjars.org/

 

webjars.org에서는 첫 화면에 자주 사용하는 라이브러리가 리스트 되어 있고 최신 버전으로 스크립트를 얻을 수 있습니다.


maven jquery bootstrap


만약 최신 버전이 아닌 예전 버전이 필요하다면 콤보 박스를 클릭하면 해당 라이브러지의 버전 정보가 리스트 되고 원하는 버전을 선택하여 


maven jquery bootstrap


상단 Build Tool:에 있는 Maven 버튼을 선택하면 스크립트를 얻을 수 있습니다.

 

복사한 스크립트는 pom.xml에 추가를 해줍니다.


                <dependency>

                   <groupId>org.webjars</groupId>

                   <artifactId>jquery</artifactId>

                   <version>3.4.1</version>

               </dependency>

               <dependency>

                   <groupId>org.webjars</groupId>

                   <artifactId>bootstrap</artifactId>

                   <version>4.4.1</version>

               </dependency>


그리고 Maven UpdateMaven install을 하면 추가된 라이브러리를 jsp에 사용할 수 있게 됩니다.

 

js 파일 위치


추가한 라이브러리를 jsp에서 사용하기 위한 path는 어떻게 하면 알 수 있을까요추가된 라이브러리의 .jar 파일을 확장하면 정확한 js 파일 위치를 찾을 수 있습니다.


maven jquery bootstrap


이렇게 찾은 위치를 script에 반영하면 됩니다.

<script src="/webjars/jquery/3.4.1/jquery.min.js"></script>

 

bootstrap도 동일한 방법으로 위치를 확인 합니다.


maven jquery bootstrap


그리고 스크립트에 반영 합니다. bootstrap은 기본 제공 css를 사용하려면 cssjs를 모두 반영합니다.

<script src="/webjars/bootstrap/4.4.1/js/bootstrap.min.js"></script>

<link rel="stylesheet" href="/webjars/bootstrap/4.4.1/css/bootstrap.min.css">

 

사용 예

 

간단하게 JSP파일을 생성해서 잘 반영이 되었는지 사용을 해 봅니다.


 <%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title>Insert title here</title>

 

<link rel="stylesheet" href="/webjars/bootstrap/4.4.1/css/bootstrap.min.css">

<script src="/webjars/jquery/3.4.1/jquery.min.js"></script>

<script src="/webjars/popper.js/1.16.0/umd/popper.min.js"></script>

<script src="/webjars/bootstrap/4.4.1/js/bootstrap.min.js"></script>

 

</head>

<body>

 

<div class="container">

 

<table class="table table-hover">

  <thead class="thead-dark">

    <tr>

      <th>codeId</th>

      <th>code</th>

      <th>codeNm</th>

      <th>codeDc</th>

    </tr>

  </thead>

  <tbody>

    <tr>

        <td>COM001</td>

        <td>REGC01</td>

        <td>단일 게시판 이용등록</td>

        <td>단일 게시판 이용등록</td>

        </tr>

    <tr>

        <td>COM001</td>

        <td>REGC02</td>

        <td>커뮤니티 등록</td>

        <td>커뮤니티 등록</td>

    </tr>

    <tr>

        <td>COM001</td>

        <td>REGC03</td>

        <td>동호회 등록</td>

        <td>동호회 등록</td>

    </tr>

    <tr>

        <td>COM001</td>

        <td>REGC04</td>

        <td>명함등록</td>

        <td>명함등록</td>

    </tr>          

  </tbody>

 

</table>

  

</div>

</body>

</html>


maven jquery bootstrap


잘 나오는 군요.  bootstrap을 사용하면 디자인을 없이도 어느 정도의 퀄리티 있는 사이트 제작이 가능 합니다.


- copy coding -


1

+ Recent posts