JAVA SERVLETS SERVLETS SERVLETS package by psu epam
JAVA SERVLETS
SERVLETS
SERVLETS package by. psu. epam. cources. servlets; import java. io. IOException; import java. io. Print. Writer; import javax. servlet. Servlet. Exception; import javax. servlet. http. Http. Servlet. Request; import javax. servlet. http. Http. Servlet. Response; public class First. Servlet extends Http. Servlet { private static final long serial. Version. UID = 1 L; public First. Servlet() { super(); } protected void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { perform(request, response); } protected void do. Post(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { perform(request, response); } protected void perform(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { Print. Writer out = response. get. Writer(); String title = "Simple Servlet Output"; // сначала установите тип содержания и другие поля заголовков ответа response. set. Content. Type("text/html"); out. println("<HTML><HEAD><TITLE>"); out. println(title); out. println("</TITLE></HEAD><BODY>"); out. println("<H 1>" + title + "</H 1>"); out. print("<P>This is "); out. print(this. get. Class(). get. Name()); Request. Info. print. To. Browser(out, request); out. println("</BODY></HTML>"); out. flush(); out. close(); } }
ДЕСКРИПТОР РАЗВЕРТЫВАНИЯ Web. xml <? xml version="1. 0" encoding="UTF-8"? > <web-app xmlns: xsi="http: //www. w 3. org/2001/XMLSchema-instance" xmlns="http: //java. sun. com/xml/ns/javaee" xmlns: web="http: //java. sun. com/xml/ns/javaee/web-app_2_5. xsd" xsi: schema. Location="http: //java. sun. com/xml/ns/javaee/webapp_2_5. xsd" id="Web. App_ID" version="2. 5"> <display-name>Java_EE_Servlets</display-name> <welcome-file-list> <welcome-file>index. html</welcome-file> <welcome-file>index. htm</welcome-file> <welcome-file>index. jsp</welcome-file> <welcome-file>default. html</welcome-file> <welcome-file>default. htm</welcome-file> <welcome-file>default. jsp</welcome-file> </welcome-file-list> <servlet> <description></description> <display-name>My first servlet</display-name> <servlet-name>First. Servlet</servlet-name> <servlet-class> by. psu. epam. cources. servlets. First. Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>First. Servlet</servlet-name> <url-pattern>/First. Servlet</url-pattern> </servlet-mapping> </web-app>
ЗАПУСК КОНТЕЙНЕРА СЕРВЛЕТОВ И РАЗМЕЩЕНИЕ ПРОЕКТА Настройка ролей осуществляется в файле <TOMCAT_HOME>conftomcat-users. xml <rolename="manager" /> <rolename="manager-gui" /> <rolename="admin" /> <user password="admin" roles="admin, manager-gui" username="admin" />
ЗАПУСК КОНТЕЙНЕРА СЕРВЛЕТОВ И РАЗМЕЩЕНИЕ ПРОЕКТА Настройка источников данных для доступа к базе данных осуществляется в файле <TOMCAT_HOME>confcontext. xml <Resource name="jdbc/resgal. DS" auth="Container" type="javax. sql. Data. Source" username="root" password="admin" driver. Class. Name="com. mysql. jdbc. Driver" url="jdbc: mysql: //localhost: 3306/resgal" max. Active="8" max. Idle="4" /> Строка подключения менеджера выглядит следующим образом: http: //localhost: 8090/manager/html
SERVLETS • Если вызывать сервлет из index. jsp, то тег FORM должен выглядеть следующим образом: <FORM action=“First. Servlet"> <INPUT type="submit" value=“Execute“/> </FORM> Файл index. jsp помещается в папку /webapps/First. Web. Project и в браузере набирается строка: http: //localhost: 8080/Servlets/index. jsp
COOKIE Создание Cookie Конструктор класса javax. servlet. http. Cookie создает закладу с начальным именем и значением. Вы можете изменить значение закладки позже, вызвав метод set. Value. Если сервлет возвращает ответ пользователю, используя Writer, создавайте закладку, прежде чем обратитесь к Writer. public void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { String book. Id = request. get. Parameter("Buy"); if (book. Id != null) { Cookie get. Book = new Cookie("Buy", book. Id); } response. set. Content. Type("text/html"); Print. Writer out = response. get. Writer(); out. println("<html>" + "<head><title> Book Catalog </title></head>"); . . . }
COOKIE Установка атрибутов закладки public void do. Get (Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { String book. Id = request. get. Parameter("Remove"); if (book. Id != null) { this. Cookie. set. Max. Age(0); } response. set. Content. Type("text/html"); Print. Writer out = response. get. Writer(); out. println("<html> <head>" + "<title>Your Shopping Cart</title>" +. . . ); . . . }
COOKIE public void do. Get (Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { if (values != null) { book. Id = values[0]; Cookie get. Book = new Cookie("Buy", book. Id); get. Book. set. Comment("User has indicated a desire " + "to buy this book from the bookstore. "); response. add. Cookie(get. Book); } . . . }
COOKIE Запрашивание закладок Клиенты возвращают закладки как поля, добавленные в HTTP заголовок запроса. Cookie[] get. Cookies() из класса Http. Servlet. Request – возвращает все закладки ассоциированные к данному хосту. public void do. Get (Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { String book. Id = request. get. Parameter( "Remove"); if (book. Id != null) { Cookie[] cookies = request. get. Cookies(); this. Cookie. set. Max. Age(0); } response. set. Content. Type( "text/html"); Print. Writer out = response. get. Writer(); out. println("<html> <head>" + "<title>Your Shopping Cart</title>" +. . . ); . . . }
COOKIE Получение значения закладки • String get. Value() - возвращает значение закладки. public void do. Get (Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { String book. Id = request. get. Parameter( "Remove"); if (book. Id != null) { Cookie[] cookies = request. get. Cookies(); for(i=0; i < cookies. length; i++) { if (cookies[i]. get. Value(). equals(book. Id)) cookies[i]. set. Max. Age(0); } } response. set. Content. Type( "text/html"); Print. Writer out = response. get. Writer(); out. println("<html> <head>" + "<title>Your Shopping Cart</title>" + . . . ); . . . }
COOKIE public class Cookie. Action { private static int number = 1; public static void set. Cookies(Http. Servlet. Response response) { String name = "James"; String role = "00" + (++number); Cookie c = new Cookie(name, role); c. set. Max. Age(60*60); c. set. Comment("Comments for my cookie"); response. add. Cookie(c); String value = response. get. Locale(). to. String(); Cookie loc = new Cookie("locale", value); response. add. Cookie(loc); } public static Array. List<String> add. To. Request(Http. Servlet. Request request) { Array. List<String> messages = new Array. List<String>(); Cookie[] cookies = request. get. Cookies(); if (cookies != null) { messages. add("Number cookies: " + cookies. length); for(int i = 0; i< cookies. length; i++) { Cookie c = cookies[i]; messages. add(c. get. Name() + " = " + c. get. Value()); } } return messages; } }
COOKIE public static void print. To. Browser(Print. Writer out, Http. Servlet. Request req) { out. println(br + "===== Http. Servlet. Request ====="); out. println(br + "------Parameters-----"); Enumeration<String> params. Name = req. get. Parameter. Names(); while (params. Name. has. More. Elements()) { String name = params. Name. next. Element(); String value = req. get. Parameter(name); out. print(br + name + " = " + value); } out. println(br + "---------------"); out. println(br + "Method: " + req. get. Method()); out. print(br + "Request URI: " + req. get. Request. URI()); out. print(br + "Protocol: " + req. get. Protocol()); out. print(br + "Path. Info: " + req. get. Path. Info()); out. print(br + "Remote Address: " + req. get. Remote. Addr()); out. print(br + "Get Scheme: " + req. get. Scheme()); // извлечение имен заголовочной информации запроса Enumeration<String> e = req. get. Header. Names(); out. print(br + "------Header INFO: -----"); while (e. has. More. Elements()) { String name = (String) e. next. Element(); String value = req. get. Header(name); out. print(br + name + " = " + value); } }
- Slides: 54