public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;

public Test() {
    super();
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();

    out.println("<HTML><HEAD><TITLE>MovieDB</TITLE></HEAD>");
    out.println("<BODY><H1>MovieDB</H1>");

    out.println("<a href = '#' onclick = 'on_Click();'> Call Function </a>");

}

public void on_Click()
{
    System.out.println("HELLO");
}
}

Я просто хочу, чтобы HTML-ссылка на моей странице вызывала мою функцию java on_Click (), что является хорошим способом сделать это?

0
EMChamp 1 Фев 2013 в 04:26

2 ответа

Лучший ответ

onclick не является Java. Это JavaScript. Это совершенно другой язык, чем Java. Единственное, что у них общего - это первые 4 символа названия языка, некоторые ключевые слова и некоторый синтаксис. Но это все.

Просто дайте ссылке указать URL-адрес, который соответствует шаблону URL-адреса отображения сервлета. Представьте, что вы сопоставили свой сервлет с шаблоном URL /foo/*, затем просто используйте

<a href="foo">Call function</a>

Это просто вызовет метод сервлета doGet().

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("Hello");
}

Если вы хотите повторно использовать один и тот же сервлет для нескольких действий, просто передайте некоторый идентификатор действия в качестве параметра запроса

<a href="foo?action=bar">Call function</a>

С doGet() в сервлете

String action = request.getParameter("action"); // "bar"

Или как информация о пути

<a href="foo/bar">Call function</a>

С doGet() в сервлете

String action = request.getPathInfo().substring(1); // "bar"

Нет необходимости в странных подходах / обходных решениях JavaScript.

Смотрите также:


Не связанный с конкретной проблемой, HTML относится к JSP, а не к сервлету.

0
Community 20 Июн 2020 в 09:12

Сервлет работает на вашем сервере, в то время как HTML работает на компьютере пользователя, поэтому вам нужно будет использовать javascript / ajax для отправки запроса на ваш сервер для выполнения функции on_Click.

0
hobberwickey 1 Фев 2013 в 00:32