2010-03-03 25 views

Respuesta

32

Es necesario tener un método doGet como:

public void doGet(HttpServletRequest request, 
     HttpServletResponse response) 
throws IOException, ServletException 
{ 
    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 

    out.println("<html>"); 
    out.println("<head>"); 
    out.println("<title>Hola</title>"); 
    out.println("</head>"); 
    out.println("<body bgcolor=\"white\">"); 
    out.println("</body>"); 
    out.println("</html>"); 
} 

Se puede ver this enlace para un simple servlet hola mundo

+12

No se recomienda generar HTML desde un servlet de esta manera. Esa es una expresión vintage de 1998. Una mejor solución sería usar un JSP. – duffymo

+2

O utilice algunos framework/herramientas como dojo, GWT etc. y mantenga html del lado del cliente completamente separado del código del lado del servidor. – saugata

+1

@duffymo: Pero a veces, en ciertas ocasiones, me gustaría generar un progreso en la respuesta html de Servlet. No todo es adecuado para MVC. –

93

Usted remitir la solicitud a un JSP para su visualización. JSP es una tecnología de visualización que proporciona una plantilla para escribir HTML/CSS/JS simple y proporciona la capacidad de interactuar con código/variables de Java de fondo con la ayuda de taglibs y EL. Puede controlar el flujo de la página con taglibs como JSTL. Puede establecer cualquier dato de back-end como un atributo en cualquiera de los ámbitos de solicitud, sesión o aplicación y usar EL (las cosas ${}) en JSP para acceder/mostrarlas.

ejemplo Comienzo:

@WebServlet("/hello") 
public class HelloWorldServlet extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String message = "Hello World"; 
     request.setAttribute("message", message); // This will be available as ${message} 
     request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response); 
    } 

} 

Y /WEB-INF/hello.jsp aspecto:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>SO question 2370960</title> 
    </head> 
    <body> 
     <p>Message: ${message}</p> 
    </body> 
</html> 

Al abrir http://localhost:8080/contextpath/hello esto mostrará

Message: Hello World

en el navegador.

Esto mantiene el código de Java libre de clúster de HTML y mejora enormemente el mantenimiento. Para aprender y practicar más con servlets, continúe con los enlaces a continuación.

También busque the "Frequent" tab of all questions tagged [servlets] para encontrar las preguntas más frecuentes.

+2

¿Sigue siendo este un enfoque válido?Siempre escucho a nuestro arquitecto principal decir que no debe usar JSP, pero luego me pregunto cómo debería crear todo el HTML. ¿Crea cada elemento uno por uno programáticamente? Eso probablemente demore por siempre. – Timo

+2

@Timo: o ha entendido mal a su arquitecto o su arquitecto necesita leer http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files, http: // stackoverflow. com/questions/2095397/what-is-the-difference-between-jsf-servlet-and-jsp y http://stackoverflow.com/tags/servlets/info Si aún no está convencido, ejecute usted mismo y busque otro proyecto. – BalusC

+0

esto ... ¡esto debería marcarse como la mejor respuesta! –

Cuestiones relacionadas