Pregunta

¿Se puede llamar a un servlet con un enlace? Por ejemplo

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

Y, posiblemente, pasar parámetros al objeto de solicitud mediante su inclusión en la cadena de consulta.

Si no es así, he visto este tipo de cosas:

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

Pero ¿cómo iba a desencadenar esto? Por ejemplo si se tratara de código JavaScript que podía ponerlo dentro de una función de clic jQuery, o si se trataba de un servlet Me puse en un método.

Pero, ¿cómo llamar en este código de dentro de una página JSP. Por lo que yo sé que no se puede llamar a código Java con los eventos de JavaScript.

¿Fue útil?

Solución

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

es perfectamente legal y va a funcionar.

Esto hará que el método doGet(..) del servlet ser llamado, y se puede obtener utilizando el parámetro request.getParameter("param")

Otros consejos

Sólo para aclarar un error:

  

Por lo que yo sé que no se puede llamar a código Java con los eventos de JavaScript.

Puede llamar a la perfección código Java con código JavaScript (y eventos). Hasta el punto, sólo tiene que dejar que JavaScript enviar una petición HTTP fullworthy para el lado del servidor. Básicamente, hay 3 formas para esto.

  1. La primera forma consiste en simular la invocación de un botón / / formulario de enlace existente. Por ejemplo.

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

    y

    <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 segunda manera es utilizar window.location para disparar una petición GET normal. Por ejemplo:

    <script type="text/javascript">
        var search = 'balusc';
        window.location = 'http://www.google.com/search?q=' + search;
    </script>
    
  3. La tercera forma es utilizar objeto XMLHttpRequest para disparar una solicitud asincrónica y procesar los resultados. Esta técnica es la idea base del "Ajax". He aquí un ejemplo compatible con 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>
    

    Esto se puede reescribir de una manera más corta y crossbrowsercompatible con jQuery .

Sólo http://www.google.com/search sustituto con su propio servlet para obtener los ejemplos anteriores para trabajar en su entorno.

Para obtener más información de antecedentes, puede encontrar este artículo útiles también.

Tal vez la siguiente es lo que está buscando:

<jsp:include page="/MyServlet">
    <jsp:param name="param" value="value"/>
</jsp:include>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top