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

标签 java jsp servlets

假设以下 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(); %>

关于java - 是否可以在 JSP 中定义一个方法并从 servlet 调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32295497/

相关文章:

java - EL 如何在不知道对象类的情况下使用对象的方法和字段

java - spring中form-login标签的作用是什么

java - 如何动态更改servlet中生成的html页面的外观

java - 如何使用单例模式计数器为图像上传设置自动数字名称生成器

java - sql查询条件java servlet

java - 在乘法中使用 Math.pow 时,是否需要将每个操作数转换为 long?

java - 为什么 ArrayBlockingQueue 构造函数使用 ReentrantLock 来提高可见性?

java - 中断 libgdx 碰撞时的 Action

java - 我可以设置一个类,比如 class = 8

java - 基于表单的身份验证登录 servlet 代码