<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 파일을 엽니다.
Windows > Show veiw > Navigator로 파일을 보면 .settings 파일을 발견할 수 있습니다.
<?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>
을 아래와 같이 수정합니다.
<?xml version="1.0" encoding="UTF-8"?>
<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로 실행합니다.
실행을 하지만 오류가 나면서 실행이 안 되는 경우가 있을 수 있습니다.
이클립스의 버그로, 수정되기 전의 데이터와 수정된 데이터가 섞여서 실행되기 때문입니다.
이 경우 웹 어플리케이션을 깔끔히 초기화하고 실행하는 것이 좋을 수 있습니다.
- 기존 tomcat을 종료합니다.
- 혹시 바뀌지 않았다면 프로젝트를 선택하고, 우측버튼을 눌러서 Maven 메뉴 아래의 update project를 선택한 후 확인하세요.
- Servers view에서 기존 Tomcat Runtime을 삭제
- Project 메뉴의 Clean선택
- 프로젝트 익스플로러에서 Server 삭제
위와 같은 과정을 거친 후 Run on Server로 실행해보세요.
결과가 잘 나오는 것을 확인할 수 있습니다.
지금까지 배웠던 내용 중에서 가장 복잡한 것 같은데요.
다이나믹 웹 모듈을 2.3에서 3.1로 바꾸는 것은 프로젝트가 한번 만들어지면, 그 이후부터는 그 프로젝트가 더 이상 사용되지 않을 때까지 계속 사용되기 때문에 자주 개발자가 해야 할 일은 아닙니다.
그 이후부터는 pom.xml에 원하는 기능을 추가하면서 개발을 진행하면 됩니다.
수고하셨습니다.
생각해보기
- 이클립스에는 Maven이 내장되어 있습니다. 이번 시간엔 이클립스에 내장된 Maven을 이용해 프로젝트를 생성해보았습니다. cmd창이나 터미널에서 maven명령을 수행해서 컴파일하고 실행할 수도 있습니다. 이를 위해선 Maven을 별도로 설치를 해야 합니다. Maven을 설치하고, 콘솔이나 터미널에서 실행할 방법을 찾아보세요.
참고 자료
comment
tomcat 설치 목차보고 그대로 따라하면 그대로 됩니다.
그리고 그동안 많은 유료 강의와 여러 구글링을 많이 해왔지만 web-module 이 무엇인지 그리고 servlet-api 버전과 같이 해줘야 한다는 이러한 중요한? (남들한테는 당연하지만?) 걸 알아서 부끄러우며 앞으로 많이 발전해야 겠습니다 ㅠ
처음 수강했을때 많이 당황했었습니다만 직접해결하려고 노력하니 정말 값진 시간이었습니다! 다만 2강부터 먼저 수강하시고 들으시면 더욱 좋을거 같아요!
여기서 컨테이너는 무엇을 말하는 건가요
순서를 완전 잘못만들어 놓았네요 1.1~1.3 -> 2.1~2.6 -> 1.4~1.5 이렇게 가는게 맞을수도 있겠네요.. 최소 2.3까지는 듣고 다시 와야 할것 같습니다.
강의 관리가 이상해서 그냥 여기서 하차합니다..
TOMCAT 설치에 대한 설명이 빠져있네요
일단 아래의 문제가 발생한 이유는 JSP를 지원해주지 않아서 인 것 같다. 내가 사용하는 이클립스는 Default WAS 로써 Jetty를 사용하는데, 어떤 강의에도 강사님처럼 Tomcat을 설치해서 사용하라는 말이 없어서 나는 Eclipse Default WAS를 사용했지만, JSP를 제공해주지 않아 애먹었다.
Eclipse 내장 Jetty가 JSP를 지원하기 위해서는 JSP 관련 라이브러리 의존성을 가져와야 했고 추가적으로 WebAppContext 경로 설정 또한 해줘야만 했다.
관련 링크 : https://stackoverflow.com/questions/4235082/configuring-jetty-jsp-support-in-embedded-mode-in-maven-project
추가적으로 강사님처럼, Tomcat v8.5로 위의 프로젝트를 실행하니 정상적으로 jsp 기능을 잘 지원해주었다.
다른사람이 혹여 나처럼 Tomcat을 사용하지 않고 Eclipse의 내장 WAS로써 위 실습을 진행해 많은 시간을 소모하지 않길 바라면서.. 글을 남긴다. (하지만, 절대 가치없는 시간은 아니고 매우 값진 시간이었다.)
index.jsp가 보이지 않고 왜 다음과 같은 에러만 보일까요..? 아시는 분 있다면 공유 부탁드립니다~
No JSP support. Check that JSP jars are in lib/jsp and that the JSP option has been specified to start.jar
jstl02.jsp란건 다른 강의에서 하고있는 웹프로그래밍 풀스택 프로젝트2를 하게되면 알수있습니다.
이게무슨말이냐면 웹프로그래밍 풀스택에 있는 강의를
백엔드 자료들을 수정하나 없이 그대로 재활용하니까 수강생만 진도를 제대로 못나가는 개꼴나는겁니다.
관리를 제대로 안한다는 증거죠
프로퍼티스안 메이븐폴더에 java EE가 없는데 어떡하나요??
cmd 창에서 maven을 실행하기 위해서는, Java를 설치하듯, maven파일을 설치후, 시스템변수와 환경변수에 maven변수를 추가해줍니다. 그후 cmd창에서 mvn -v 명령어로 확인할수있습니다.
jstl02.jsp 가 어디에 있는건가요 ..