假设有一个名为Demo
的类,它不是Javabean并且有一个方法m1()
,我想从我的JSP页面调用此方法m1()
而不使用小脚本。我怎么能这样做?
答案 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
“JSP技术2.0版的一个主要特性是它支持表达式语言(EL)。表达式语言可以轻松访问存储在JavaBeans组件中的应用程序数据。例如,JSP表达式语言允许页面作者使用简单的语法访问bean,例如$ {name}表示简单变量,$ {name.foo.bar}表示嵌套属性。“
这将允许您以以下形式使用标签而不是scriptlet:
<c:out value="${demo.m1}"/>
JSTL还允许您通过使用标签来执行条件,迭代等等。