Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 12 лет назад пользователемitcourse.hostenko.com
1 Java на стороне сервера. Сервлеты и JSP Server-side Java: Servlets & JSP
2 Задачи сервлета Чтение явных данных, передаваемых с клиента ( данные форм ) Чтение неявных данных ( заголовки протокола HTTP) Генерация результата Отправка клиенту явных данных в виде HTML Отправка неявных данных ( статусы протокола HTTP и заголовки )
3 Вывод простого HTTP- ответа
4 HTTP- ответ в виде HTML
5 Жизненный цикл сервлета init Выполняется при загрузке сервлета (1 раз ; не вызывается для каждого запроса ) service Вызывается сервером для каждого запроса в новом потоке ; в свою очередь передает вызов в doGet, doPost и др. Этот метод переопределять не следует. doGet, doPost, doXxx Обрабатывает HTTP- запросы GET, POST и др. Для задания функциональности сервлета следует переопределить эти методы destroy Вызывается при уничтожении экземпляра класса сервлета Точно не вызывается после каждого запроса
6 Обработка данных форм : HTML- форма
7 Чтение параметров
8 Чтение параметров -- результат
9 Извлечение заголовков запроса (1) public class ShowRequestHeaders extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { out.println (docType + " \n" + " "+title+" \n"+ " \n" + " " + title + " \n" + " Request Method: " + request.getMethod() + " \n" + " Request URI: " + request.getRequestURI()+ " \n" + " Request Protocol: " + request.getProtocol() + " \n" +
10 Извлечение заголовков запроса (2) " \n" + " Header Name Header Value"); Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String headerName = headerNames.nextElement(); out.println(" " + headerName); out.println(" "+request.getHeader(headerName)); } out.println(" \n "); } /** Since this servlet is for debugging, have it * handle GET and POST identically. */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }
11 Задание заголовков ответа response.setHeader(String headerName, String headerValue) response.setDateHeader(String name, long millisecs) response.setIntHeader(String name, int headerValue) setContentType MIME setContentLength addCookie sendRedirect
12 Отслеживание сеанса (1) public class ShowSession extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); HttpSession session = request.getSession(); String heading; Integer accessCount = (Integer)session.getAttribute("accessCount"); if (accessCount == null) { accessCount = new Integer(0); heading = "Welcome, Newcomer"; } else { heading = "Welcome Back"; accessCount = new Integer(accessCount.intValue() + 1); } session.setAttribute("accessCount", accessCount);
13 Отслеживание сеанса (2) PrintWriter out = response.getWriter(); … out.println (docType + " \n" + " " + title + " \n" + " \n" + " " + heading + " \n" + " Information on Your Session: \n" + " \n" + " Info Type Value\n" + … " Number of Previous Accesses\n" + " " + accessCount + "\n" + " \n" + " ");
14 Основной синтаксис JSP HTML Text Blah Эквивалентно out.print(" Blah "); Выражения Эквивалентно out.print(expression) Скрипты
15 Примеры выражений JSP Expressions Current time: Server: Session ID: The testParam form parameter:
16 Предопределенные переменные request Класс HttpServletRequest ( первый параметр в вызове service/doGet) response Класс HttpServletResponse ( второй параметр в вызове service/doGet) out Класс Writer, поток вывода session Класс HttpSession – сеанс пользователя application Класс ServletContex для хранения общих данных в приложении
17 Чтение 3 х параметров ( пример для сравнения с сервлетами )
18 Класс, который будет задействован в JSP package num; import java.util.*; public class NumberGuessBean { int answer; boolean success; String hint; int numGuesses; public NumberGuessBean() { reset(); }
19 Метод setGuess public void setGuess(String guess) { numGuesses++; int g; try { g = Integer.parseInt(guess); } catch (NumberFormatException e) { g = -1; } if (g == answer) { success = true; } else if (g == -1) { hint = "a number next time"; } else if (g < answer) { hint = "higher"; } else if (g > answer) { hint = "lower"; } answer) { hint = "lower"; }">
20 Остальные методы public boolean getSuccess() { return success; } public String getHint() { return "" + hint; } public int getNumGuesses() { return numGuesses; } public void reset() { answer = Math.abs(new Random().nextInt() % 100) + 1; success = false; numGuesses = 0; }
21 JSP, в которой задействован класс (1) Number Guess Congratulations! You got it. And after just tries. Care to try again ?
22 JSP, в которой задействован класс (2) Welcome to the Number Guess game. I'm thinking of a number between 1 and 100. What's your guess?
23 JSP, в которой задействован класс (3) Good guess, but nope. Try. You have made guesses. I'm thinking of a number between 1 and 100. What's your guess?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.