2011-01-31 3 views
0


Мне было интересно, можно ли вызывать метод сервлетов, не относящийся к жизненному циклу, непосредственно из браузера.
Например, так же, как пример кода, если у меня есть что-то вроде -вызов сервлета без жизненного цикла вызов из браузера

public CheckServlet extends HttpServlet { 
    public void foo(HttpServletRequest req, HttpServletResponse res) { 
     // do something 
    } 
} 

web.xml -

<servlet> 
    <display-name>CheckServlet</display-name> 
    <servlet-name>CheckServlet</servlet-name> 
    <servlet-class>defpkg.CheckServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>CheckServlet</servlet-name> 
    <url-pattern>/CheckServlet</url-pattern> 
</servlet-mapping> 

Браузер URL -

http://localhost:8080/MyApp/CheckServlet 

Теперь, если я должен позвонить в foo() из браузера, можно ли и если да, то как?

С уважением.

ответ

1

Нет, это невозможно! Если бы это было возможно, это была бы большая дыра в безопасности, поскольку пользователь вашего webapp может вызвать любой метод!

Но ваш сервлет может потребовать, чтобы он захотел в его жизненных методах.

+0

Спасибо. Я получаю это сейчас. –

0

Спецификация сервлета (2.5) поддерживает только следующее:

  • doGet
  • doPost
  • doPut
  • doDelete
  • doHead
  • doOptions
  • doTrace
0

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

+0

hhmm .. Я мог бы попробовать. Благодарю. –

0

Да, браузер может вызывать, если веб-приложение является сервлетами 2.5. Новая спецификация сервлета поддерживает настраиваемые методы, означает, что сервлет может иметь метод doFoo(), и браузер может вызывать с помощью метода foo, как любой обычный GET, Метод POST Http.

Смежные вопросы