如果没有Scriptlet,我们如何在JSP中创建Java类对象并调用其方法?
假设有一个名为如果没有Scriptlet,我们如何在JSP中创建Java类对象并调用其方法?,jsp,Jsp,假设有一个名为Demo的类不是Javabean,它有一个方法m1(),我想在不使用Scriptlet的情况下从JSP页面调用这个方法m1()。如何执行此操作?创建一个并在doGet()方法中执行此操作 @WebServlet(urlPatterns={"/page"}) public class PageServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request,
Demo
的类不是Javabean,它有一个方法m1()
,我想在不使用Scriptlet的情况下从JSP页面调用这个方法m1()
。如何执行此操作?创建一个并在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的情况下直接访问)
现在调用而不是。我个人建议使用基于JSTL和表达式语言的解决方案: “JSP技术2.0版的一个主要功能是支持表达式语言(EL)。表达式语言使人们能够轻松访问存储在JavaBeans组件中的应用程序数据。例如,JSP表达式语言允许页面作者使用简单语法(例如${name}来访问bean,以获取简单变量或${name.foo.bar}用于嵌套属性。“ 这将允许您在表单中使用标记而不是scriptlet:
<c:out value="${demo.m1}"/>
JSTL还将允许您通过使用标记来执行条件、迭代以及更多操作。@russell和balusC,我在scriptlet中询问我可以做以下事情-现在我的问题是,如果jsp中没有scriptlet,并且Demo没有在任何范围中设置,那么如何执行上述操作?对于${Demo.m1},Demo必须在任何范围中。