2014-04-21 9 views
0

클래스 및 함수를 포함하는 비표준 방식을 사용하는 이전 JSP 시스템을 지원합니다. 클래스 파일을 작성하고 jar 파일로 컴파일하는 대신 클래스는 "하위"JSP로 직접 작성된 다음 "상위"JSP에 포함됩니다.JSP가 다른 JSP의 클래스 및 함수를 인식하지 못함

제가 가지고있는 문제는 IDE가 include 문에서 파일을 인식하더라도 JDeveloper에서 MyClass 및 ChildFunction()이 정의되지 않았다는 오류 메시지가 나타납니다. 2 개의 JSP를 서버에 놓으면 페이지가로드되어 예상 된 결과와 함께 실행됩니다. 결과적으로 실제 코드를 작업 할 때 백 가지 이상의 구문 오류가있는 1000 개 이상의 JSP가 있으므로 서버에 놓을 때까지 코드가 구문 상 올바른지 확인할 수 없습니다. 클래스 로더 오류 또는 잘못된 구성과 같은 간단한 (바보 같은) 무언가를 기대하지만, 나는 그것을 고칠 수 없었다. 어떤 도움이라도 대단히 감사합니다.

나는 아래 두 개의 스텁 파일을 포함 시켰습니다

:

MyClass.jsp 파일 :

<%@ page import="java.lang.*,java.net.*,java.text.*,javax.servlet.http.*" %> 
<%! 
class MyClass() { 
    public MyClass() { super(); } 
    private int it=0; 
    public void setIt (int it) {this.it = it; } 
    public int getIt() { return it; } 
} 
public String ChildFunction(){ 
    return " ChildFunction "; 
} 
%> 

Parent.jsp의 FILE : 누군가가 나에 코드를 넣을 것을 제안하기 전에

<%@ page contentType="text/html;charset=WINDOWS-1252"%> 
<%@ page language="java" session="true" import="java.lang.*,java.net.*,java.text.*,javax.servlet.http.*" %> 
<HTML> 
<HEAD><TITLE>Test page</TITLE></HEAD> 
<BODY> 
<%@ include file="./MyClass.jsp" %> 
<br>Result of calling Child Function:<% out.print(ChildFunction()); %> 
<br>Result of declaring MyClass: 
<% 
MyClass mc = new MyClass(); 
out.print(mc.getIt()); 
%> 
</BODY> 
</HTML> 

클래스 파일을 만들고 EAR/WAR 파일을 사용하여 배포하는 것은 옵션이 아닙니다. 이것은 내가 지원해야 할 기존 레거시 시스템입니다.

답변

0

다른 곳에서 사용하려고하는 JSP에 함수 또는 하위 클래스를 넣지 마십시오. (결국 그것은 그들이 특정 JSP에 따라 클래스입니다.) 매우 나쁜 디자인입니다. 실제 .java 파일에 클래스를 생성하고 컴파일 한 다음 JSP에서 호출합니다. 심지어 그게 특별히 권장되지는 않지만 (How to avoid Java code in JSP files 참고), 더 좋고 훨씬 좋습니다.

파일 시스템에 액세스 할 수 있으면 EAR/WAR에 클래스를 넣을 필요가 없습니다. 그들을 그냥 webapps/{theApp}/WEB-INF/classes/...

당신도 모두 IDE를 생략 할 수 있습니다 아래의 파일 시스템에 넣어, 그리고 webapps/{theApp}/WEB-INF/classes/...는 그 디렉토리로 콘솔, CD를 열고 아래 단지 모든 된 .java 파일을 저장하고 javac. 클래스 파일을 항아리에 넣을 필요는 없습니다.

물론 나중에 응용 프로그램을 다시 시작해야합니다.