java/nekurak.net-web/src/java/cz/frantovo/nekurak/servlet/SuperServlet.java
author František Kučera <franta-hg@frantovo.cz>
Wed, 26 Jan 2011 03:23:32 +0100
changeset 179 2ed9f3231a28
parent 177 d874e9e3e162
child 193 5ec59a8d902e
permissions -rw-r--r--
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
     1 package cz.frantovo.nekurak.servlet;
     2 
     3 import java.io.IOException;
     4 import java.util.Locale;
     5 import javax.servlet.RequestDispatcher;
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 /**
    12  *
    13  * @author fiki
    14  */
    15 public class SuperServlet extends HttpServlet {
    16 
    17 	public static final String PARAMETR_JAZYK = "jazyk";
    18 	private static final String ATRIBUT_JAZYK = "javax.servlet.jsp.jstl.fmt.locale.session";
    19 	private static final String ADRESAR_SABLON = "/WEB-INF/casti/";
    20 	
    21 
    22 	@Override
    23 	protected void doGet(HttpServletRequest požadavek, HttpServletResponse odpověď) throws ServletException, IOException {
    24 		společné(požadavek, odpověď);
    25 	}
    26 
    27 	/**
    28 	 * Vykreslí stránku pomocí JSP šablony
    29 	 * @param jsp JSP šablona stránky – např. detail.jsp (nacházejí se v /WEB-INF/casti/)
    30 	 */
    31 	protected void zpracujJSP(String jsp, HttpServletRequest požadavek, HttpServletResponse odpověď) throws ServletException, IOException {
    32 		/** Nastavení správného MIME typu */
    33 		//požadavek.setAttribute("jspMimeTyp", MIME_TYP);
    34 
    35 
    36 
    37 
    38 		/**
    39 		 * odpověď.setContentType(MIME_TYP); – nefunguje (JSP si tam procpe svoje text/xml)
    40 		 */
    41 		/*
    42 		 * Mělo by jít změnit přes web.xml:
    43 		<jsp-config>
    44 		<jsp-property-group>
    45 		<url-pattern>/</url-pattern>
    46 		<default-content-type>application/xhtml+xml</default-content-type>
    47 		</jsp-property-group>
    48 		</jsp-config>
    49 		 */
    50 		RequestDispatcher rd = getServletContext().getRequestDispatcher(ADRESAR_SABLON + jsp);
    51 		rd.forward(požadavek, new XhtmlOdpověď(odpověď));
    52 	}
    53 
    54 	/**
    55 	 * Společné činnosti, které děláme pro všechny HTTP metody (GET, POST atd.)
    56 	 */
    57 	private void společné(HttpServletRequest požadavek, HttpServletResponse odpověď) throws ServletException, IOException {
    58 		nastavJazyk(požadavek);
    59 	}
    60 
    61 	/**
    62 	 * Pokud se chce uživatel ručně přepnout na jiný jazyk, než jaký posílá jeho prohlížeč.
    63 	 */
    64 	private void nastavJazyk(HttpServletRequest požadavek) {
    65 		String jazyk = požadavek.getParameter(PARAMETR_JAZYK);
    66 		if (jazyk != null) {
    67 			požadavek.getSession().setAttribute(ATRIBUT_JAZYK, new Locale(jazyk));
    68 		}
    69 	}
    70 }