Come chiamare servlet attraverso una pagina JSP

Vorrei chiamare un Servlet attraverso una pagina JSP. Qual è il metodo da chiamare?

Puoi usare per questo.

  

Di solito è il contrario. Chiami il servlet che a sua volta inoltra al JSP per visualizzare i risultati. Crea un Servlet che faccia qualcosa come il seguente nel metodo doGet() .

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

e in /WEB-INF/result.jsp

 

The result is ${result}

Ora chiama il Servlet con l’URL che corrisponde al suo in web.xml , ad esempio http://example.com/contextname/servletURL .


Se la tua domanda reale è “Come inviare un modulo a un servlet?” quindi devi solo specificare l’URL del servlet action modulo HTML.

 

Il suo metodo doPost() verrà quindi chiamato.


Guarda anche:

  • Pagina informazioni Servlet – Contiene un mondo ciao
  • Come chiamare la class servlet dal modulo HTML
  • Come passare l’articolo corrente al metodo Java facendo clic su un collegamento ipertestuale o un pulsante nella pagina JSP?
  • Mostra JDBC ResultSet in HTML nella pagina JSP usando pattern MVC e DAO
  • Modelli di progettazione applicazioni basate sul web

Puoi usare RequestDispatcher come di solito lo usi in Servlet :

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

IllegalStateException sempre presente che non commettere alcuna risposta prima di utilizzare forward , poiché porterà a IllegalStateException .

non esiste un metodo per chiamare Servlet. Dovresti effettuare la mapping in web.xml e quindi triggersre questa mapping.

Esempio: web.xml:

   hello test.HelloServlet   hello /hello  

Questa mapping significa che ogni chiamata a http: // yoursite / yourwebapp / hello triggers questo servlet Ad esempio questo jsp:

  

Perché vorresti farlo? Non dovresti eseguire il codice del controller nella vista, e certamente non dovresti provare a inserire il codice all’interno di un altro servlet nella vista.

Esegui prima tutte le operazioni di elaborazione e refactoring dell’applicazione, quindi passa semplicemente i risultati a una vista. Rendi il punto di vista il più stupido ansible e non ti imbatterai nemmeno in questi problemi.

Se questo tipo di design è difficile per te, prova Freemarker o anche qualcosa come Velocity (anche se non lo consiglio) per FORCE che tu faccia questo. Non devi mai fare questo genere di cose mai.

Per dirla in modo più accurato, il problema che stai cercando di risolvere è solo un sintomo di un problema più grande: la tua architettura / progettazione dei tuoi servlet.

Puoi inviare la tua pagina jsp a servlet. Per questo usa il tag

.

E per redirect l’uso:

 response.sendRedirect("servleturl") 

Puoi postare un modulo HTML su URL, che è mappato su servlet o inserisci i tuoi dati nell’object HttpServletRequest che passi alla pagina jsp.