• Элементы HTML-управления должны находиться в форме.
• Для формы указывается адрес для перехода.
• Значения элементов ввода записываются в параметры запроса.
• В новой странице значения элементов ввода автоматически не заполняются.
• Элемент управления, активация которого привела к смене страницы, вносится в параметры запроса.
Пример 26.Взаимодействие с HTML -формами.
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<form name="SimpleForm" action="index.jsp">
<input type="text" name="NameEditor" value="" size="30" />
<input type="checkbox" name="SomeCheckBox" value="ON" />
<br>
<input type="submit" value="Action 1" name="Action1Button" />
<input type="submit" value="Action 2" name="Action2Button" />
</form>
<% Enumeration names = request.getParameterNames();
if (names.hasMoreElements()) {
String name = null;
String value = null;%>
<table border="1">
<thead>
<tr>
<th>Parameter name</th>
<th>Parameter value</th>
</tr>
</thead>
<tbody>
<% while (names.hasMoreElements()) {
name = (String) names.nextElement();
value = request.getParameter(name);%>
<tr>
<td><%=name%></td>
<td><%=value%></td>
</ tr >
<% }%>
</ tbody >
</ table >
<% } %>
</ html >
Рисунок 7 – Форма при первом запуске.
Адрес:http://host:8080/WebApplication1/index.jsp
Рисунок 8 – Форма после нажатия кнопки.
Адрес: http://localhost:8080/WebApplication1/index.jsp?NameEditor=
Any+entered+text&SomeCheckBox=ON&Action2Button=Action+2
Недостатки раннего JSP:
• Смешение Java-кода и тегов страницы.
• Много «типовых» действий.
• «Некомфортность» работы на Java в ходе обработки запросов из-за:
l Громоздкости кода.
l Необходимости знания особенностей преобразования в сервлет.Основные идеи смены парадигмы:
• Альтернативный языкExpression Language.
• Использование библиотек тегов, особенно JSTL – JSP Standard Tag Library.
• Ориентация на компоненты в смысле JavaBeans и использование понятия свойств.
• Общие принципы остаются прежними.
Пример 27. Как писали раньше
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title></head><body>
<h1>Hello page</h1><br/>
<% if (request.getParameter("name") != null) {
out.print("<b>Hello, ");
out.print(request.getParameter("name"));
out.println("!</b><br/>");
} %>
<form name="oldform" action="old.jsp">
What's your name?<br>
<input type="text" name="name" value="" size="50" />
<input type="submit" value="Tell name" name="tell" />
</ form ></ body ></ html >
Пример 28. Как пишут теперь
<%@ taglibprefix =" c " uri =" http :// java . sun . com / jsp / jstl / core "%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title></head><body>
<h1>Hello page</h1><br/>
<c:if test="${!empty param.name}" var="val" scope="request">
<b>Hello, ${param.name}!</b><br/>
</c:if>
<form name="oldform" action="old.jsp">
What's your name?<br>
<input type="text" name="name" value="" size="50" />
<input type="submit" value="Tell name" name="tell" />
</form>
</body></html>
Expression Language
• Является альтернативой выражениям и скриптлетам.
• Динамическое чтение данных из:
l JavaBeans-компонентов.
l Неявных объектов.
l Различных структур данных.
• Динамическая запись данных в:
l Формы.
l JavaBeans-компоненты.
• Вызов статических и публичных методов.
• Динамическое выполнение простых операций.
Виды выражений EL
• По моменту вычисления:
l Немедленное вычисление.
l Отложенное вычисление.
• По цели выражения:
l Обращение к данным.
l Вызов метода.
• По режиму доступа:
l Только чтение.
l Чтение и запись данных.
Дата: 2019-02-19, просмотров: 364.