2009-10-03 4 views
3

내 app 디렉토리의 루트에 JSP 파일 (/page.jsp)이 있습니다. /WEB-INF/classes/Helper.class에있는이 클래스를 사용하고 싶습니다.JSP 페이지에서 java .class 파일을 참조하는 방법은 무엇입니까?

클래스 이름과 함께 JSP 페이지 가져 오기 구문을 사용해 보았지만 작동하지 않았습니다. 어떻게하면 Helper.class를 참조하여 내 JSP를 사용할 수 있습니까? 패키지/JAR에 클래스를 포함하고 싶지 않습니다.

+0

수입품을 사용할 수 없습니까? –

+0

사용중인 import 문에 붙여 넣을 수 있습니까? –

답변

6

좋아, 내가 그것을 찾을 때까지 나는 알지 못했다. JSP Spec (JSP.11.2 JSP Page Implementation Class)은 친구입니다. 해당 클래스를 기본 패키지에서 옮겨야합니다. JSP 2.0으로

, 이름이 (일명 기본값) 패키지에서 모든 클래스에 를 참조하는 것은 불법입니다. 일부 컨테이너에서 변환 오류가 발생할 수 있습니다. 구체적으로는 이 JDK 1.4 이상인 환경에서 실행됩니다. 그것은 불행한 일이지만, 어쩔 수없이 , 이것은 기존의 JSP 응용 프로그램과의 호환성을 깨뜨릴 것입니다. 익명의 패키지에서 클래스를 가져 오는 유효하지 않습니다 JDK 1.4, 의 그러나 (자세한 내용은 http://java.sun.com/j2se/1.4/compatibility.html#source 참조). 따라서 전달을 위해 호환성을 위해 응용 프로그램은 익명 패키지를 사용하지 말아야합니다 ( ). <jsp:useBean id="now" class="java.util.Date"/>

위의 만드는 :이 제한도

0

WAR의 CLASSPATH에 있어야합니다 (WEB-INF 아래의 패키지 또는 WEB-INF/lib의 JAR). 그것은 단지 기본 Java입니다.

개체는 요청, 페이지, 세션 또는 응용 프로그램 범위에 있어야합니다. 이것은 보통 서블릿이 그곳에 놓았다는 것을 의미합니다. 서블릿과 JSP가 공동 작업을해야만한다.

스크립틀릿 코드를 작성할 수 있지만 JSTL을 사용하는 것이 훨씬 더 좋습니다. Scriptlet-free JSP는 장기적으로 좋은 아이디어입니다. 클래스는 의미 /WEB-INF/classes에 직접을있는 경우

2

은 일반적으로 권장되지 않습니다 기본 패키지를 사용합니다. 그 때문에 가져올 필요가 없습니다. JSP에서 직접 사용할 수 있습니다.

<% 
Helper helper = new Helper(); // use appropriate constructor 
%> 

더 좋은 해결책은 패키지의 일부로 만드는 것입니다. 적절한 하위 폴더 인 /WEB-INF/classes에 입력해야합니다 (예 : /WEB-INF/classes/com/mypackage/Helper.class). 당신은 완전한 이름을 사용하거나 JSP에서 가져올 수 있습니다 :

<% 
com.mypackage.Helper helper = new com.mypackage.Helper(); // use appropriate constructor 
%> 
+2

Scriptlet 코드 - 나는 내 눈을 돌릴 필요가있다 ... 화상한다. – duffymo

+0

Helper의 정적 메서드를 호출하려고하는데 "Helper can not be resolved"오류가 발생합니다. – Sajee

+0

위 오류가 발생하는 코드는 다음과 같습니다. Connection conn = Helper.getDBConnection (url, datasource); – Sajee

0

다음은 <%@ page import="com.*" %> 작동한다.

사용중인 J2EE 컨테이너의 문서를 확인하십시오. J2EE Sun Certified Container를 사용하는 경우 페이지 가져 오기 지시문에 문제가 없어야합니다.

JSP Directives을 참조하십시오.

0

이런 식으로 뭔가를 시도 같은 TLD에서 태그의 클래스 이름 을 지정하는 경우와 같이, 클래스가 참조하는 다른 모든 경우에 적용 Date 인스턴스를 만들고이를 요청 속성 맵 키 now으로 추가합니다. 그런 다음 다른 요청 속성 변수와 마찬가지로 사용할 수 있습니다. 예를 들어, ${now.time}과 같은 el 표현식은 밀리 초 단위로 시간을 인쇄합니다.

따라서 시나리오에서는 <jsp:useBean id="Helper" class="com.your.company.name.Helper"/>을 사용합니다. Helper에 인수 없음 public 생성자가 있는지 확인하십시오.

여기에 추가 정보 http://java.sun.com/products/jsp/tags/11/syntaxref11.fm14.html

관련 문제