如何使HTML链接在servlet中调用java函数

时间:2013-02-01 00:26:55

标签: javascript html jsp hyperlink

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(),有什么好办法呢?

2 个答案:

答案 0 :(得分:0)

onclick不是Java。这是JavaScript。它是一种与Java完全不同的语言。他们唯一共同的东西是语言名称的前4个字符,一些关键字和一些语法。但就是这样。

只需让链接指向与servlet映射的URL模式匹配的URL即可。想象一下,您已经在/foo/*的URL模式上映射了您的servlet,然后只使用

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

这将只调用servlet的doGet()方法。

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

如果要为多个操作重用相同的servlet,只需将一些操作标识符作为请求参数传递

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

with doGet() servlet

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

或作为路径信息

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

with doGet() servlet

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

不需要奇怪的JavaScript方法/解决方法。

另见:


无关具体问题,HTML属于JSP,而不属于Servlet。

答案 1 :(得分:0)

servlet在您的服务器上运行,而HTML在用户的计算机上运行,​​因此您需要使用javascript / ajax向服务器发送请求以执行on_Click功能。