tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
2542
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von CosmoKey
    CosmoKey CosmoKey ist offline Mitglied Silber
    Registriert seit
    Sep 2003
    Ort
    Bochum
    Beiträge
    82
    Hallo zusammen!

    Ich hab da noch so ein Problem mit der Anzeig von HTML aus einem Servlet herraus.

    Das ist mein Code
    PHP-Code:
    package de.cx30.balancer.test;

    import java.io.*;
    import java.net.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;

    import de.cx30.balancer.utils.list.*;

    public class 
    Redirect extends HttpServlet {

        public 
    Redirect() {
        }

        public 
    void doPost(HttpServletRequest request,
                
    HttpServletResponse responsethrows ServletException,
                
    IOException {
            
    processRequest(requestresponse);
        }

        public 
    void doGet(HttpServletRequest request,
                
    HttpServletResponse responsethrows ServletException,
                
    IOException {
            
    processRequest(requestresponse);
        }

        
        private 
    void processRequest (HttpServletRequest requestHttpServletResponse responsethrows ServletExceptionIOException {
            
            
    HttpSession session request.getSession();
            
    System.out.println(session.getId());
            
    String requestedUri request.getRequestURI();
            
            
    String webapp getWebAppNameFromURI(requestedUri);//parseURI(requestedUri);  
            
            
    String s webapp;//getSite(webapp);
            
    String s4 "";
            
            
    OutputStream streamOut null;
            
            try {
                for (
    Enumeration enumeration request
                        
    .getParameterNames(); enumeration.hasMoreElements();) {
                    
    String s2 = (String) enumeration.nextElement();
                    if (
    s4.length() > 0)
                        
    s4 s4 "&";
                    
    s4 s4
                            
    s2
                            
    "="
                            
    URLEncoder
                                    
    .encode(request.getParameter(s2));
                }

                
    //requestedUri += "?" + s4;
                
    URL url getSite(webapprequestedUri);//new URL(s);
                
    HttpURLConnection urlconnection = (HttpURLConnectionurl.openConnection();
                
                
    urlconnection.setDoInput(true);
                
    urlconnection.setDoOutput(true);
                
    urlconnection.setUseCaches(false);
                
    urlconnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
                
                for (
    Enumeration enumeration1 request.getHeaderNames(); enumeration1.hasMoreElements();) {
                    
    String s3 = (String) enumeration1.nextElement();
                    if (!
    s3.equals("Content-Type")) {
                        if (
    s3.indexOf("host") == -1) {
                            
    urlconnection.setRequestProperty(s3request.getHeader(s3));
                        }
                    }
                }

                
    Cookie acookie[] = request.getCookies();
                if (
    acookie != null) {
                    for (
    int i 1acookie.lengthi++)
                        
    urlconnection.setRequestProperty("Set-Cookie" i,
                                
    acookie[1].getName() + "="
                                        
    acookie[1].getValue());

                }

                 
    DataOutputStream dataoutputstream = new DataOutputStream(urlconnection.getOutputStream());
                 
    dataoutputstream.writeBytes(s4);
                 
    dataoutputstream.flush();
                 
    dataoutputstream.close();

                
                
    InputStream inputstream null;
                if (
    urlconnection.getInputStream() != null) {
                    
    inputstream urlconnection.getInputStream();
                } else if (
    urlconnection.getErrorStream() != null) {
                    
    inputstream urlconnection.getErrorStream();
                }
                if (
    inputstream != null) {
                    
    String contentType urlconnection.getContentType();
                    
    response.setContentType(contentType);
                    
    String encoding urlconnection.getContentEncoding();
                    
    response.setCharacterEncoding("utf-8");
                    
    streamOut response.getOutputStream();
                    
    rewriteStreams(inputstreamstreamOut);
                    
    inputstream.close();
                } else {
                    
    writeError(responses""streamOut);
                }
            } catch (
    Exception e) {
                
    e.printStackTrace();
                
    writeError(responses""streamOut);
            } 
    finally {
                if (
    streamOut != null) {
                    
    streamOut.close();
                }
            }
        }
        
        private 
    String getWebAppNameFromURI (String uri) {
            if (
    uri.startsWith("/")) {
                
    uri uri.substring(1uri.length());
            }
            if (
    uri.indexOf("/") != -1) {
                
    uri uri.substring(0uri.indexOf("/"));
            }
            return 
    uri;
        }

        private 
    void writeError(HttpServletResponse responseString hostString messageOutputStream streamOut) {
            try {
                
    response.setContentType("text/html");
                if (
    streamOut == null) {
                    
    streamOut response.getOutputStream();
                }
                
    streamOut.write("<html>".getBytes());
                
    streamOut.write("<head>".getBytes());
                
    streamOut.write("<title>Error message</title>".getBytes());
                
    streamOut.write("</head>".getBytes());
                
    streamOut.write("<body>".getBytes());
                
    String error "<h>" message "</h1>";
                
    streamOut.write(error.getBytes());
                
    streamOut.write("<br><br>".getBytes());
                
    error "<font size=+1 face=\"Arial\">Could not connect to site " host "</font><br>";
                
    streamOut.write(error.getBytes());
                
    streamOut.write("</body>".getBytes());
                
    streamOut.write("</html>".getBytes());
                
            } catch (
    IOException e) {
                
    e.printStackTrace();
            }
        }

        private 
    URL getSite(String webappString path) {
            
    Server server WebAppList.getNextServer(webapp);
            
            
    URL tempurlnull;
            try {
                
    tempurl = new URL("http"server.getHostName(), server.getServerPort(), path); //"/" +
            
    } catch (MalformedURLException e) {
                
    e.printStackTrace();
            }
            
            return 
    tempurl;
        }

        private 
    void rewriteStreams(InputStream inputstream,
                
    OutputStream outputstreamthrows IOException {
            
    byte abyte0[] = new byte[8192];
            
    int i;
            
    //StringBuffer buffer = new StringBuffer();
            
    while ((inputstream.read(abyte0)) > 0) {
                
    //buffer.append(new String(abyte0));
                
    outputstream.write(abyte0);
            }
            
    //System.out.println(buffer.toString());
            //outputstream.write(buffer.toString().getBytes());
        
    }

    Kurzee Beschreibung:
    Eine Client schickt eine anfrage an das Servlet. Das Servlet schickt die Anfrage an einen Server und die leitet die anwtort wieder zurück an den Client.

    Aber irgendwie kommt nur müll zurück. Das HTML scheint, auf dem Weg irgendwie kaput zu gehen. Kann aber auch gut sein, dass irgendwo ein Encoding oder so was nicht richtig gesetzt ist.

    Ich hoffe, jemand hier kann mir weiterhelfen.


    Besten dank.
     

  2. #2
    Avatar von CosmoKey
    CosmoKey CosmoKey ist offline Mitglied Silber
    Registriert seit
    Sep 2003
    Ort
    Bochum
    Beiträge
    82
    konnte das Problem jetzt lösen:


    Es lag an der funktion rewriteStreams(), irgendwie ist die nicht richtig klar gekommen mit dem byte array.


    ich habe sie umgebaut, jetzt es.
    PHP-Code:
    private void rewriteStreams(InputStream inputstream,
                
    OutputStream outputstreamthrows IOException {
            
    int i;
            while ((
    inputstream.read()) > -1) {
                
    outputstream.write(new Integer(i).byteValue());
            }
        } 
     

Ähnliche Themen

  1. Servlet-Mapping --> findet Servlet nicht
    Von Ahuga im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 26.08.09, 15:41
  2. Problem mit Servlet/JSP
    Von Kuri34 im Forum Java
    Antworten: 12
    Letzter Beitrag: 19.12.07, 12:29
  3. Daten von Servlet an anderes Servlet senden
    Von SeeSharpNewBee im Forum Java
    Antworten: 1
    Letzter Beitrag: 04.07.06, 09:54
  4. Problem servlet mapping
    Von sikosiko im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 01.04.05, 14:48
  5. Servlet /JSP Ausgaben mittels Servlet Filter komprimieren
    Von Thomas Darimont im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 13.03.05, 21:01