2015-08-30 2 views
1

Пусть выполнены следующие тегов JSPМожно определить метод в JSP и вызывать его из сервлета

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

Можно ли определить метод (например, метод выше тест()) на странице JSP и затем вызвать его из класса сервлета?
Если да, то как это можно сделать? если ответ отрицательный, то почему?

(я знаю, что перед запуском страницы JSP веб-сервер выполняет его в класс сервлета)

+1

@ pL4Gu33 Разве это не одна наоборот? –

+0

ohh извините мою ошибку .... вы правы ... я удаляю бесполезный комментарий :) – pL4Gu33

+0

JSP - это вид, а не контроллер. Все, что вы хотите, уничтожает идеологию MVC. – BalusC

ответ

0

Что обычно происходит, вы отобразить запрос на сервлет, а сервлет вперед к JSP.

String nextJSP = "/searchResults.jsp"; 
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP); 
dispatcher.forward(request,response); 

Вы не можете вызвать метод на вашем JSP, потому что сервлет не имеет доступ к скомпилированному JSP напрямую, он имеет доступ только к диспетчеру.

Но что обычно делается, это настройка атрибутов запроса в сервлете, а затем JSP может выбрать их.

Таким образом, в верхней части JSP, вы могли бы сделать что-то вроде

<% if(request.getAttribute("doTest")) then test(); %> 
Смежные вопросы