Java Server Pages JSP Java Web Developer Acsior
Java. Server Pages (JSP) Борислава Спасова Java Web Developer Acsior Ltd. www. acsior. com Светлин Наков National Academy for Software Development academy. devbg. org
Пример - Date JSP • Примерната страница показва текущата дата и час date. jsp <html> <head><title>Date JSP example</title></head> <body> The date is: <% out. println(new java. util. Date()); %> </body> </html>
Date JSP Demo
JSP Изрази Demo
JSP Technology Internals • Tomcat запазва така компилираните JSP страници в директория CATALINA_HOME/work date_jsp. java date. jsp <html> <head><title>Date JSP example</title></head> <body> The date is: <% out. println(new java. util. Date()); %> </body> </html> webappsJSP-Demos date. jsp JSP compilation package org. apache. jsp; public final class date_jsp extends Http. Jsp. Base implements Jsp. Source. Dependent {. . . } workCatalinalocalhost JSP-Demosorgapachejsp
JSP Page директива Demo
Използване на JSP @include • Например може да използваме JSP @include, за да добавим navigation bar към всяка страница <html> <body> <%@ include file="/navbar. html" %> <!-- Part specific to this page. . . --> </body> </html>
JSP Include Директивата Demo
application Обекта • Използването на application пбакта трябва да става в synchronized част от кода synchronized (application) { Vector items = (Vector) application. get. Attribute("items"); if (shared. Items == null) { shared. Items = new Vector (); application. set. Attribute("items", items); } } • Обекта е общ за всички нишки • Web container-ите стартират самостоятелна нишка за всеки клиент
Проблеми със специалнитe символи в HTML - Пример • Разгледайте този пример: <html> You entered: <%= request. get. Parameter("something") %> <form> Enter something: <input type="text" name="something"> <input type="submit"> </form> </html> • Какво става ако въведем това? <script language="Java. Script">alert('Bug!'); </script>
Избягване на специалните символи • Няма стандартен метод в Servlet/JSP API за рещаването на този проблем • Ето примерен метод: public static String html. Escape(String text) { if (text == null) { return ""; } String. Builder escaped. Text = new String. Builder(); for (int i=0; i<text. length(); i++) { char ch = text. char. At(i);
Избягване на специалните символи if (ch == '<') escaped. Text. append("< "); else if (ch == '>') escaped. Text. append("> "); else if (ch == '&') escaped. Text. append("& "); else if (ch == '"') escaped. Text. append("" "); else escaped. Text. append(ch); } String result = escaped. Text. to. String(); return result; }
- Slides: 44