我有一个java类,它对文件执行一些操作。由于java代码很大,我不想在jsp中编写这段代码。我想在需要时调用jsp中的方法。
请告诉我保存此文件的路径。另外一些示例代码如何使用它会有所帮助。
答案 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)