Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果没有Scriptlet,我们如何在JSP中创建Java类对象并调用其方法?_Jsp - Fatal编程技术网

如果没有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必须在任何范围中。