Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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
Java 是否可以在JSP中定义一个方法并从servlet调用它_Java_Jsp_Servlets - Fatal编程技术网

Java 是否可以在JSP中定义一个方法并从servlet调用它

Java 是否可以在JSP中定义一个方法并从servlet调用它,java,jsp,servlets,Java,Jsp,Servlets,假设以下JSP标记 <%! public void test(){} %> 是否可以在jsp页面中定义一个方法(例如上面的test()方法),然后从servlet类调用它? 如果答案是肯定的,那怎么做呢? 如果答案是否定的,那么为什么呢 (我知道在运行JSP页面之前,web服务器会将其整合到一个servlet类中)通常发生的事情是将请求映射到servlet,然后servlet转发到JSP String nextJSP = "/searchResults.jsp"; Reques

假设以下JSP标记

<%! public void test(){} %>

是否可以在jsp页面中定义一个方法(例如上面的test()方法),然后从servlet类调用它?
如果答案是肯定的,那怎么做呢? 如果答案是否定的,那么为什么呢


(我知道在运行JSP页面之前,web服务器会将其整合到一个servlet类中)

通常发生的事情是将请求映射到servlet,然后servlet转发到JSP

String nextJSP = "/searchResults.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
dispatcher.forward(request,response);
您不能在JSP上调用方法,因为servlet不能直接访问已编译的JSP,它只能访问调度程序

但是通常要做的是,在servlet中设置请求属性,然后JSP可以选择这些属性

因此,在JSP的顶部,您可以执行以下操作

<% if(request.getAttribute("doTest")) then test(); %>

通常发生的情况是将请求映射到servlet,然后servlet转发到JSP

String nextJSP = "/searchResults.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
dispatcher.forward(request,response);
您不能在JSP上调用方法,因为servlet不能直接访问已编译的JSP,它只能访问调度程序

但是通常要做的是,在servlet中设置请求属性,然后JSP可以选择这些属性

因此,在JSP的顶部,您可以执行以下操作

<% if(request.getAttribute("doTest")) then test(); %>


@pL4Gu33是不是正好相反?哦,对不起,我弄错了。。。。你是对的。。。我删除了无用的注释:)JSP是视图,而不是控制器。不管你想要什么,都会破坏MVC的理念。@pL4Gu33是不是正好相反?哦,对不起,我错了。。。。你是对的。。。我删除了无用的注释:)JSP是视图,而不是控制器。无论你想要什么都会破坏MVC的理念。