如何在没有scriptlet的情况下创建Java类对象并在JSP中调用其方法?

时间:2011-09-23 17:16:10

标签: jsp

假设有一个名为Demo的类,它不是Javabean并且有一个方法m1(),我想从我的JSP页面调用此方法m1()而不使用小脚本。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

创建servlet并使用doGet()方法完成工作。

@WebServlet(urlPatterns={"/page"})
public class PageServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        new Demo().m1();
        request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
    }

}

或者如果它返回一些对象作为结果,你需要它在EL中作为${result}使用,

@WebServlet(urlPatterns={"/page"})
public class PageServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Object result = new Demo().m1();
        request.setAttribute("result", result);
        request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
    }

}

(请注意,page.jsp隐藏在/WEB-INF文件夹中,以防止直接访问而无需先调用servlet

现在调用http://localhost:8080/context/page而不是http://localhost:8080/context/page.jsp

答案 1 :(得分:0)

我个人建议使用基于JSTL和表达式语言的解决方案:

A JSTL primer, Part 1: The expression language

Expression Language

“JSP技术2.0版的一个主要特性是它支持表达式语言(EL)。表达式语言可以轻松访问存储在JavaBeans组件中的应用程序数据。例如,JSP表达式语言允许页面作者使用简单的语法访问bean,例如$ {name}表示简单变量,$ {name.foo.bar}表示嵌套属性。“

这将允许您以以下形式使用标签而不是scriptlet:

<c:out value="${demo.m1}"/>

JSTL还允许您通过使用标签来执行条件,迭代等等。