在jsp中调用java方法

时间:2010-03-01 07:00:48

标签: java jsp

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

请告诉我保存此文件的路径。另外一些示例代码如何使用它会有所帮助。

5 个答案:

答案 0 :(得分:24)

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

Person p = new Person(); // instantiate business object
p.init(...); // init it or something
request.setAttribute("person", p); // make it available to the template as 'person'

在模板中,您可以使用:

your age is: ${person.age}  <%-- calls person.getAge() --%>

答案 1 :(得分:10)

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

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

请注意,您需要在JSP中导入您的类,或使用完全限定的类名,但是您可以使用&lt; %%&gt;编写您喜欢的任何Java代码。语法。

您还可以在其他实用程序JSP中声明一个方法,使用&lt;%! %GT;语法(注意!),导入JSP,然后调用在这样的块中声明的方法。这虽然风格很糟糕。

答案 2 :(得分:7)

根据您要调用的操作类型,通常使用taglibs,EL函数或servlet。 Java代码确实不属于JSP文件,而是属于Java类。

如果要预处理请求,请使用Servlet doGet()方法。 E.g。

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 doPost()方法。

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输出,请使用JSTL core taglib之类的标记库或创建custom tags

如果要执行静态/辅助函数,请使用JSTL fn taglib之类的EL函数或创建custom functions

答案 3 :(得分:4)

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

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

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

如果您想知道,<% ... %>部分称为 scriptlet : - )

答案 4 :(得分:1)

实际上,jsp不是'对文件执行某些操作'的正确位置。您是否听说过MVC模式?

如果你仍然有兴趣从jsp调用java方法,你可以这样做,例如:
1. <% MyUtils.performOperation("delete") %>scriptlet
2. <my-utils:perform operation="delete"/>(自定义标记)

无论如何,我建议你谷歌关于scriptlets,jsp自定义标签和MVC模式。 最诚挚的问候,Gedevan