ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Maven에서 JSTL 사용
    Java 2020. 2. 20. 21:28

     

    이번엔 pom.xml 파일에 JSTL라이브러리를 추가하도록 하겠습니다.

     

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

    JSTL은 Tomcat이 기본으로 제공하지 않기 때문에, 컴파일할 때도 배포할 때도 사용돼야 합니다.

    그래서 scope에 이번엔 provided가 있지 않습니다.

    webapp폴더에 앞에서 작성했던 jstl02.jsp 를 붙여넣기를 하도록 하겠습니다.

    라이브러리가 변경되었으니, 다시 run on server를 합니다.

    실행해도 결과가 아무것도 나오지 않는 것을 확인할 수 있습니다.

    프로젝트 프로퍼티를 선택한 후, Project facets 항목을 보면 다이나믹 웹 모듈의 버전이 2.3입니다.

    다이나믹 웹 모듈의 2.4부터 EL이 기본으로 사용할 수 있도록 설정되기 때문에 2.3일 경우에는 EL표기법의 결과가 출력되지 않습니다.

    앞의 프로젝트처럼 다이나믹 웹 모듈 3.1이 되도록 설정해보도록 하겠습니다.

    먼저 WEB-INF의 web.xml 파일을 열어보도록 하겠습니다.

     

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
    </web-app>

     

    위의 내용을 다음과 같이 수정합니다.

     

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
      <display-name>Archetype Created Web Application</display-name>
    </web-app>

     

     

     

    프로젝트아래의 .settings/org.eclipse.wst.common.project.facet.core.xml 파일을 엽니다.

    이클립스 navigator에서 보면 보입니다.

    (참고출처 : edwith Maven을 이용한 웹 어플리케이션 실습 댓글 id : 0***

    "이클립스 navigator에서 보면 보입니다."

    메뉴Window -> Show View -> Navigator

    )

     

    <?xml version="1.0" encoding="UTF-8"?>
    <faceted-project>
      <fixed facet="wst.jsdt.web"/>
      <installed facet="jst.web" version="2.3"/>
      <installed facet="wst.jsdt.web" version="1.0"/>
      <installed facet="java" version="1.8"/>
    </faceted-project>

     

    을 아래와 같이 수정합니다.

     

    <faceted-project>
      <fixed facet="wst.jsdt.web"/>
      <installed facet="jst.web" version="3.1"/>
      <installed facet="wst.jsdt.web" version="1.0"/>
      <installed facet="java" version="1.8"/>
    </faceted-project>

     

    프로젝트 프로퍼티의 Project facets항목을 보면 다이나믹 웹 모듈이 3.1로 바뀐 것을 볼 수 있습니다.

    이제 jstl02.jsp를 run on server로 실행합니다.

    실행을 하지만 오류가 나면서 실행이 안 되는 경우가 있을 수 있습니다.

    이클립스의 버그로, 수정되기 전의 데이터와 수정된 데이터가 섞여서 실행되기 때문입니다.

    이 경우 웹 어플리케이션을 깔끔히 초기화하고 실행하는 것이 좋을 수 있습니다.

    1. 기존 tomcat을 종료합니다.
    2. 혹시 바뀌지 않았다면 프로젝트를 선택하고, 우측버튼을 눌러서 Maven 메뉴 아래의 update project를 선택한 후 확인하세요.
    3. Servers view에서 기존 Tomcat Runtime을 삭제
    4. Project 메뉴의 Clean선택
    5. 프로젝트 익스플로러에서 Server 삭제

    위와 같은 과정을 거친 후 Run on Server로 실행해보세요.

    결과가 잘 나오는 것을 확인할 수 있습니다.

    지금까지 배웠던 내용 중에서 가장 복잡한 것 같은데요.

    다이나믹 웹 모듈을 2.3에서 3.1로 바꾸는 것은 프로젝트가 한번 만들어지면, 그 이후부터는 그 프로젝트가 더 이상 사용되지 않을 때까지 계속 사용되기 때문에 자주 개발자가 해야 할 일은 아닙니다.

    그 이후부터는 pom.xml에 원하는 기능을 추가하면서 개발을 진행하면 됩니다.

    수고하셨습니다.

     

    출처 : edwith.org

    'Java' 카테고리의 다른 글

    [Java] JVM 구조  (0) 2020.03.05
    [JAVA] Implicit Narrowing Conversion  (0) 2020.02.24
    [JAVA] String -> Date / Date -> String 변환  (0) 2020.02.21
    Maven / Java Web Application 디렉토리 구조  (0) 2020.02.21
    JSP  (0) 2020.02.17

    댓글

Designed by Tistory.