2011-01-15 42 views
9

Tôi mới sử dụng jsp và gặp phải một số sự cố. Ban đầu, tệp jsp và các lớp java liên quan đã được xây dựng và thử nghiệm tốt trên máy chủ Tomcat thử nghiệm. Bây giờ, họ đã được chuyển sang một máy chủ khác của những gì tôi tin là thiết lập tương tự (ngoại trừ bây giờ là linux thay vì cửa sổ). Nhưng khi trang jsp được truy cập, mã nguồn được hiển thị thay vì thực thi jsp. Tôi đã googled một lúc nhưng không nhận được thành công.JSP hiển thị mã nguồn thay vì thực hiện

Đây là mã của file jsp Tôi đang thử nghiệm:

<HTML> 
<BODY> 
Hello! The time is now <%= new java.util.Date() %> 
</BODY> 
</HTML> 

Và đây là những gì tôi nhìn thấy trong trình duyệt của tôi khi điều hướng đến trang:

Hello! The time is now <%= new java.util.Date() %> 

Các nguồn của trang là mã chính xác được nhập vào tệp mẫu:

<HTML> 
<BODY> 
Hello! The time is now <%= new java.util.Date() %> 
</BODY> 
</HTML> 

Máy chủ có vẻ đang hoạt động. Dưới đây là là tiêu đề phản ứng tôi thu được từ Firebug:

Date Sat, 15 Jan 2011 20:53:24 GMT 
Server Apache/2.2.3 (CentOS) 
Last-Modified Sat, 15 Jan 2011 02:20:18 GMT 
Etag "b385d8-55-499d931205c80" 
Accept-Ranges bytes 
Content-Length 85 
Content-Type text/html; charset=UTF-8 

Tôi đã nghĩ rằng this page có thể giải quyết vấn đề vì không có tham chiếu đến tập tin jsp Tôi đã sử dụng hoặc thậm chí các đoạn sau đây trong tập tin web.xml của tôi trong thư mục WEB-INF:

<servlet> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    <init-param> 
     <param-name>logVerbosityLevel</param-name> 
     <param-value>WARNING</param-value> 
    </init-param> 
    <load-on-startup>3</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 

Tôi đã thử chèn các dòng này và khởi động lại Tomcat nhưng không thành công. Bất kỳ ý tưởng?

+1

Bạn có chắc chắn yêu cầu thực sự đến được Tomcat không? Có máy chủ web khác ở phía trước không? Làm thế nào về servlets? Họ có làm việc không? – Thilo

+0

Chính xác bạn có gì trong JSP và chính xác bạn đang thấy gì trong trình duyệt? Chính xác thì nguồn HTML là gì? (nhấp chuột phải trong trình duyệt, chọn * Xem nguồn *) Tôi muốn được biết chính xác ý bạn là gì với "mã nguồn". Thẻ JSP? Thẻ JSTL? EL? Tập lệnh? Hoặc thậm chí là HTML? Bạn không cần phải đăng mã đầy đủ, chỉ cần tệp JSP tối thiểu thể hiện hành vi là đủ. – BalusC

+1

@Thilo: nếu yêu cầu không đạt được Tomcat, anh ta sẽ không thấy bất cứ điều gì từ JSP, hãy để một mình mã nguồn. Tuy nhiên tôi hy vọng rằng OP không phải là không rõ ràng câm để thả các tệp JSP trong một máy chủ web thay vì Tomcat :) – BalusC

Trả lời

2

Từ các tiêu đề phản ứng:

máy chủ Apache/2.2.3 (CentOS)

này không được phục vụ bởi Apache Tomcat, nhưng bởi Apache HTTPD. Bạn đã không triển khai nó cho Tomcat.

+0

"@Thilo: nếu yêu cầu không đạt được Tomcat, anh ta sẽ không thấy bất cứ điều gì từ JSP, hãy để một mình mã nguồn. Tuy nhiên tôi mong đợi rằng OP không phải là không rõ ràng câm để thả các tệp JSP trong một máy chủ web khác thay vì Tomcat :) ":-) – Thilo

1

Xem nơi nó nói "logVerbosityLevel" và "WARNING"? Thay đổi CẢNH BÁO để DEBUG. Bạn cũng có thể tìm thấy tập lệnh catalina.sh của bạn và tìm lệnh java của bạn và đảm bảo cờ -DDEBUG được bao gồm trong các tùy chọn khởi động.

Tìm kiếm nhật ký của bạn với chế độ gỡ lỗi đầy đủ sẽ cho bạn biết nếu có bất kỳ sự cố nào bắt đầu Tomcat trên máy chủ mới. Ví dụ:

Ví dụ: bạn có thể bị thiếu hụt hoặc xung đột phụ thuộc không hiển thị với mức ghi ít thông tin hơn.

Cuối cùng, bạn đã thử một trang thử nghiệm JSP đơn giản chưa?

 <% out.println("Hello"); %> 

Nếu bạn đặt nó trong JSP và thử tải nó, bạn có thấy JSP hoặc đầu ra không?

Bạn đã thử sử dụng cổng Tomcat theo yêu cầu của mình chưa? Thông thường, đây là 8080. Tôi nghĩ một trong những người bình luận đã đề cập rằng đó là một khả năng.

2

Tôi vừa gặp vấn đề tương tự, đó là cách tôi tình cờ gặp bài đăng này. Đối với tôi, hóa ra vấn đề là sự khác biệt giữa CATALINA_HOME và CATALINA_BASE. Tôi nghĩ rất nhiều người không nhận ra đây là hai nơi khác nhau. Trên Ubuntu của tôi, CATALINA_HOME nằm trong/usr/share/tomcat6 nhưng CATALINA_BASE nằm trong/var/lib/tomcat6.Điều này quan trọng bởi vì bạn cần phải đặt các tệp jsp của mình trong CATALINA_BASE. Vì vậy, trong thực tế, tôi sẽ nói rằng Tomcat đã không tìm thấy mã của bạn, mặc dù trình duyệt của bạn tìm thấy các tập tin và vui vẻ hiển thị nó cho bạn vì nó làm các tập tin văn bản khác.

Hy vọng điều này sẽ giúp người khác đến đây với cùng một vấn đề - đó là nỗ lực đầu tiên của tôi để đăng câu trả lời trên StackOverflow.

Các vấn đề liên quan