8
votes

Pouvez-vous appeler un servlet avec un lien?

Pouvez-vous appeler un servlet avec un lien? Par exemple xxx pré>

et éventuellement passer des paramètres à l'objet de la requête en les ajoutant au QueryString. P>

Si non, j'ai vu ce genre de chose: P>

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


0 commentaires

3 Réponses :


13
votes
<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")

3 commentaires

... qui appellera spécifiquement doket () .


@Ankur: Ce n'est certainement pas un navigateur. Le problème se situe probablement dans le code HTML / JS ou une page mise en cache dans le navigateur (CTRL + F5 ou redémarrage).


Dopost est déclenché si vous postez un formulaire à l'URL



2
votes

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


0 commentaires

10
votes

juste pour effacer une idée fausse:

Autant que je sache, vous ne pouvez pas appeler le code Java avec des événements JavaScript. P> blockQuote>

Vous pouvez parfaitement appeler le code Java avec le code JavaScript (et les événements). Au point, il vous suffit de laisser Javascript envoyer une demande HTTP complète au serveur. Il y a essentiellement 3 façons pour cela. P>

  1. Le premier moyen est de simuler une invocation d'un lien / bouton / formulaire existant. E.g. P>

    <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>
    
  2. La deuxième façon est d'utiliser la fenêtre.Location pour tirer une demande de get Web. Par exemple: p>

    <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>
    
  3. La troisième voie consiste à utiliser l'objet XMLHTTPRequest pour déclencher une demande asynchrone et traiter les résultats. Cette technique est l'idée de base de "Ajax". Voici un exemple compatible Firefox: P>

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


1 commentaires

Pour clarifier davantage la mauvaise idée - vous ne pouvez pas appeler Java de JavaScript, mais vous pouvez appeler une URL qui entraîne finalement le code Java étant exécuté. La différence est subtile, mais importante à comprendre.