設置 Mac OSX 10.6.8,Apache Tomcat 6.0.16,Java1.6.0_29,Eclipse IDE Indigo。在JSP中調用Java方法
我問過類似的問題在此之前,在How to execute and include a Java API from a Web App project但成立以來在改變,我現在在WebAp Java代碼
我試圖從一個JSP頁面和返回調用Java方法結果。我看了很多帖子,但恐怕我缺乏兩種語言的使用經驗是主要問題。
我有一個JSP WebAp,它搜索XML數據庫並將內容返回給用戶。我被要求集成額外的java代碼來搜索預定義的網站並返回內容。
我有類似的代碼周圍發揮到了下面,但我想我在尋找別的東西
<%@ include file="/Applications/Tomcat/apache-tomcat-6.0.16/webapps/myWebApp/program.java" %>
誰能給我什麼,我正在尋找一個更好的主意嗎?
你也知道如果我必須在WebAp中編輯其他任何東西來連接這兩個文件嗎? WebINF文件夾中的類文件?
任何幫助是非常讚賞
Deepend
package sliceClient;
import java.util.List;
public class Run {
@Inject
private SliceSearcher sliceSearcher;
@Inject
private SliceCreator sliceCreator;
/**
* @param args
*/
public static void main(String[] args) {
Injector injector = Guice.createInjector(new GuiceInjector());
Run r = injector.getInstance(Run.class);
r.runSliceConsumer();
}
private void setSlicepediaProductionMode(boolean productionMode){
sliceSearcher.setProductionMode(productionMode);
sliceCreator.setProductionMode(productionMode);
}
public void runSliceConsumer() {
System.out.println("Starting Slice Consumer");
//Remove this line if the real slicepedia server is to be used
setSlicepediaProductionMode(true);
List<SliceHit> sliceHits = searchForSlices();
if (sliceHits == null) {
System.err.println("Timeout occurred while fetching slices");
return;
}
if (!sliceHits.isEmpty()) {
System.out.println("Found some slices Yuhuuuu ! :-) ");
String sliceContent = createSlices(sliceHits);
System.out.println("Slice content:");
System.out.println(sliceContent);
} else {
System.out.println("No Slices were found for this query");
}
System.out.println("Slice Consumer stopped activity");
}
private String createSlices(List<SliceHit> sliceHits) {
sliceCreator.setSliceHits(sliceHits);
if (sliceCreator.run()) {
SlicePackage slicePackage = sliceCreator.getNextSlicePackage();
return slicePackage.getSliceContent();
} else {
return sliceCreator.getErrorMessage();
}
}
private List<SliceHit> searchForSlices() {
SlicepediaQuery sliceQuery = new SlicepediaQuery();
sliceQuery.paramANNOTATION_READING_DIFFICULTY(new Double(30), "<");
//Works
// String dbConcept = "http://dbpedia.org/resource/human_rights";
// sliceQuery.paramANNOTATION_CONCEPT_FEATURE_HAS_DBPEDIA(dbConcept,0.5, ">");
// sliceQuery.paramHAS_NBR_OF_PARAGRAPHS(1,">");
// sliceQuery.paramIsAnOpenSlice(true);
// sliceQuery.paramHasNumberOfToken(80, ">");
sliceSearcher.setSliceQuery(sliceQuery);
if (sliceSearcher.run()) {
return sliceSearcher.getSliceHits();
} else {
return null;
}
}
}
托馬斯嗨 首先,感謝您的回答。我將不得不採用醜陋的方式,因爲我還沒有接近前端控制器的方法。 但是我不確定你的答案的確切語法 <%= com.example.MyUtility.getSomething()%>的 我的Java文件稱爲「slicer.java」 它有一個主包稱爲「sliceClient」 我要援引「sliceCreate」 我想回到一個名爲「sliceHit」 代碼位於WEB-INF/clases/src目錄 我已經試過 <%= session.sliceClient的變化串。 getsliceHit()%> 沒有成功 與往常一樣,任何幫助表示讚賞 深end – Deepend 2012-03-05 17:11:47
@Deepend恐怕你不得不向我們展示'slicer.java'的內容,你的命名和詞彙在Java世界裏有點混亂。我們不需要方法體,只需要簽名(請將其添加到問題中,而不是作爲評論)。從你在這裏說的,也許嘗試:'<%= sliceClient.sliceCreate()%>'... – 2012-03-05 17:28:08
我已經將代碼添加到問題現在。由於我是StackOverFlow的新手,我不知道編輯原始問題是可以接受的。 感謝您的幫助提前 Deepend – Deepend 2012-03-05 17:46:00