Вызов метода без жизненного цикла сервлета из браузера - PullRequest
0 голосов
/ 31 января 2011


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

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() из браузера, возможно ли это, и если да, то как?

С уважением.

Ответы [ 4 ]

1 голос
/ 31 января 2011

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

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

0 голосов
/ 26 мая 2011

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

0 голосов
/ 31 января 2011

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

0 голосов
/ 31 января 2011

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

  • doGet
  • doPost
  • doPut
  • doDelete
  • doHead
  • doOptions
  • doTrace
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...