Can you call a servlet with a link?

允我心安 提交于 2019-11-30 13:50:44
<a href="servletUrl?param=value">click</a>

is perfectly legal and will work.

That will make the doGet(..) method of the servlet be called, and you can get the parameter using request.getParameter("param")

Just to clear a misconception:

As far as I know you can't call Java code with Javascript events.

You can perfectly call Java code with JavaScript code (and events). To the point, you just need to let JavaScript send a fullworthy HTTP request to the server side. There are basically 3 ways for this.

  1. The first way is to simulate invocation of an existing link/button/form. E.g.

    <a id="linkId" href="http://www.google.com/search?q=balusc">Link</a>
    
    <script type="text/javascript">
        document.getElementById('linkId').click();
    </script>
    

    and

    <form id="formId" action="http://www.google.com/search">
        <input type="text" id="inputId" name="q">
    </form>
    
    <script type="text/javascript">
        document.getElementById('inputId').value = 'balusc';
        document.getElementById('formId').submit();
    </script>
    
  2. The second way is to use window.location to fire a plain GET request. For example:

    <script type="text/javascript">
        var search = 'balusc';
        window.location = 'http://www.google.com/search?q=' + search;
    </script>
    
  3. The third way is to use XMLHttpRequest object to fire an asynchronous request and process the results. This technique is the base idea of "Ajax". Here's a Firefox compatible example:

    <script type="text/javascript">
        function getUrl(search) {
            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function() {
                if (xhr.readyState == 4) {
                    var responseJson = eval('(' + xhr.responseText + ')');
                    var url = responseJson.responseData.results[0].unescapedUrl;
                    var link = document.getElementById('linkId');
                    link.href = link.firstChild.nodeValue = url;
                    link.onclick = null;
                }
            }
            var google = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='
            xhr.open('GET', google + search, true);
            xhr.send(null);
        }
    </script>
    
    <p>My homepage is located at: <a id="linkId" href="#" onclick="getUrl('balusc')">click me!</a></p>
    

    This can be rewritten in a shorter and crossbrowsercompatible manner with jQuery.

Just substitute http://www.google.com/search with your own servlet to get the above examples to work in your environment.

For more background information, you may find this article useful as well.

Perhaps the following is what you're after:

<jsp:include page="/MyServlet">
    <jsp:param name="param" value="value"/>
</jsp:include>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!