Java на стороне сервера. Сервлеты и JSP Server-side Java: Servlets & JSP.

Презентация:



Advertisements
Похожие презентации
Сервлеты Запуск сервлетов Программирование сервлетов Классы javax.servlet.*: Servlet это интерфейс, который определяет методы: init(), service(), destroy(),
Advertisements

Платформа J2EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе)
Язык Java. JSP.. Java. Синтаксис. Перевод строчки эквивалентен пробелу Регистр в именах различается // Комментарии до конца строки /* Многострочные комментарии.
Java Server Pages(JSP). JavaServer Pages (JSP) позволяют вам отделить динамическую часть ваших страниц от статического HTML. Вы, как обычно, пишете обычный.
Платформа J2EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе)
Test 17 Вопрос 1. public class TKO { public static void main(String[] args) { String s = "-"; Integer x = 343; long L343 = 343L; if (x.equals(L343)) s.
Work with server by XMLRPC – library in Java For students Author: Dudnik Oxana.
Test 9 Вопрос 1. public class A { private String runNow() { return "High"; } static class B extends A { public String runNow() { return "Low"; } } public.
Исключения в Java Макаревич Л. Г.. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Программирование на стороне сервера.
Test 8 Вопрос 1. class Class1 { Class1(int i) { System.out.println("Class1(int)"); } public class Class2 extends Class1 { Class2(double d) { // 1 this((int)
Test 4 Вопрос 1. public class TestOutput { public static void main(String[] args) throws IOException { PrintStream out = new PrintStream( new BufferedOutputStream(
Java Collections Framework (JCF) in Java Tutorial for students of universities Author: Oxana Dudnik.
Обработка исключительных ситуаций, работа с файлами Исключительные ситуации Классы File, InputStream, RandomAccessFile, FileReader, BufferedReader, BufferedWriter,
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Test 5 Вопрос 1. В результате компиляции каких строк будет происходить ошибка компиляции: public class Main { public static void main(String[] args) {
Test 10 Вопрос 1. public class Test implements Iterator { // 1 private List list = new ArrayList (); // 2 public void addList(T... ts) { Collections.addAll(list,
Test 3 Вопрос 1. 01:package test; 02: public class Test { 03: public static void main(String [] args) { 04: Test test = new Test(); 05: System.out.println(test.toString());}
Test 14 Вопрос 1. class Main { public void method() { static class One { public One() { System.out.println("From one"); } } public static void main(String...
Транксрипт:

Java на стороне сервера. Сервлеты и JSP Server-side Java: Servlets & JSP

Задачи сервлета Чтение явных данных, передаваемых с клиента ( данные форм ) Чтение неявных данных ( заголовки протокола HTTP) Генерация результата Отправка клиенту явных данных в виде HTML Отправка неявных данных ( статусы протокола HTTP и заголовки )

Вывод простого HTTP- ответа

HTTP- ответ в виде HTML

Жизненный цикл сервлета init Выполняется при загрузке сервлета (1 раз ; не вызывается для каждого запроса ) service Вызывается сервером для каждого запроса в новом потоке ; в свою очередь передает вызов в doGet, doPost и др. Этот метод переопределять не следует. doGet, doPost, doXxx Обрабатывает HTTP- запросы GET, POST и др. Для задания функциональности сервлета следует переопределить эти методы destroy Вызывается при уничтожении экземпляра класса сервлета Точно не вызывается после каждого запроса

Обработка данных форм : HTML- форма

Чтение параметров

Чтение параметров -- результат

Извлечение заголовков запроса (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" +

Извлечение заголовков запроса (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); }

Задание заголовков ответа response.setHeader(String headerName, String headerValue) response.setDateHeader(String name, long millisecs) response.setIntHeader(String name, int headerValue) setContentType MIME setContentLength addCookie sendRedirect

Отслеживание сеанса (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);

Отслеживание сеанса (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" + " ");

Основной синтаксис JSP HTML Text Blah Эквивалентно out.print(" Blah "); Выражения Эквивалентно out.print(expression) Скрипты

Примеры выражений JSP Expressions Current time: Server: Session ID: The testParam form parameter:

Предопределенные переменные request Класс HttpServletRequest ( первый параметр в вызове service/doGet) response Класс HttpServletResponse ( второй параметр в вызове service/doGet) out Класс Writer, поток вывода session Класс HttpSession – сеанс пользователя application Класс ServletContex для хранения общих данных в приложении

Чтение 3 х параметров ( пример для сравнения с сервлетами )

Класс, который будет задействован в JSP package num; import java.util.*; public class NumberGuessBean { int answer; boolean success; String hint; int numGuesses; public NumberGuessBean() { reset(); }

Метод 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"; }

Остальные методы 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; }

JSP, в которой задействован класс (1) Number Guess Congratulations! You got it. And after just tries. Care to try again ?

JSP, в которой задействован класс (2) Welcome to the Number Guess game. I'm thinking of a number between 1 and 100. What's your guess?

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?