Выгода, которую дает технология JSP в сравнении с другими веб-технологиями заключается в том, что JSP является платформонезависимой, переносимой и легко расширяемой технологией для разработки веб-приложений.
Основной синтаксис
Комментарии
Комментарии могут быть вставлены двумя способами:
<%-- comment --%>
Или
<!-- comment -->
Например:
<%@ page language="java" %>
<html>
<head>
<title>A Comment Test</title></head>
<body>
<h2>A Test of Comments</h2>
<%-- This comment will not be included in the response --%>
</body>
</html>
Текст, заключенный в блок комментариев будет проигнорирован контейнером JSP. Также надо отметить, что первый вид комментариев будет сохранен в конечном HTML, когда второй никак не обрабатывается и не включается в содержание ответа (response).
Объявления
Служат для объявления переменных и методов, которые будут в дальнейшем использованы на jsp страничке. Можно также использовать один из двух видов написания:
<%! declaration; [ declaration; ]+ ... %>
Или
<jsp:declaration> code fragment [ declaration; ]+ ... </jsp:declaration>
Например:
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
В самом теле объявления, мы можем объявить и проинициализировать переменные, перед их дальнейшем использовании. Сам текст объявления полностью соответствует синтаксису языка Java.
Выражения
Данный тег содержит в себе выражение на языке Java. Выглядеть он будет следующим образом:
<%= expression %>
Или
<jsp:expression> expression </jsp:expression>
Например:
Текущее время:
<%= new java. util. Date() %>
Имя вашего хоста: <%= request. getRemoteHost() %>
Выражение внутри тега вычисляется, преобразуется к типу String и будет вставлено в ответ (response). Заметьте, что выражение может быть только одно, и в его конце нет точки с запятой.
Скриплеты
Позволяют вставить в JSP страницу любое количество выражений и объявлений языка Java.
<% code fragment %>
или
<jsp:scriptlet> code fragment </jsp:scriptlet>
Например:
<% if (Math. random() < 0.5) { %> <B>Удачного</B> вам дня!
<% } else { %>
<B>Неудачного</B> вам дня!<% } %>
Скриплеты также имеют доступ к тем же заранее определённым переменным, что и выражения. Поэтому, например, если вы хотите вывести что-нибудь на страницу, вы должны использовать заранее определённую переменную out:
if (Math. random() < 0.5) { out. println("<B>Удачного</B> вам дня!");}
else {
out. println("<B>Неудачного</B> вам дня!");
}
Скриплеты выполняются во время запроса (request). Если на выходе скриплет порождает какой-нибудь output, то он будет храниться в объекте out.
Директивы
JSP страница может послать сообщение соответствующему контейнеру с указаниями, какие действия необходимо провести. Эти сообщения называются директивами. Все директивы начинаются с <%@, затем следует название директивы и один или несколько атрибутов со значениями, и заканчиваются %>
Теперь рассмотрим пример JSP страницы, которая будет добавлять пользователей в таблицу и отображать ее. Для этого в файл index. jsp скопируем следующий код:
<%@ page import="java. util.*, java. text.*" %>
<%@ page contentType="text/html; charset=windows-1251" %>
<html>
<head>
<title>
Таблица пользователей
</title>
</head>
<body>
<h1>Таблица с данными</h1>
<h2>Добавить пользователя</h2>
<%-- Форма заполнения данных --%>
<FORM name="form1" method="post">
Имя: <INPUT type="text" name="name" size="20" maxlength="20"><BR>
E-mail: <INPUT type="text" name="email" size="20" maxlength="20">
<BR><BR><BR>
<INPUT type="submit" name="submit" value="Добавить"><BR>
</FORM>
<h2>Таблица с пользователями</h2>
<%-- инициализация --%>
<%! boolean flagStart = true; %>
<%! List<String> name_array = new ArrayList<String>(); %>
<%! List<String> email_array = new ArrayList<String>(); %>
<%! List<Date> reg_date_array = new ArrayList<Date>(); %>
<table border="1px" cellpadding="8px">
<%-- Названия колонок в таблице --%>
<tr>
<th>Имя</th>
<th>E-mail</th>
<th>Дата регистрации</th>
</tr>
<%-- Считываем параметры запроса --%>
<% if(!flagStart){ %>
<% name_array. add(request. getParameter("name"));
email_array. add(request. getParameter("email"));
reg_date_array. add(new Date()); %>
<%-- Заполняем таблицу --%>
<% for(int i = 0; i < name_array. size(); ++i){
out. println("<tr>");
out. println("<td>" + name_array. get(i) + "</td>");
out. println("<td>" + email_array. get(i) + "</td>");
out. println("<td>" + reg_date_array. get(i) + "</td>");
out. println("</tr>");
} %>
<% } else
flagStart = false; %>
</table>
</body>
</html>
На данной страничке будет располагаться форма с полями для заполнения и таблица. При нажатии на кнопку типа submit, будет сформирован запрос (request), из которого мы извлечем данные и добавим их в таблицу.
Запустив приложения, результат должен быть следующим:

Рисунок 7.3 – Результат примера jsp
При добавлении пользователей, они должны отображаться в таблице.
Следующий пример демонстрирует поиск слова, введенного пользователем. Поиск и определение частоты встречаемости осуществляется в тексте, расположенном на сервере (массив слов в сервлете).
Сервлет
package app. simple;
import java. util. regex.*;
import java. io. IOException;
import java. io. PrintWriter;
import javax. servlet. ServletException;
import javax. servlet. http. HttpServlet;
import javax. servlet. http. HttpServletRequest;
import javax. servlet. http. HttpServletResponse;
public class SimpleServlet extends HttpServlet {
//создаем строку, в которой будем искать слово
private String text = "Apache Tomcat is an open-source web server and servlet container developed by the Apache Software Foundation (ASF). Tomcat implements several Java EE specifications including Java Servlet, JavaServer Pages (JSP), Java EL, and WebSocket, and provides a \"pure Java\" HTTP web server environment for Java code to run in.\n" +
"\n" +
"Tomcat is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation, released under the Apache License 2.0 license, and is open-source software.";
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response. setContentType("text/html;charset=utf-8");/* Устанавливает тип контента ответа, отправляемого клиенту, если ответ еще не фиксировался.*/
request. setCharacterEncoding("UTF-8"); /* Устанавливает кодировку символов (набор символов MIME) ответа, отправляемого клиенту, например, UTF-8.*/
PrintWriter out = response. getWriter();/*Возвращает в PrintWriter объект, который может отправить символьный текст клиенту.*/
String find=request. getParameter("Find");/* возвращает значение параметров в форматеString */
int l = text. length();//возвращает длину строки
String text1 = text. replaceAll(find, "");// заменяет все вхождения строк, удовлетворяющих регулярному выражению, указанной строкой;
int q = (l - text1.length()) / find. length();//получаем результат
try {
out. println("<!DOCTYPE html>");
out. println("<html>");
out. println("<head>");
out. println("<title>Text Redactor Server</title>");
out. println("</head>");
out. println("<h1 align='center'><font face = 'Calibri'><b>The result of searching:</b></font><br></h1>");
out. println("<body>");
out. println("<center>Number of repetitions of word <span style=\" font-weight:bold; \">" + find + "</span> in the text: " + q +"</center><br></br>");
out. println("</body>");
out. println("</html>");
} finally {
out. close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


