2010-06-01 90 views
6

我編寫了一些代碼作爲Java Servlet,現在我正試圖將它轉換爲JSP。我在一個我正在使用的單獨文件中編寫了一個類,我無法弄清楚如何讓JSP文件識別這個類。我想這與導入有關。我居然給班上一個包(package mypackagename;)的名字,我試圖用<%@ page import="mypackagename"%>,但我得到一個錯誤:在JSP文件中導入類

The import "mypackagename" cannot be resolved

+0

的可能重複[如何導入類在JSP?( http://stackoverflow.com/questions/239147/how-do-you-import-classes-in-jsp) – jjnguy 2010-06-01 13:06:21

回答

9

只需導入用同樣的方式,你在一個真正的Java類來完成。即import mypackagename.MyClassNameimport mypackagename.*因此不是import mypackagename只有只有包名。

<%@ page import="mypackagename.MyClassName" %> 

這就是說,你不應該在JSP文件中寫入原始的Java代碼。 Scriptlets被認爲是不好的做法。該代碼屬於真正的Java類。它在Servlet類中的定位非常好。它是什麼,你認爲這是一個「正確」的解決方案,將其全部轉移到視圖方面,並用原始Java代碼混淆模板文本的問題?在一個新問題中詳細闡述它,然後我們可能會提出正確的解決方案。也許你沒有意識到像JSTL這樣的taglibs的存在和威力?

+0

即時通訊不太確定您的意思是由一個jsp文件中的原始java代碼。我的大部分代碼都在要導入的類中,我只是想從JSP文件中的類運行代碼並顯示結果。 – Michoel 2010-06-01 13:19:30

+1

對於原始的Java代碼,我的意思是十多年來不鼓勵* scriptlets *。那些'<% %>'之間的所有Java代碼事物。在您的具體情況下,只需在servlet中運行該代碼,將其存儲爲request屬性並使用JSTL/EL顯示它。 [Here](http://stackoverflow.com/questions/1831053/displaying-multiple-records-by-using-resultset/1832524#1832524)和[here](http://stackoverflow.com/questions/384189/how -do -i-make -a-java-resultset-available-in-my-jsp/2428468#2428468)就是一些例子。 [Here](http://courses.coreservlets.com/Course-Materials/csajsp2.html)是更好的JSP/Servlet教程。 – BalusC 2010-06-01 13:27:43

0

確保您的類是在WEB-INF/classes中的Web應用程序的目錄,並通過包修改包的進口。*

+0

感謝關於。*的提示。即時通訊只是學習Java所以我忘了。我不知道這些文件必須放在WEB-INF/classes中,它們位於src /中。由於某些原因,eclipse不允許我在WEB-INF中創建一個新目錄? (我正在使用谷歌appengine插件) – Michoel 2010-06-01 13:14:10