Cómo llamar a servlet a través de una página JSP

Me gustaría llamar a un servlet a través de una página JSP. ¿Cuál es el método para llamar?

Puede usar para esto.

  

Sin embargo, por lo general es al revés. Llama al servlet, que a su vez lo reenvía al JSP para mostrar los resultados. Crea un servlet que hace algo como seguir en el método doGet() .

 request.setAttribute("result", "This is the result of the servlet call"); request.getRequestDispatcher("/WEB-INF/result.jsp").forward(request, response); 

y en /WEB-INF/result.jsp

 

The result is ${result}

Ahora llame al Servlet por la URL que coincide con su en web.xml , por ejemplo, http://example.com/contextname/servletURL .


Si su pregunta real es “¿Cómo enviar un formulario a un servlet?” entonces solo tiene que especificar la URL del servlet en la action formulario HTML.

 

Su método doPost() será llamado.


Ver también:

  • Página de información de servlets – Contiene un mundo de saludo
  • Cómo llamar a la clase servlet desde el formulario HTML
  • ¿Cómo paso el elemento actual al método de Java haciendo clic en un hipervínculo o botón en la página JSP?
  • Mostrar JDBC ResultSet en HTML en la página JSP usando el patrón MVC y DAO
  • Diseños de diseño de aplicaciones basadas en web

Puede utilizar RequestDispatcher como generalmente lo usa en Servlet :

 <%@ page contentType="text/html"%> <%@ page import = "javax.servlet.RequestDispatcher" %> <% RequestDispatcher rd = request.getRequestDispatcher("/yourServletUrl"); request.setAttribute("msg","HI Welcome"); rd.forward(request, response); %> 

Siempre tenga en cuenta que no confíe ninguna respuesta antes de utilizar forward , ya que dará lugar a IllegalStateException .

no hay un método para llamar a Servlet. Debe hacer una asignación en web.xml y luego desencadenar esta asignación.

Ejemplo: web.xml:

   hello test.HelloServlet   hello /hello  

Esta asignación significa que cada llamada a http: // yoursite / yourwebapp / hello activa este servlet. Por ejemplo, esta jsp:

  

Por qué querrías hacer esto? No debería estar ejecutando el código del controlador en la vista, y ciertamente tampoco debería intentar introducir código dentro de otro servlet en la vista.

Realice primero el procesamiento y la refactorización de la aplicación, luego simplemente pase los resultados a una vista. Haga que la vista sea lo más tonta posible y ni siquiera se encontrará con estos problemas.

Si este tipo de diseño es difícil para usted, pruebe Freemarker o incluso algo como Velocity (aunque no lo recomiendo) para obligarlo a hacer esto. Nunca tienes que hacer este tipo de cosas nunca.

Para decirlo con más precisión, el problema que está tratando de resolver es solo un síntoma de un problema mayor: su architecture / diseño de sus servlets.

Puede enviar su página jsp a servlet. Para este uso, use la etiqueta

.

Y para redirigir el uso:

 response.sendRedirect("servleturl") 

Puede publicar un formulario HTML en una URL, que se asigna a un servlet o insertar sus datos en el objeto HttpServletRequest que pasa a la página jsp.