2009-03-13 11 views
5

Mam za zadanie utworzenie strony, która utworzy niestandardowe szablony HTML. Dostosowania są dostosowywane na podstawie danych wprowadzanych przez użytkownika. Obecnie używam tomcat/JSP do końca front-endu. Chcę utworzyć szablony HTML w JSP, aby wyprowadzić warunkowy kod HTML, ale zamiast wyświetlać to wyjście HTML użytkownikowi, chciałbym zapisać ten kod w kilku plikach (które następnie zostaną skompresowane i dostarczone do użytkownik, wraz z obrazami, plikami css, plikami js). Muszę wiedzieć, jak utworzyć fałszywy kontener, który wykona plik JSP (proces obejmuje i ocenia zmienne).Przechwytywanie wyjścia JSP, zapisywanie do pliku

Czytałem o użyciu filtrów serwera do przechwytywania danych wyjściowych kodu JSP, ale nie jestem pewien, czy to zadziała, ponieważ a) muszę utworzyć kilka plików HTML i b) muszę wyświetlać różne treści użytkownikowi (np. tutaj jest plik zip, pobierz go), a nie wynik przetworzonej strony JSP.

Dzięki!

Odpowiedz

4

Oto pomysł. Utwórz serwlet, aby zaakceptować dane wejściowe od użytkownika, z serwletu użyj java.net.HttpURLConnection, aby przekazać dane wejściowe do strony JSP i uzyskać wynik.

URL urlPage = new URL(url); 
HttpURLConnection conn = (HttpURLConnection)urlPage.openConnection(); 
conn.connect(); 
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

//then loop through lines of webpage with br.readLine(); 

Następnie w serwletu można spakować wszystkie pliki można wyciągnąć i odesłać go do użytkownika

0

Dlaczego nie używać wget? Możesz załadować strony do prawdziwego kontenera, a następnie pobrać wygenerowane strony z kontenera za pomocą wget.

--input-file=FILE read URLs from file. 

Stosując tę ​​opcję w wget odbędzie listę adresów URL z pliku i pobrać je za ciebie, tak jak tekst będzie wyświetlany w widoku-src przeglądarki.

Również wget jest dostępny dla Windows i Linux.

+0

dzięki za pomysł, kocham wget, ale to nie pasuje do moich potrzeb –

+0

@Roy ma do zrobienia z bitem zipping, prawda? – leeand00

+0

@ leeand00 nie jest to specyficzne, ponieważ jest to środowisko java, które musi działać w wielu środowiskach, a my mamy programistów Windows, Mac i Linux pracujących w tej samej bazie kodu, więc rozwiązanie musi być oparte na java –

1

Możesz mieć serwlet, który wywołuje JSP, otwierając URLConnection, a następnie odczytując wynik w pliku tymczasowym lub buforze. Następnie zapakuje i zapisze zip.

1

ja naprawdę nie jestem pewien, czy rozumiem pytanie, ale wezmę ukłucie na niego. Dlaczego nie stworzyć aplet i mieć go nazwać plik JSP przy użyciu następujących:


    RequestDispatcher d = getServletContext().getRequestDispatcher(jspName); 
    d.forward(request, response); 

Czy JSP pokazać przód z/wprowadzane przez użytkownika wartości formularza. Po wypełnieniu formularza prześlij formularz. W tym momencie jsp zwróci kontekst do serwletu, w którym można przeanalizować wartości, określić, które pliki utworzyć i zwrócić użytkownikowi. Po ustaleniu, co chcesz wyświetlić użytkownikowi, wyślij go do innego jsp i przekaż kontekst do tego jsp.

Możesz to zrobić na 2 sposoby. Możesz utworzyć inny plik jsp dla różnych typów plików, które chcesz zwrócić i po prostu wywołać właściwy. Lub możesz przekazać dowolne struktury/wartości do swojego jsp, umieszczając je w żądaniu, a następnie umieszczając je w swoim jsp. Możesz użyć tego faktu, aby utworzyć pojedynczy plik JSP, który na podstawie przekazanych parametrów (osadzonych w żądaniu) wyświetli odpowiednie informacje.

Jeśli całkowicie pominięto kwestię Twojego pytania, możesz usunąć tę odpowiedź.

Edytuj: Tak czy inaczej, będziesz musiał osadzić swoje wartości w żądaniu.

0

Można również wypróbować niektóre z wielu lekkich silników szablonów zaprojektowanych specjalnie do takich zadań. Tak właśnie zrobiłem, gdy miałem podobne zadanie i nigdy nie oglądałem się za siebie. Sprawdź na przykład Velocity.