Оказывается в этой папке хранятся не только файлы сессий, а переведенные JSP-файлы в *.java-классы, при этом рядом с каждым таким файлом находится его откомпилированный коллега *.class-файл.
пятница, 24 июня 2011 г.
воскресенье, 19 июня 2011 г.
Другие jsp конфигурации кроме теглибов в web.xml
Кроме указания где находятся дескрипторы библиотек, можно внести для подходящих к шаблону урла джееспешок. Вот пример участка web.xml:
Как видно из примера, мы можем указать кодировку, шапку и футер, включение/выключение языка выражений, включение выключение скпритлетов...
<jsp-config>
<!--paths to tag descriptors-->
<jsp-property-group>
<description>
Special property group for JSP Configuration JSP example.
</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>/jsp2/misc/config.jsp</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>ISO-8859-1</page-encoding>
<scripting-invalid>true</scripting-invalid>
<include-prelude>/jsp2/misc/prelude.jspf</include-prelude>
<include-coda>/jsp2/misc/coda.jspf</include-coda>
</jsp-property-group>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
Как видно из примера, мы можем указать кодировку, шапку и футер, включение/выключение языка выражений, включение выключение скпритлетов...
Динамические атрибуты тега
Теги могут работать и с динамическими атрибутами.
Пример JSP:
Пример JSP:
....
<h2>Invocation 1 (six attributes)</h2>
<ul>
<my:echoAttributes x="1" y="2" z="3" r="red" g="green" b="blue"/>
</ul>
<h2>Invocation 2 (zero attributes)</h2>
<ul>
<my:echoAttributes/>
</ul>
<h2>Invocation 3 (three attributes)</h2>
<ul>
<my:echoAttributes dogName="Scruffy"
catName="Fluffy"
blowfishName="Puffy"/>
</ul>
....
Использование в тегах jsp-фрагментов.
jsp-фрагменты -- это куски кода, которые могут динамически исчисляться в момент запроса. Эти таких кусков состоит вся джееспе-страница. Эта сущность представляется классом
javax.servlet.jsp.tagext.JspFragment.Группа тегов jsp:element
Начнем с примера:
Эта группа тегов динамически генерирует элемент иксемель.
<jsp:element name="${content.headerName}"
xmlns:jsp="http://java.sun.com/JSP/Page">
<jsp:attribute name="lang">${content.lang}</jsp:attribute>
<jsp:body>${content.body}</jsp:body>
</jsp:element>
Эта группа тегов динамически генерирует элемент иксемель.
Подключение библиотеки тегов из jar-архива
Все очень просто. Нужно просто рядом с пакетами в архиве в папке META-INF разместить все дескрипторы библиотек тегов, которые есть в архиве. Контейнер через класспаз найдет эти десприпторы и соберет все ури, которые указаны в ... , и теперь через эти ури можно получать доступ к тегам библиотек из любой джееспе-страницы или тег-файла нашого проекта.
Упрощенное создание тегов в JSP 2.0
Теперь теги можно создавать намного проще, не зная языка Java. Можно тег описать в определенном формате в виде хмл в файле *.tag, контейнер эти файлы умеет читать и создавать из них классы тегов.
Чтобы иметь доступ к этому тегу необязательно даже описывать его в дескрипторе тегов, можно просто указать путь на него из ссылки джееспе:
Чтобы иметь доступ к этому тегу необязательно даже описывать его в дескрипторе тегов, можно просто указать путь на него из ссылки джееспе:
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
суббота, 18 июня 2011 г.
Новый набор значений для body-content в определение тега в JSP 2.0
Было:
emptyJSPtagdependent
emptyscriptlesstagdependent
Создание функций в библиотеках тегов
В дескрипторе библиотеки тегов можно кроме тегов определять функции которые потом можно использовать. Вот пример фрагмента такго дескптора:
............
<function>
<description>Converts the string to all caps</description>
<name>caps</name>
<function-class>jsp2.examples.el.Functions</function-class>
<function-signature>java.lang.String caps( java.lang.String )</function-signature>
</function>
............
Добавление скиптовых переменных из JSP тэгов
Из тегов можно добавлять в контекст страницы переменные, которые могут использовать скриптлеты и выразжения на странице. Чтобы добавить такую переменную нам необходимо об этом упомнить в дескрипторе библиотеки тегов в том теге, которые и будет добавлять эту пременную:
Это означает, что между открывающим и закрывающим тегами(
А вообще для определения места использования установленных в теге переменных выделенно три константы:
... <tag> <name>secondtag</name> <tagclass>com.stardeveloper.tag.test.SecondTag</tagclass> <tei-class>com.stardeveloper.tag.test.SecondTagTEI</tei-class> <bodycontent>JSP</bodycontent> <info>Your second JSP Tag</info> </tag> ...Тэг что нас интересует это
<tei-class>, который означает: класс TagExtraInfo. В теге указывается путь к классу, который и опишет, что он добавляется и когда оно станет доступным:package com.stardeveloper.tag.test;
import javax.servlet.jsp.tagext.*;
public class SecondTagTEI extends TagExtraInfo {
public VariableInfo[] getVariableInfo(TagData data) {
return new VariableInfo[] {
new VariableInfo("time", "java.lang.String",
true, VariableInfo.NESTED)
};
}
}
Это означает, что между открывающим и закрывающим тегами(
VariableInfo.NESTED) можно использовать переменную строкового типа time. Ну примерно так:<%@ taglib uri="/WEB-INF/tlds/DemoTags.tld" prefix="star" %> <star:secondtag> <p align="center">Date value retrieved from JSP Tag : <%= time %></p> </star:secondtag>
А вообще для определения места использования установленных в теге переменных выделенно три константы:
- VariableInfo.AT_BEGIN Переменная доступна после открывающего тега.
- VariableInfo.AT_END Переменная доступна после закрывающего тега.
- VariableInfo.NESTED Переменная доступна в теле тега(между открывающим и закрывающим тегами).
четверг, 16 июня 2011 г.
Trancient keyword in java
transient ключевое слово, которое ставится возле полей серилизируемого обьекта, означает, что данное поле серилизировать не нужно.
Ярлыки:
Java
понедельник, 13 июня 2011 г.
Передавание запросов из сревлетов в JSP и наоборот.
Из сервлетов в JSP:
import javax.servlet.*;
import javax.servlet.http.*;
public class servletToJsp extends HttpServlet {
public void doGet (HttpServletRequest request,
HttpServletResponse response) {
try {
// Set the attribute and Forward to hello.jsp
request.setAttribute ("servletName", "servletToJsp");
getServletConfig().getServletContext().getRequestDispatcher("/jsptoserv/hello.jsp").forward(request, response);
} catch (Exception ex) {
ex.printStackTrace ();
}
}
}
Альтернативный способ написания JSP-страниц. XML-синтаксис
Узнал, что есть альтернативный вариант написания jsp-страниц. Вместо простой страницы хтмл со вставками директив, сприптлетов, выражений, можно тоже самое делать но под другими именами. Так называемый иксемельный формат. Только вот таким файлам принято ставить расширение *.jspx:
Написание кастомных библиотек тегов
Библиотеки тегов, добавляют дополнительные теги в джееспе страницу, что позволяет реализовывать дополнительную логику дизайна(манипуляции с данными и отображение их с помощью хтмл-тегов).
пятница, 10 июня 2011 г.
Директива <%@ page...%>
Предназначена для того, чтобы применить определенные настройки для поточной страницы. Также эти настройки применяются ко всем статически файлам, которые подключаются к данной странице (это потому что эти файлы становятся частью этой страницы).
Ктати поточная jsp + подключенные к ней статические файлы называются транслейшин юнит.
Ктати поточная jsp + подключенные к ней статические файлы называются транслейшин юнит.
Директива <%@ incude..%> и теги <jsp:include /> и <jsp:forward />
Директива <%@ incude..%> предназначена для того, чтобы подключать на страницу джееспе статические файлы. А тег <jsp:include /> умеет подключать как статические так и динамические файлы. Отличие между этими файлами в том, что статические файлы просто подгружаются в то место страницы, где располагается директива, и компилируются с самой страницей в один сервлет. Динамические же файлы получают запрос, делают исчисления, и возвращают результат в страницу, и именно результат размещается в странице(получается два отдельных сревлета). Вот поэтому атрибуты директивы <%@ page ... %>, которые определяются в джееспе странице, применяются только к статическим файлам(потому что они являются частью этого же сервлета).
среда, 8 июня 2011 г.
Разница между скриптлетом и выражением. Что за зверь декларация.
Скриптлет -- это участок ява-кода в переделах джееспе страницы, который может проверять определенные условия и выводить группы тегов или нет, делать манипуляции с данными, выборку ресурсов и т.д.
Выражение -- это вывод каких-то данных в указанном месте страницы.
А декларация -- это определение переменной или метода которые будут использоваться на странице.
<%! declaration; [ declaration; ]+ ... %>
Вот примеры деклараций:
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
Выражение -- это вывод каких-то данных в указанном месте страницы.
The map file has <span style="color: blue;"><%= map.size() %></span> entries. Good guess, but nope. Try <b><%= numguess.getHint() %></b>.
А декларация -- это определение переменной или метода которые будут использоваться на странице.
<%! declaration; [ declaration; ]+ ... %>
Вот примеры деклараций:
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
подключение на страницу бина
Подключение бина к джееспе:
<jsp:useBean
id="beanInstanceName"
scope="page|request|session|application"
{ class="package.class" |
type="package.class" |
class="package.class" type="package.class" |
beanName="{ package.class | <%= expression %> }" type="package.class"
}
{ /> |
> other tags </jsp:useBean>
} Виды кроссдоменных запросов
Рассмотрим виды кроссдоменных запросов. Также укажу какие модули для этого можно использовать из YUI3.
Ярлыки:
сайты и безопасность,
XDR,
YUI3
понедельник, 6 июня 2011 г.
Установка полей бинов в JSP1.2
Так в джееспе подключается бин:
Чтобы установить поля бина нужно воспользоваться тегом
<jsp:usebean class="num.NumberGuessBean" id="numguess" scope="session"></jsp:usebean>
Чтобы установить поля бина нужно воспользоваться тегом
<jsp:setProperty
name="beanInstanceName"
{ property= "*" |
property="propertyName" [ param="parameterName" ] |
property="propertyName" value="{ string | <%= expression %> }"
}
/>
Подписаться на:
Сообщения (Atom)
