Сервлеты
Запуск сервлетов
Программирование сервлетов Классы javax.servlet.*: Servlet это интерфейс, который определяет методы: init(), service(), destroy(), getServletConfig(), getServletInfo(). GenericServlet обеспечивает самую простую реализацию интерфейса Servlet. Обычно нужно перекрыть метод service(). HttpServlet расширяет GenericServlet, чтобы обеспечить HTTP-обработку. Нужно перекрыть методы doGet(), doPost(), или оба. В классе реализовать метод service(), который вызывает необходимый метод doXXX, в зависимости от типа запроса. ServletRequest это интерфейс, который содержит данные от клиента для запускаемого сервлета. Реализован интерфейс в классе ServletRequestWrapper. HttpServletRequestWrapperрасширение класса ServletRequestWrapper, содержащее запрос в формате HTTP. Этот класс доступен через ссылку на интерфейс ServletRequest. ServletResponse Этот интерфейс определяет удобный способ взаимодействия с данными, которые сервлет посылает клиенту через контейнер. Реализация интерфейса – класс ServletResponse Wrapper. HttpServletResponseWrapper расширение класса ServletResponseWrapper, при этом полагается, что ответ в формате HTTP. Этот класс получаем по ссылке на интерфейс ServletResponse. Информация о сервлете
Протоколонезависимый сервлет import javax.servlet.*; import java.io.*; public class GenericHello extends GenericServlet { public void init(ServletConfig config) throws ServletException { super.init(config); } public void destroy() { } public void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException { resp.setContentType("text/html"); java.io.PrintWriter out = resp.getWriter(); out.println("Hello from the GenericHello Servlet"); out.close(); } public String getServletInfo() { return "This servlet tests the GenericServlet class"; }
HTTP-сервлет import javax.servlet.*; import javax.servlet.http.*; public class HTTPHello extends HttpServlet { public void init(ServletConfig config) throws ServletException { super.init(config); } public void destroy() { } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { response.setContentType("text/html"); java.io.PrintWriter out = response.getWriter(); out.println(" "); out.println(" "); out.println(" HTTPHello "); out.println(" "); out.println(" "); out.println("Hello from the HTTPHello Servlet"); out.println(" "); out.println(" "); out.close(); } /** Обработка HTTP GET. */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); } /** Обработка HTTP POST. */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); } /** Описание сервлета. */ public String getServletInfo() { return "This is the HTTPHello Servlet"; } }
Размещение сервлета 1. В качестве контейнера установить Tomcat-сервер. 2. Добавить к переменной CLASSPATH путь C:\Programm Files\ApacheSoftware Foundation\Tomcat 5.5\common\lib\servlet-api.jar 3. Запустить компилятор: javac GenericHello.java 4. Поместить сервлет в каталог...\webapps\servlets-examples\WEB- INF\classes 5. Исправить файл C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\servlets-examples\WEB-INF\web.xml GenericHello GenericHello /servlet/GenericHello Ввести адрес в браузер
Передача параметров сервлету Passing Parameters to Java Servlets Enter Values for all three Parameters Name: Age: Favorite Sport: Method Get examples/servlet/PassParam?UserName=Lilia&UserAge=30&UserSp ort=tennis
HTML формы и сервлеты import javax.servlet.*; import javax.servlet.http.*; public class PassParam extends HttpServlet { … protected void processRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { resp.setContentType("text/html"); java.io.PrintWriter out = resp.getWriter(); // output your page here out.println(" "); out.println(" "); out.println(" " + "Parameter Passing" + " "); out.println(" "); out.println(" "); out.println(" "); out.println("Here are the Parameters"); out.println(" "); out.println(" The UserName is "); out.println(req.getParameter("UserName") + " "); out.println(" "); out.println(" The UserAge is "); out.println(req.getParameter("UserAge") + " "); out.println(" "); out.println(" The UserSport is "); out.println(req.getParameter("UserSport") + " "); out.println(" "); out.println(" "); out.println(" "); out.close(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); }
Сохранение параметров в Cookies import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class CookieExample extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); Cookie[] cookies = req.getCookies(); for (int i = 0; i < cookies.length; i++) { Cookie c = cookies[i]; // получение Сookie String name = c.getName(); String value = c.getValue(); out.println(name + " = " + value); // отправка назад в браузер клиента } String name = req.getParameter("cookieName"); // получение из браузера параметров if (name != null && name.length() > 0) { String value = req.getParameter("cookieValue"); Cookie c = new Cookie(name, value); resp.addCookie(c); } // отсылка cookie } } javax.servlet.http.Cookie
Сохранение параметров в Session import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class SessionExample extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); HttpSession session = req.getSession(true); //создание сессии Date created = new Date(session.getCreationTime()); Date accessed = new Date(session.getLastAccessedTime()); out.println("ID " + session.getId()); //пересылка данных о сессии клиенту out.println("Created: " + created); out.println("Last Accessed: " + accessed); String dataName = req.getParameter("dataName"); // запись параметров в сессию if (dataName != null && dataName.length() > 0) { String dataValue = req.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } Enumeration e = session.getAttributeNames(); // получить переменные сессии while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println(name + " = " + value); //пересылка параметров клиенту } } } } javax.servlet.HttpSession