java - 在 JSP 中调用 Java 方法

标签 java jsp tomcat invoke-command

设置 Mac OSX 10.6.8、Apache Tomcat 6.0.16、Java1.6.0_29、Eclipse IDE Indigo。

我之前在 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 文件夹中的类文件?

非常感谢任何帮助

深入


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() %>

它被称为 并被认为是一种不好的做法。事实上,这是错误的,以至于我什至为写这篇文章感到羞耻。您应该做的是拥有一个前端 Controller (一个简单的 servlet 就可以做到),将结果放在请求属性中并转发到 JSP,后者又使用 用于输出。更多的工作,但好一个数量级:

在 Servlet 中:

request.setAttribute("someData", MyUtility.getSomething())
RequestDispatcher dispatcher = request.getRequestDispatcher("page.jsp");
dispatcher.forward(request, response);  

page.jsp中:

${someData}

有多种框架可以减少样板文件的数量( 是一个简单的例子)。

关于java - 在 JSP 中调用 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566410/

相关文章:

java - 在Java程序中显示PDF文件

java - Struts 2 验证不适用于动态表单字段

tomcat - Nginx+Tomcat - 504 超时

tomcat - 大文件上传期间 Grails 连接超时

java - 在java 2d中采摘

java - 分析从 Java 文件中读取的文本

java - 为什么HashMap的初始容量是16(2的幂),Hashtable的初始容量是11(素数)?

java - 页眉和页脚的良好 JSP 代码结构

使用 Ajax 的 Java Servlet DB 查询 - 查询时间慢且查询字符串并不总是完全传递给 servlet

java - 如何为UMASK设置tomcat 7环境变量?