2010-04-05 4 views
0

Je suis en train d'envoyer une table dans le code html à un jsp utilisantComment envoyer HttpServletResponse dans le PrintWriter ayant une structure HTML à un jsp

response.setContentType("text/html"); 
PrintWriter out = response.getWriter(); 
out.println("<html>")..... 

puis en utilisant response.sendRedirect (nom de jsp) pour envoyer la table à la jsp;

Mais cela ne fonctionne jamais avec moi et j'ai un doute que l'auteur de l'imprimé a une manipulation spécifique avec la communication de servlet jsp.

Mise à jour: Pour être plus clair Dans une JSP, j'ai plusieurs paramètres dans lesquels je les envoie tous à une servlet. Celui-ci; la servlet construit une table avec tous les paramètres qui ont été interceptés avec request.getParameter. lorsque La table html est construite avec out.println comme cela: response.setContentType ("text/html");
PrintWriter out = response.getWriter();

out.println("<html>"); 
out.println("<head>"); 
out.println("<title>Imput OPC</title>"); 
out.println("</head>"); 
out.println("<body>"); 
    out.println("<table border=1>"); 
. 
    . 
    . 
out.println("</body>"); 
out.println("</html>"); 

donc je voudrais envoyer ce résultat: la table html pour afficher dans une autre de

+0

Ceci est une question vraiment étrange. Vous n'envoyez pas HTML * à * un JSP. S'il vous plaît, développez ce que vous essayez de faire, car je ne peux rien comprendre. – skaffman

Répondre

1

Il ne fonctionne pas de cette façon. Le HTML devrait être dans la JSP, pas dans la servlet. Répétez-moi: le texte du template (HTML/CSS/JS) appartient à JSP et le code Java appartient aux classes Java (pour commencer avec une servlet).

Tout ce que le servlet doit faire est de faire le travail et de mettre les données d'intérêt dans une portée appropriée (portée de la demande?) Et enfin transmettre la demande à la page JSP puis utiliser taglibs dans JSP pour contrôler la page flux et utiliser EL pour accéder aux données backend.

E.g. ce qui suit dans un doGet():

List<Person> persons = personDAO.list(); 
request.setAttribute("persons", persons); // This way it's accessible in JSP by ${persons} 
request.getRequestDispatcher("/WEB-INF/persons.jsp").forward(request, response); 

de ce qui suit dans persons.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

... 

<table> 
    <c:forEach items="${persons}" var="person"> 
     <tr> 
      <td>${person.name}</td> 
      <td>${person.email}</td> 
      <td>${person.age}</td> 
     </tr> 
    </c:forEach> 
</table> 

Le c:forEach fait partie de JSTL. S'il n'est pas disponible dans votre environnement, vous pouvez l'installer en déposant simplement jstl-1.2.jar dans le dossier /WEB-INF/lib (en supposant que vous utilisez le conteneur Servlet 2.5).

Questions connexes