Question

Pouvez-vous appeler un servlet avec un lien? Par exemple

<a href="/servletName">link text</a>

Et peut-être passer des paramètres à l'objet de la demande en les ajoutant à la chaîne de requête.

Dans le cas contraire, je l'ai vu ce genre de chose:

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(/MyServlet); 
dispatcher.include(request,response); 

Mais comment pourrais-je déclencher cela? Par exemple, s'il était le code JavaScript que je pourrais le mettre dans une fonction de clic jQuery, ou si cela était un servlet, je le mettrais dans une méthode.

Mais comment dois-je appeler ce code à partir d'un JSP. Pour autant que je sais que vous ne pouvez pas appeler du code Java avec événements JavaScript.

Était-ce utile?

La solution

<a href="servletUrl?param=value">click</a>

est parfaitement légal et fonctionnera.

Cela va rendre la méthode doGet(..) du servlet appelé, et vous pouvez obtenir le paramètre à l'aide request.getParameter("param")

Autres conseils

Juste pour effacer une idée fausse:

  

Pour autant que je sais que vous ne pouvez pas appeler du code Java avec des événements Javascript.

Vous pouvez parfaitement appeler du code Java avec le code JavaScript (et événements). Au point, il vous suffit de laisser JavaScript envoyer une requête HTTP fullworthy sur le côté serveur. Il existe essentiellement 3 façons pour cela.

  1. La première consiste à simuler l'invocation d'un lien existant / bouton / form. Par exemple.

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

    et

    <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. La deuxième façon est d'utiliser window.location pour tirer une requête GET simple. Par exemple:

    <script type="text/javascript">
        var search = 'balusc';
        window.location = 'http://www.google.com/search?q=' + search;
    </script>
    
  3. La troisième voie consiste à utiliser l'objet XMLHttpRequest pour tirer une demande asynchrone et traiter les résultats. Cette technique est l'idée de base de « Ajax ». Voici un exemple compatible Firefox:

    <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>
    

    Cela peut être réécrite de façon plus courte et crossbrowsercompatible avec jQuery .

http://www.google.com/search Il suffit de remplacer votre propre servlet pour obtenir les exemples ci-dessus pour travailler dans votre environnement.

Pour plus d'informations générales, vous pouvez trouver cet article utiles.

Peut-être ce qui suit est ce que vous êtes après:

<jsp:include page="/MyServlet">
    <jsp:param name="param" value="value"/>
</jsp:include>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top