geek Posted June 15, 2012 at 01:42 PM Report Share #463076 Posted June 15, 2012 at 01:42 PM (edited) Boas Pessoal, Tenho um servlet que retorna um Arraylist de um tipo generico, queria mandar o arraylist e pega-lo na minha página JSP. Como faço? O meu código da servlet é: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Servlets; import Dados_XML.CinemaLocais; import Dados_XML.FilmesDistrito; import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.StringReader; import java.util.ArrayList; import java.util.Iterator; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import javax.xml.ws.Dispatch; import javax.xml.ws.Service; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; /** * * @author berkley blue */ public class cinemaExtreias extends HttpServlet { /** * Processes requests for both HTTP * <code>GET</code> and * <code>POST</code> methods. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { /* * TODO output your page here. You may use following sample code. */ String distrito = request.getParameter("distrito"); String concelho; ArrayList<FilmesDistrito> listaFilmes = new ArrayList<FilmesDistrito>(); pt.sercultur.ws.Sws service = new pt.sercultur.ws.Sws(); QName portQName = new QName("http://ws.sercultur.pt/", "SwsSoap12"); String req = "<CartazCinemaFilmesExt xmlns=\"http://ws.sercultur.pt/\"><Pais></Pais><Genero></Genero><Classificacao></Classificacao><Distrito>" + distrito + "</Distrito><Concelho></Concelho><CicloFestival></CicloFestival><DiasProgramacao></DiasProgramacao><Destaques></Destaques><Opcionais></Opcionais><EspacoAcademico></EspacoAcademico></CartazCinemaFilmesExt>"; try { // Call Web Service Operation Dispatch<Source> sourceDispatch = null; sourceDispatch = service.createDispatch(portQName, Source.class, Service.Mode.PAYLOAD); Source result = sourceDispatch.invoke(new StreamSource(new StringReader(req))); ByteOutputStream o = new ByteOutputStream(); Result streamResult = new StreamResult(o); TransformerFactory.newInstance().newTransformer().transform(result, streamResult); // System.out.print(result); String s = new String(o.getBytes()); s = s.trim(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); InputSource is = new InputSource(); is.setCharacterStream(new StringReader(s)); org.w3c.dom.Document doc = db.parse(is); FilmesDistrito cartaz = new FilmesDistrito("", "", ""); NodeList filmes = (NodeList) doc.getElementsByTagName("Filme"); NodeList descricao = doc.getElementsByTagName("Descricao"); NodeList genero = doc.getElementsByTagName("Genero"); for (int i = 0; i < filmes.getLength(); i++) { Element element = (Element) filmes.item(i); String nome_filme = element.getFirstChild().getNodeValue(); cartaz.setNomeFilme(nome_filme); out.println(nome_filme); Element elementDesc = (Element) descricao.item(i); String descricao_filme = elementDesc.getFirstChild().getNodeValue(); cartaz.setDescFilme(descricao_filme); out.println(descricao_filme); Element elementoGenero = (Element) genero.item(i); String genero_filme = elementoGenero.getFirstChild().getNodeValue(); cartaz.setGeneroFilme(genero_filme); out.println(genero_filme); } } catch (Exception ex) { System.out.println(ex.getMessage()); } request.setAttribute("listaFilmes", listaFilmes); RequestDispatcher disp = request.getRequestDispatcher("index.jsp"); disp.forward(request, response); // request.getDispatcher("index.jps").forward(request,response); } finally { out.close(); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP * <code>GET</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP * <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> } O meu código do JSP é: <%-- Document : index Created on : Jun 14, 2012, 9:31:58 PM Author : berkley blue --%> <%@page import="java.util.ArrayList"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <div id="cinemas" > <form action="http://localhost:8080/ITIS/cinemaExtreias" method="post"> Distrito: <input type="text" id="distrito" name="distrito"/> <input type="submit" value="pesquisa"/> </form> </div> <% ArrayList employeeList =(ArrayList)request.getAttribute("listaFilmes"); out.print(employeeList.size()); %> </body> </html> Alguém me dá uma mãozinha? Edited June 15, 2012 at 02:59 PM by Baderous geshi Link to comment Share on other sites More sharing options...
geek Posted June 16, 2012 at 11:09 AM Author Report Share #463245 Posted June 16, 2012 at 11:09 AM Obrigado na mesma a quem visualizou o tópico, acabei por conseguir sozinho. Valeu Pessoal Link to comment Share on other sites More sharing options...
apocsantos Posted June 16, 2012 at 11:27 AM Report Share #463250 Posted June 16, 2012 at 11:27 AM Bom dia, Podes colocar a solução que deste ao problema ? É que tal como tu, mais gente pode ter dificuldades semelhantes e a solução fica disponível. Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito" Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now