# HG changeset patch # User František Kučera # Date 1296008612 -3600 # Node ID 2ed9f3231a283b2724fde3870a32273ab3b7b639 # Parent afee4e663992460911c4905eeaf4bd259c0b57c5 Servlety: základ, detail podniku se už zobrazuje přes servlet URL budou hezčí, lépe struktorvaná – ale nemůžou se používat relativní jako dotěď, musíme začínat vždy / (contextPath) TODO: - postupně předělat všechny stránky - opravit javascript - zkontrolovat další relativní URL diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/src/java/cz/frantovo/nekurak/servlet/Podnik.java --- a/java/nekurak.net-web/src/java/cz/frantovo/nekurak/servlet/Podnik.java Wed Jan 26 02:24:34 2011 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -package cz.frantovo.nekurak.servlet; - -import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * - * @author fiki - */ -public class Podnik extends SuperServlet { - - @Override - protected void doGet(HttpServletRequest požadavek, HttpServletResponse odpověď) throws ServletException, IOException { - super.doGet(požadavek, odpověď); - - String[] parametryCesty = (požadavek.getPathInfo().split("/")); - int id = Integer.parseInt(parametryCesty[1]); - - odpověď.getOutputStream().println("URL: " + požadavek.getRequestURL()); - odpověď.getOutputStream().println("ContextPath: " + požadavek.getContextPath()); - odpověď.getOutputStream().println("PathInfo: " + požadavek.getPathInfo()); - odpověď.getOutputStream().println("PathTranslated: " + požadavek.getPathTranslated()); - odpověď.getOutputStream().println("QueryString: " + požadavek.getQueryString()); - odpověď.getOutputStream().println("RequestURI: " + požadavek.getRequestURI()); - odpověď.getOutputStream().println("Scheme: " + požadavek.getScheme()); - odpověď.getOutputStream().println("ServletPath: " + požadavek.getServletPath()); - odpověď.getOutputStream().println("ID podniku: " + id); - odpověď.getOutputStream().println("počet parametrů: " + parametryCesty.length); - odpověď.getOutputStream().println("parametr 0: " + parametryCesty[0]); - odpověď.getOutputStream().println("parametr 1: " + parametryCesty[1]); - } -} diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/src/java/cz/frantovo/nekurak/servlet/PodnikServlet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/servlet/PodnikServlet.java Wed Jan 26 03:23:32 2011 +0100 @@ -0,0 +1,55 @@ +package cz.frantovo.nekurak.servlet; + +import cz.frantovo.nekurak.dto.Podnik; +import cz.frantovo.nekurak.ejb.PodnikRemote; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import javax.ejb.EJB; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + * @author fiki + */ +public class PodnikServlet extends SuperServlet { + + @EJB + PodnikRemote ejb; + + @Override + protected void doGet(HttpServletRequest požadavek, HttpServletResponse odpověď) throws ServletException, IOException { + super.doGet(požadavek, odpověď); + + String[] parametryCesty = (požadavek.getPathInfo().split("/")); + int id = Integer.parseInt(parametryCesty[1]); + + Podnik p = ejb.getPodnik(id); + + if (p == null) { + odpověď.sendError(HttpServletResponse.SC_NOT_FOUND); + } else { + požadavek.setAttribute("podnik", p); + požadavek.setAttribute("mapa", getMapa(p)); + zpracujJSP("detail.jsp", požadavek, odpověď); + } + } + + /** + * @return URL mapy – obrázku nebo null při chybě nebo absenci souřadnic + */ + private String getMapa(Podnik p) { + if (p == null || p.getSirka() == null || p.getDelka() == null) { + return null; + } else { + try { + String souradnice = URLEncoder.encode(p.getSirka() + ", " + p.getDelka(), "UTF-8"); + return "http://maps.google.com/maps/api/staticmap?size=400x400&sensor=false&markers=size:big|color:green|" + souradnice; + } catch (UnsupportedEncodingException e) { + return null; + } + } + } +} diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/src/java/cz/frantovo/nekurak/servlet/SuperServlet.java --- a/java/nekurak.net-web/src/java/cz/frantovo/nekurak/servlet/SuperServlet.java Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/servlet/SuperServlet.java Wed Jan 26 03:23:32 2011 +0100 @@ -2,6 +2,7 @@ import java.io.IOException; import java.util.Locale; +import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; @@ -15,6 +16,8 @@ public static final String PARAMETR_JAZYK = "jazyk"; private static final String ATRIBUT_JAZYK = "javax.servlet.jsp.jstl.fmt.locale.session"; + private static final String ADRESAR_SABLON = "/WEB-INF/casti/"; + @Override protected void doGet(HttpServletRequest požadavek, HttpServletResponse odpověď) throws ServletException, IOException { @@ -22,6 +25,33 @@ } /** + * Vykreslí stránku pomocí JSP šablony + * @param jsp JSP šablona stránky – např. detail.jsp (nacházejí se v /WEB-INF/casti/) + */ + protected void zpracujJSP(String jsp, HttpServletRequest požadavek, HttpServletResponse odpověď) throws ServletException, IOException { + /** Nastavení správného MIME typu */ + //požadavek.setAttribute("jspMimeTyp", MIME_TYP); + + + + + /** + * odpověď.setContentType(MIME_TYP); – nefunguje (JSP si tam procpe svoje text/xml) + */ + /* + * Mělo by jít změnit přes web.xml: + + + / + application/xhtml+xml + + + */ + RequestDispatcher rd = getServletContext().getRequestDispatcher(ADRESAR_SABLON + jsp); + rd.forward(požadavek, new XhtmlOdpověď(odpověď)); + } + + /** * Společné činnosti, které děláme pro všechny HTTP metody (GET, POST atd.) */ private void společné(HttpServletRequest požadavek, HttpServletResponse odpověď) throws ServletException, IOException { diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/Detail.java --- a/java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/Detail.java Wed Jan 26 02:24:34 2011 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -package cz.frantovo.nekurak.web; - -import cz.frantovo.nekurak.dto.Podnik; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; - -/** - * - * @author fiki - */ -public class Detail { - - private HledacSluzby hledac = new HledacSluzby(); - private int id; - private Podnik podnik; - - /** - * @return URL mapy – obrázku nebo null při chybě nebo absenci souřadnic - */ - public String getMapa() { - Podnik p = getPodnik(); - - if (p == null || p.getSirka() == null || p.getDelka() == null) { - return null; - } else { - try { - String souradnice = URLEncoder.encode(p.getSirka() + ", " + p.getDelka(), "UTF-8"); - return "http://maps.google.com/maps/api/staticmap?size=400x400&sensor=false&markers=size:big|color:green|" + souradnice; - } catch (UnsupportedEncodingException e) { - return null; - } - } - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public Podnik getPodnik() { - if (podnik == null) { - podnik = hledac.getPodnikEJB().getPodnik(id); - } - return podnik; - } -} diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/atom/atom.jsp --- a/java/nekurak.net-web/web/WEB-INF/atom/atom.jsp Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/atom/atom.jsp Wed Jan 26 03:23:32 2011 +0100 @@ -32,7 +32,7 @@ <c:out value="${podnik.nazev}"/> - + urn:NekurakNET:podnik:${podnik.id} diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/casti/detail.jsp --- a/java/nekurak.net-web/web/WEB-INF/casti/detail.jsp Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/casti/detail.jsp Wed Jan 26 03:23:32 2011 +0100 @@ -6,14 +6,14 @@ xmlns:nk="urn:jsptagdir:/WEB-INF/tags/nekurak" version="2.0"> - - + + - -

- - - + +

+ + +
diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/casti/odeslatKomentar.jsp --- a/java/nekurak.net-web/web/WEB-INF/casti/odeslatKomentar.jsp Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/casti/odeslatKomentar.jsp Wed Jan 26 03:23:32 2011 +0100 @@ -30,7 +30,7 @@

, - + .

diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/casti/pridatPodnik.jsp --- a/java/nekurak.net-web/web/WEB-INF/casti/pridatPodnik.jsp Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/casti/pridatPodnik.jsp Wed Jan 26 03:23:32 2011 +0100 @@ -31,7 +31,7 @@
-
+


diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/casti/registrovatUzivatele.jsp --- a/java/nekurak.net-web/web/WEB-INF/casti/registrovatUzivatele.jsp Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/casti/registrovatUzivatele.jsp Wed Jan 26 03:23:32 2011 +0100 @@ -42,7 +42,7 @@

- +

@@ -63,7 +63,7 @@

&#160; - + .

@@ -76,7 +76,7 @@ - +

diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/chyby/404.jsp --- a/java/nekurak.net-web/web/WEB-INF/chyby/404.jsp Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/chyby/404.jsp Wed Jan 26 03:23:32 2011 +0100 @@ -6,8 +6,6 @@ version="2.0"> - - diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/chyby/500.jsp --- a/java/nekurak.net-web/web/WEB-INF/chyby/500.jsp Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/chyby/500.jsp Wed Jan 26 03:23:32 2011 +0100 @@ -6,8 +6,6 @@ version="2.0"> - - diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/tags/nekurak/fotkyPodniku.tag --- a/java/nekurak.net-web/web/WEB-INF/tags/nekurak/fotkyPodniku.tag Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/tags/nekurak/fotkyPodniku.tag Wed Jan 26 03:23:32 2011 +0100 @@ -11,12 +11,12 @@ diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/tags/nekurak/podnikDetail.tag --- a/java/nekurak.net-web/web/WEB-INF/tags/nekurak/podnikDetail.tag Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/tags/nekurak/podnikDetail.tag Wed Jan 26 03:23:32 2011 +0100 @@ -6,10 +6,11 @@ xmlns:nkfn="/WEB-INF/nekurakFunkce" version="2.0"> - + + - +

Souřadnice tohoto podniku nejsou známé.
(možná ještě nebyl proveden jejich výpočet) @@ -17,12 +18,12 @@

- Zeměpisná šířka: ${detail.podnik.sirka}
- Zeměpisná délka: ${detail.podnik.delka}
- Loc: ${detail.podnik.sirka}, ${detail.podnik.delka}
+ Zeměpisná šířka: ${podnik.sirka}
+ Zeměpisná délka: ${podnik.delka}
+ Loc: ${podnik.sirka}, ${podnik.delka}

- mapa + mapa

diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/tags/nekurak/podnikKomentare.tag --- a/java/nekurak.net-web/web/WEB-INF/tags/nekurak/podnikKomentare.tag Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/tags/nekurak/podnikKomentare.tag Wed Jan 26 03:23:32 2011 +0100 @@ -24,7 +24,7 @@
- +
diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/tags/nekurak/podnikZahlavi.tag --- a/java/nekurak.net-web/web/WEB-INF/tags/nekurak/podnikZahlavi.tag Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/tags/nekurak/podnikZahlavi.tag Wed Jan 26 03:23:32 2011 +0100 @@ -19,7 +19,7 @@
-

+

@@ -42,7 +42,7 @@

  • - +
  • @@ -55,7 +55,7 @@
  • - +
  • @@ -68,7 +68,7 @@
  • - +
  • diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/tags/nekurak/prepinaniJazyku.tag --- a/java/nekurak.net-web/web/WEB-INF/tags/nekurak/prepinaniJazyku.tag Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/tags/nekurak/prepinaniJazyku.tag Wed Jan 26 03:23:32 2011 +0100 @@ -12,9 +12,9 @@ - ${prepinaniJazykuCestina} - ${prepinaniJazykuSlovenstina} - ${prepinaniJazykuAnglictina} + ${prepinaniJazykuCestina} + ${prepinaniJazykuSlovenstina} + ${prepinaniJazykuAnglictina}
    \ No newline at end of file diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/tags/nekurak/stranka.tag --- a/java/nekurak.net-web/web/WEB-INF/tags/nekurak/stranka.tag Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/tags/nekurak/stranka.tag Wed Jan 26 03:23:32 2011 +0100 @@ -15,6 +15,10 @@ doctype-root-element="html" omit-xml-declaration="false"/> + + + + @@ -25,15 +29,15 @@ ${fn:escapeXml(titulek)} – <fmt:message key="nazev"/> - - - - - - - - - + + + + + + + + + @@ -47,24 +51,24 @@
    -

    +

      -
    • +
    • -
    • -
    • +
    • +
    • -
    • +
    • : ${prihlasenyUzivatel}
    • -
    • +
    • @@ -82,8 +86,8 @@ diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/WEB-INF/web.xml --- a/java/nekurak.net-web/web/WEB-INF/web.xml Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/WEB-INF/web.xml Wed Jan 26 03:23:32 2011 +0100 @@ -1,124 +1,124 @@ - - 30 - - - index.jsp - + + 30 + + + index.jsp + - + - 404 - /WEB-INF/chyby/404.jsp - - + 404 + /WEB-INF/chyby/404.jsp + + - 500 - /WEB-INF/chyby/500.jsp - + 500 + /WEB-INF/chyby/500.jsp + - - cz.frantovo.nekurak.posluchac.OchranaProtiCSRF - + + cz.frantovo.nekurak.posluchac.OchranaProtiCSRF + - - podnik - cz.frantovo.nekurak.servlet.PodnikServlet - - - atom - /WEB-INF/atom/atom.jsp - - - + + podnik + cz.frantovo.nekurak.servlet.PodnikServlet + + + atom + /WEB-INF/atom/atom.jsp + + + Servlet zpřístupňující fotky umístěné ve zvláštním adresáři (data oddělená od aplikace). - fotky - cz.frantovo.nekurak.servlet.Fotky - - + fotky + cz.frantovo.nekurak.servlet.Fotky + + Adresář na disku, který obsahuje fotky podniků. Musí existovat při startu aplikace. - adresar - /var/www/nekurak.net/fotky - - 1 - - - kaptcha - com.google.code.kaptcha.servlet.KaptchaServlet - - - Veřejné REST API (pak máme ještě jedno soukromé, kde musí být uživatel přihlášený) - REST - com.sun.jersey.spi.container.servlet.ServletContainer - 1 - - - Odesílání a náhledy komentářů pomocí AJAXu. - komentare - cz.frantovo.nekurak.servlet.Komentare - + adresar + /var/www/nekurak.net/fotky + + 1 + + + kaptcha + com.google.code.kaptcha.servlet.KaptchaServlet + + + Veřejné REST API (pak máme ještě jedno soukromé, kde musí být uživatel přihlášený) + REST + com.sun.jersey.spi.container.servlet.ServletContainer + 1 + + + Odesílání a náhledy komentářů pomocí AJAXu. + komentare + cz.frantovo.nekurak.servlet.Komentare + - - podnik - /podnik/* - - - fotky - /fotky/* - - - atom - /atom/* - - - kaptcha - /kaptcha.jpg - - + + podnik + /podnik/* + + + fotky + /fotky/* + + + atom + /atom/* + + + kaptcha + /kaptcha.jpg + + - REST - /zdroje/* - - - komentare - /komentare - + REST + /zdroje/* + + + komentare + /komentare + - + - javax.servlet.jsp.jstl.fmt.fallbackLocale - cs - - - javax.servlet.jsp.jstl.fmt.localizationContext - cz.frantovo.nekurak.preklady - + javax.servlet.jsp.jstl.fmt.fallbackLocale + cs + + + javax.servlet.jsp.jstl.fmt.localizationContext + cz.frantovo.nekurak.preklady + - - opravneny - - - - Správa Nekuřák.net - /sprava/* - - - opravneny - - - - FORM - nekurakNET - - /?akce=prihlaseni - /?akce=prihlaseni&chyba=ano - - + + opravneny + + + + Správa Nekuřák.net + /sprava/* + + + opravneny + + + + FORM + nekurakNET + + /?akce=prihlaseni + /?akce=prihlaseni&chyba=ano + + diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/index.jsp --- a/java/nekurak.net-web/web/index.jsp Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/index.jsp Wed Jan 26 03:23:32 2011 +0100 @@ -6,31 +6,18 @@ version="2.0"> + + - - - - - - session.invalidate(); - - - - - - - diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/js/hlasovani.js --- a/java/nekurak.net-web/web/js/hlasovani.js Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/js/hlasovani.js Wed Jan 26 03:23:32 2011 +0100 @@ -6,6 +6,9 @@ $.ajax({ type: "POST", + /** + * TODO: správné URL – ${zc} + */ url: "zdroje/hlas/", data: pozadavek, contentType: "text/xml", diff -r afee4e663992 -r 2ed9f3231a28 java/nekurak.net-web/web/js/komentare.js --- a/java/nekurak.net-web/web/js/komentare.js Wed Jan 26 02:24:34 2011 +0100 +++ b/java/nekurak.net-web/web/js/komentare.js Wed Jan 26 03:23:32 2011 +0100 @@ -5,9 +5,15 @@ }; komentare.nahled = function() { + /** + * TODO: správné URL – ${zc} + */ $("#formularKomentuj .vystup").load("komentare", $("#formularKomentuj form").serialize()); }; komentare.odeslat = function() { + /** + * TODO: správné URL – ${zc} + */ $("#formularKomentuj .vystup").load("komentare?odeslat=true", $("#formularKomentuj form").serialize()); };