在jsp中调用java方法

在jsp中调用java方法,java,jsp,Java,Jsp,我有一个java类,它对文件执行一些操作。由于java代码非常庞大,我不想用jsp编写此代码。我希望在需要时调用jsp中的方法 请告诉我保存此文件的路径。另外,一些示例代码将有助于使用它。在servlet中(在JSP之前运行): 在模板中,您可以使用以下内容: your age is: ${person.age} <%-- calls person.getAge() --%> 您的年龄是:${person.age} 虽然我不会建议您在JSP中执行任何java调用,但您可以在JSP

我有一个java类,它对文件执行一些操作。由于java代码非常庞大,我不想用jsp编写此代码。我希望在需要时调用jsp中的方法

请告诉我保存此文件的路径。另外,一些示例代码将有助于使用它。

在servlet中(在JSP之前运行):

在模板中,您可以使用以下内容:

your age is: ${person.age}  <%-- calls person.getAge() --%>
您的年龄是:${person.age}

虽然我不会建议您在JSP中执行任何java调用,但您可以在JSP中执行此操作:

<%
   //Your java code here (like you do in normal java class file.
%>

<!-- HTML/JSP tags here -->


如果您想知道,
部分称为scriptlet:-)

我想问题是,如何使Java代码可用于JSP?您将使它像任何其他Java代码一样可用,这意味着它需要编译成.class文件并放在类路径上

在web应用程序中,这意味着类文件必须存在于应用程序的.war文件或目录中的web-INF/classes下,在与其包匹配的常用目录结构中。因此,将此代码与所有其他应用程序Java代码一起编译和部署,它应该放在正确的位置

注意,您将需要在JSP中导入类,或者使用完全限定的类名,否则您可以使用语法编写任何您喜欢的Java代码


您还可以使用语法(注意!)在其他一些实用程序JSP中声明一个方法,导入JSP,然后调用在这样一个块中声明的方法。但这是一种糟糕的风格。

实际上,jsp不是“对文件执行某些操作”的合适位置。你听说图案了吗

如果您仍然对从jsp调用java方法感兴趣,您可以这样做,例如:
1. <代码>()
2. <代码>(自定义标记)

无论如何,我推荐你到谷歌了解脚本、jsp自定义标记和MVC模式。

向您致意,Gedevan

根据您希望调用的操作类型,您通常会使用taglibs、EL函数或servlet来执行这些操作。Java代码实际上不属于JSP文件,而是属于Java类

如果要预处理请求,请使用Servlet方法。例如

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Preprocess request here.
    doYourThingHere();
    // And forward to JSP to display data.
    request.getRequestDispatcher("page.jsp").forward(request, response);
}
如果您想在表单提交后对请求进行后处理,请改用Servlet方法

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Postprocess request here.
    doYourThingHere();
    // And forward to JSP to display results.
    request.getRequestDispatcher("page.jsp").forward(request, response);
}
如果要控制页面流和/或HTML输出,请使用taglib或create


如果您想执行静态/辅助函数,请使用EL函数,如或create。

在JSP之前,您不必运行单独的servlet,尽管JSP文件本身将被动态编译为servlet。谢谢您的回答,我已经按照您所说的那样导入java类并使用它了……再次感谢所有回答的人……MVC模式有时也需要这样一些棘手的方法,特别是如果要显示的数据结构很复杂的话。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Postprocess request here.
    doYourThingHere();
    // And forward to JSP to display results.
    request.getRequestDispatcher("page.jsp").forward(request, response);
}