�������� ������������ � Java � ���� 8

�����: ������� �����,

�� ���. ������� ��������

Web-site: http://www.nakov.com

 

�������� �������: 25.11.2002

 

� ����������� ���� �� ����� ����������� ��� Java-���������� ����� �� �������� ����������� ��� ��� ���������, ��������� ������� �� �������� �� ����� � ��������� ��� ����� ����������� ����� �� ������� ������������ � ���������� ���� �� ���� � ���� ������� ���� ��������� HTTP �����. � ���� �������� ���� �� ����� �� ������� ������������ Java Server Pages (JSP). �� ������� ��������� ������ � JSP, �� ������� ����� � �������� ����� JSP � ���������� � �� ������� �������, ����� ��������� �������� �� ��������� �� Web-����������. �� �� ����� � �������� ������ �� Web-����������, ����� ������� Java ������������ �� Web-������������ � ��������.

 

Java Server Pages (JSP)

Java Server Pages (JSP) � ����������, ����� ��������� � �������� HTML �������� �� �� ������� ��������� ��� �� Java, ����� �� ��������� ��� ������ �� ������ ���� ��������. ����������� ��������� ���, �������� � HTML ��������� �� �������� ��� ��������� ������ � �� ������� ���������. HTML ���������, ��������� ���������, �� ������� JSP-�������� ��� �� ��-������ JSP-��. ������ Web-����������� ��������� ���� JSP ���� ��� ��������� ������ �� ������ �� ����, �� ����� HTML ����������, ����� �� ������� � ���� ����, ���� ������ ���������, �������� � ����, �� ���������� �� ��������� � ��������� ������� �� ���. ���� ���� JSP ��������, ����� � ������� ����� Java � HTML, ���� ������������ �� �� �������� � ��������� ��������� ���� HTML ��������. ������ � ���������� HTML � ���� �������� �� �� ������ ��������, � ��������� ��� �� Java �� �� ���� ���� �� ���������� �� ����������� ����� �� ���� ��������, � �� �� ����� ��������. �� ������� �� ����������, � JSP-���� �� � ����� ���������� HTML ����� �� �� ��������� � �������� ����� ���� ���������� �� ���� out.println(�), ������ ������ ���� ���� �� �� �������� ���� HTML �����. ���� ����� �������� �������� �� ������������, ��������� ���������� �� ���� � ��������� ����������� ��.

 

JSP ���������

����������� � JSP-���������� �� �������� � ���o���� <%%> ��������� �� ������ � ����. ��� ���� ������ �� JSP, ����� ��������� �������� ���� � ���, ����������� ��������:

<html>

��� <head><title> Date JSP demo </title></head>

��� <body>

������� The date is:

������� <% out.println(new java.util.Date()); %>

��� </body>

</html>

����� �� ����� �� ������ �� ���� �������� JSP, �� ����� ������� �� ��������� HTML ��������, ���� �� ������� ��������, ����� �� ��������� ��������� � ��������� �������� ���� � ��� ���� ������������ �������� �� Java.

������ ��������� �� Java Server Pages ��� ������ JSP-�������� ����������� �� �������� �������� ������:

request � �� ������ �� �������� � ����������� ��������� ���� ���

response � �� ���������� �� �������� �� ��������

out � ������� ������� ����� �� �������� �� ��������

session � �� ���������� �� ��������������� �����

application � �� ������ �� �������, ����������� ��� Web-������������

�� �������� �� ����������� ���� ������ �� �������� �� ������ ��������� � JSP-����������. � ����� ������ ����������� ������ out, ���� ����� ����������� �������� ���� � �������� ����� �� JSP-����������.

������������ Java Server Pages ���������� �� Web-������������ ����� ��������� � ����� ������. �� ���������� ���-������� �� ���.

 

JSP ������

JSP �������� �� �������� ����� �� ����������� �� ���������� �� Java ����� � �������� ����� �� �������� �� ��������. ���� ����� ���� ���� <%= ����� %>, ����� � ������������ �� ��������� <% out.write(�����) %>. �� ������ ����� �� ����� JSP-��������, ����� ��������� ������� �� 1 �� 100 � ������� ��������:

<html>

��� <head><title> Squares JSP demo </title></head>

��� <body>

������� <% for (int i=1; i<=100; i++) { %>

����������� Square of <%= i %> is equal to <%= i*i %>.

����������� <br>

������� <% } %>

��� </body>

</html>

����������, �� ������ �� ��������� ����������� �� ���������� � Java ���� ������� ����������� � ����������� �� �����, ����� �������� ������ �� �� � � ������� ����, ������ ������ ���� ���� �� � ������� � �������� � ��������� ������� �����, �.�. �� ������� � �{� � �� �������� � �}�. ���� ��� �� �������� ���� 1 ��� HTML �� ���� �� ����, � ���������� ��� �� � ������� � ������� �����. �������� ��-���� ����������� � ��� ���� ���������� �� JSP-���� � �� �� �������� ���� HTML � ������ �� ����� � if-�����������. ����� �� �����, �������� � ���� ����� �� ������� � ���� �������� � �� �������� � ����, � ������ �� �� � � ���� HTML, ���������� ����� ����� ���������. ���� �� �������� � ������, �� ����� JSP ����������� �� ������������� � �������� � ��-����� � Java ����-��� �� ��������, ����� ���� ���� �� ��������� �� �������.

 

��� JSP ����������� �� ������������ � ��������

JSP-���� �� �������, ����� �� ������������� � �������� �� Web-����������, ����� �� ��������� � ���� ���� �� ���������� ���� ���-��������� �������. ������ ���� ������� ������, ����� ����� �� ���������� �� ����������� ����� �� �����, ���� � �� JSP-����. � ����� ����������, ������ JSP ��������, �������� �������� HTML �����, ��������� � ����� JSP ������, �� ������������ � ��������� ��� �� Java � �� ������� � ������ �� �����, ����� �� ������� �� ������ service(�) �� ����� HttpServlet. ������ ���� JSP ���������� ��������� ����� �� GET ���� � �� POST ������ �� ��������� HTTP. �� �������� ����� �� �������, �� Web-�����������, ������ ������������ ���� JSP �������� � �������, �������� ������ ������, �������������� ���� HTML ����� � ��������� ���, ����� ��������� ���� ����� � �������� ����� �� �������� �� ��������. �������� ������� ��� �� ������ JSP, �������� ������ �<html>�, �� ������ ��� ��������������� � ��������� ��� ������� �� out.write (�<html>�). ����� �� �� ���������� JSP-���� � �� ���� ����� � ���� ���-���������� ��������, � ����� ��� ������ ������� �� ����������� �� ���� HTML �����, ��� �� �� �������� out.println(�) ��� out.write(�). ������� ��, ����� ������� ����� �� �������� �� �������� HTML �����, JSP-���� �� ��������� � ����� ������������ ������, ���� �� �� ����������, ��� ����������� ��������. � JSP �� � ����� �� �� ������������ ����, ����� ��������� HttpServlet, ���������� �������� doGet(�), doPost(�), ����� �������� ����� �� response-������ � ���� � ����. ������ ���� ����� �����������. ����� �� �������, �� JSP � ���������� ������ �� ���������� �� ���������� ���� ����������, ������ ��������� ������� ����������� � ������������ ���������� �������� �������� �� ����������� �� ��������� HTML ���������.

��� ����� ��������� �� ���� JSP, Web-����������� �� ������������ � Java ���� ��� �� �������, ��������� �� � �������� ���� ����. ���� ���� ������� ���� ���� � ������� � �� ���������. ��� ����� �������� ���������, ��� JSP-�� �� � ���������, �� �� �� ��������� ��������, � �������� �� ��������� ��������� �� ������� ��������� ���������� ���. ��� JSP-�� � ���������, �� ����������� �� �������������. ��� JSP-���� �� � ���������� �� �� ���������� �������� ��� ����� �������, �� �� �� ���� ��������� �� ���, ����� ������ �� �� ����� ��� ��������� �� ������� ��� �������� Web-����������. ������ JSP-���� �� ��������, �� ���� ����� ������ �����, ���� ���������� � ����� �� ��������� ������, ����� ����� �� ���, ���� �������� ��������� �� ���������� �� ��������������� �����. ��� JSP-���� ����������� �� ������� ����� � ��� session, ����� ��������� ��������������� ����� � ����� �����, � �������� �� ����� �������� ������ �� ������ Web-����������. ����� �� ���������� ���� ����� �� ���������� �� �����, �������� � ������� ���������� � �������� �������������� � Web-������������.

 

JSP ����������

JSP ������������ ������������� ��������� ��������� ��� �� Java, ����� �� ������� � ���� �� ����������� �� JSP-�� �������, �������� � ����� �� ��������, ����� �� ��������. �� ������� �� �����������, ����� �� ������� � ������ �� �����, ����� �� ���� �� ������ jspService(�) �� ����� HttpServlet, JSP ������������ �� ������� �� � ������� �����, � �������� � ������ �� �����. ����������� JSP ������������ �� ������� �� ��������� HTML ����� ���� ���� <%! � %>. ��������� �� ���-����� �� ���������� �� ������, ����� ���� ���� ����� �� �� �������� �� �����������, � ���� � �� ����������� �� ����-���������� � ����� �� ��������, ����� �� �������� �� �������� JSP. ��� ���� ������ �� JSP, ����� �������� � ��������� 10 �������� �����, ����� �� ����� � ����� 0 � 999:

<%!

private java.util.Random mRandomGenerator =

new java.util.Random();

 

private int getRandomNumber(int range) {

��� return mRandomGenerator.nextInt(range);

}

%>

<html>

��� <head><title>Random numbers demo</title></head>

��� <body>

������� <% for (int i=1; i<=10; i++) { %>

����������� Random number #<%= i %> is

����������� <%= ""+getRandomNumber(1000) %>.<br>

������� <% } %>

��� </body>

</html>

����� �� ����� �� ����, � ���� ������ � ���� <!% � %> �� ��������� � ������������ ����� �� ����� java.util.Random � ����� � ����� �� ��������, ����� ����� �������� ���� ����� � ������� ��������. ���� ���� ���� ����� �� �������� �� JSP �����, ����� ��������� �������� ����� ����� 0 � 999. ���� �� �� ��������, �� ������������ �� ����� java.util.Random ����� ���� ������� ��� �� �����, ������������ �� ����� �� ������, � ����� ���� ���� ����. ��� ���������� ������������ �� Java � ���������� ����� �� �� �������� ������ ���� ��������� ���� import, �������� �� ��� �� �����. ���� ���� ����� �� �� ��������� ��������� �� ���������� ������ ���� �� �������� ���� ������� �� ��� ��������, �� ����� �� �����������. � JSP ���� ��� ����� �� import-���� �� ������. ���� ����� � ��������� <%@ page import="���_��_�����" %>, ����� �� ����� ���������� � �������� �� JSP-����������. �������� �������� ��� � JSP ��������:

��� <%@ page import="java.util.*" %>

� ������������ �� ����

��� import java.util.*;

������� � �������� �� �������� ����� ������������ �� �����, ����� �� �������� ��� ��������������� �� JSP-�� � �������. ���� ������� ������� �� JSP ��������� ���� �� �� ������ � content-type-� �� �������� ��������. �������� ��� ������ �� ������ ��������, ����� �� �� ������������ �� Web-�������� �� ������� ���� ���� �����, � �� ���� HTML, ����� �� ������� �������� �� ���� �� ��������� ������ �� JSP ���������:

��� <%@ page contentType="text/plain" %>

� ������� �������� ����� �� �� ������� � ����� ��������� �� JSP-����������. �������� ���������

��� <%@ page session="false" %>

������, �� JSP ���������� ���� �� �������� �����, � ����� �� �������� �������� �� ��� � ������������ �������� �� ��������� ��-�����. ���� ��������� ������ �� �� ����� ��� ������ JSP ��������, ����� �� ��������� ��������������� ����� (������ session). ���� ������� ������� �� JSP ����������, ����� ���� �� �� ������ �� ������� �����, � ���������� �� ��������� �� ������ (error page). ��� � �������� �� ���� JSP �������� �� ����� ���, ����� �������

��� <%@ page errorPage="�����_���������_URL" %>

�� ����� ���������� (exception), ���������� �� ����� �� ���������� �� JSP-��, ����� �� � ���������� �� ���� JSP, �� ������� �� ���������� �������� �� ��������� �� ������. �������� �� ���� �������� �� ��������� �� ������ � �� ������ �������� ��� ������, ��������� �� ����������� � ���������� �� �� ������� �� ������� �������������� �� ����������� �������. ����� error �������� ������ �� ������� ���� <%@ page isErrorPage="true" %>, ����� ������, �� ���� � �������� �� ��������� �� ������. � ������ �������� � �������� ��� ���� ������������ ����� exception, ����� ������� ���������� ���������� ����������, ����� ������ ��������.

 

JSP � JavaBeans

������ JavaBeans �������������� bean-����� ������������� ���������� Java �������, ����� ��������� �� �������� ������������ �������: ���� ����������� ��� ���������; ����� �������� ����-����������; ����� �� ���� �������� (properties), ����� �� �������� ���� �������� ������ � ����� getXXX()setXXX(�), ������ XXX � ����� �� ����������� property. � JSP ���������� ����� �� �� �������� � ��������� Java bean-��� ���� ���� <jsp:useBean � />. �������� ����:

������ <jsp:useBean id="userInfo" class="com.nakov.example.UserInfo" />

��������� ��������� �� Java bean � ��� userInfo �� ����� com.nakov.example.UserInfo, ����� � �������� �� ������ ��������� �� JSP-��. ���� ���������� � ����� ������������ �� ������������ ������������ �� ����, ����� � �������� ���� �� ����� ���� ������� ���:

������ <% com.nakov.example.UserInfo userInfo = new com.nakov.example.UserInfo(); %>

�� ������� �� ���������� ������������ �� �������, ����� <jsp:useBean � /> ���� ����� ������������ �����������. ���� �� ���� ����������� � ���������� �� ������ �� �������� �� bean-����� ���� �������� �scope�. ���� ������ ���� �� ���� �������� �������� (page scope), �������� ������ (request scope), �������� ������������� ����� (session scope) ��� ������ Web-���������� (application scope). ���� bean �� ������� ������ ��� ������� �� ����������, � ���� ���� �� �� ���������, ������ �� ������ �� �������, � ����� � ���������. �������� ��� �� �������� bean � ������ �������� ����������, ��� �� �� ������� ��� ������� �� ���������� � �� � �������� �� ������ JSP-�� � �������� � ������������. ������ �� bean-� �� �� ���������� ���� ������ � ������� �� ������������ � �� �� ������� ��� ������� �� ���� Web-���������� ��� ��� ������� �� �������. ��� �� �������� bean � ������ �������� �����, ��� �� �� ������� ��� ����� ����� ��������� � ������� �� ����� ���� ����� � �� �� ��������� ��� ����������� �� �������, �.�. ���� bean �� ��� �� ���� ��������� �� ����� ������������� ����� �� Web-������������. �������� request � �������� page ����� �� �������� �� ���� �� �� ������������ � ����� ���� � ������� �� ���� ���������. Bean-����� � ������ page ����������� ���� ���� �������, � ����� �� ��������� JSP-���������� � �� ���������� ��� ����������� �� ������� ����������. Bean-����� � ������ request ����������� ���� ������ ����� �� ������������ �� �������� �� ����������� HTTP ������, ���� ��� ���� ������� �� �������� � �������� �� ���������������� ���������� �� ������� JSP-��.

�� ������ �� �������� �� ���� bean (�������� properties), ��� ��� JSP ����: <jsp:getProperty � /><jsp:setProperty � />. �� �� ������������ �� ��������� ������ �� �������� �� bean-�. �������� �������

��� <jsp:getProperty name="userInfo" property="name" />

� ������������ �� ������

��� <%= userInfo.getName() %>

� ����� ������ ���������� ����� �� �����������, ����� �� ������ �� bean-� userInfo. ������� �� �������� <jsp:getProperty �/><jsp:setProperty � /> � ����, �� �� � XML ������, ����� �� ����� ��-����� �� ���������� �� �����, ����� �� � ����������. ����� ���� �� ���� � ������������ �����������. ��� � ������ �� �������� �� �������� �� ���� � bean:

��� <jsp:setProperty name="userInfo" property="password"

��� value='<%= request.getParameter("userPassword") %>' />

����������, �� � ���������� �� �������� value �� ���� <jsp:setProperty � />� ���� �� �� ��������� JSP ������, � �� ���� ���������� �����.

������ ���� �� ��������� ����, �� ����� ���� �� �� ��������� ������������, ����� �������� JavaBeans ��������� � JSP ��� �������������� Web-����������, � ����������� �� �������� �� bean-��� �� ���������, ��������� ��� ������ JSP ��������. ���� ���� �� ����� ���� �������� �param� �� ���� <jsp:setProperty � />. �������� �������� ���:

��� <jsp:setProperty name="userInfo" property="password" param="userPassword" />

������� � ������ password �� bean-� userInfo ����������, �������� � ���������� � ��� userPassword �� �������� ��� ����������. ��� ����� �� ������ � bean-� � ������, �� ����� ����������� ������������ � ����� �� ���������� ��������, ��������� �� � ����������.

������ ����� ���������� ��� ������������ �� JavaBeans ��������� � JSP �, �� ���� �� �� ������ ����������� ��������� �� ������ ������ �� ����� bean �� ��������� �� �������� ��� ������ �����. �������� ��� ����� bean-� userInfo, ����� ������� �������� name, passwordage, ����� �� �� ������� �� ����������� ��� ���������� ��������� ���� ������� ���:

��� <jsp:setProperty name="userInfo" property="*" />

�� �� � ������� �����������, � ���������� ��� ���������� �� �� ��������� ��������� � ����� name, passwordage. ��� ������� �� �������� � ������� �� ����������� ��������� �� ���������, ��� ����������� ����� ������ �� ������� ��� ��������. ��� ����� �� ���� ��������� � ������ �� bean-�, � ����� �� ������ �� �� �������, ���� ��� � ����� �������, ������ �������� ������ ���������� ��� � ���������� ����, ��������� �� ����������� �� ���� ���.

������ �� ������, ��������� �� �������, ����� �� �� �������� ������, �� ������������ �� Java bean-��� � ����� ������� �� �������� �� �������� �� �������������� � Web-������������. ���� ����������� ���������� �� JavaBeans � JSP-�� �� ���� ���������� �� Web-���������� �� ������� ���������� ������ �� ������ Web-����������, ��� �� ���� Java � ��� �� ������� ��������� �� JSP ��������������, � �� ����������� �� ���� ���������� �� ���� ����� �� ���� � ������� ������� (bean-���) ����� JSP-��, ���� ���� ����������� ���������� �� ����� ���, � �� ����� HTML ��������.

���� ������� ��� � JSP ���������� � ����� <%@ include file="relative_url" %>. ��� ��������� ����������� �� ������������ ���� �� �������� ������� � ������ JSP ��������. ����������� ����� �� ����� �� ���������������� �� JSP ���������� � �������. ���� ��� � ������� �������� ������ Web-������������ ������� ����� JSP ��������, ��������� ���� ���������. �������� ��� ������ � �������� �� ����� �������� �� ������ Web-���������� �� ��� ����, ����� ����� �� ������� ����, ����� ������� ���� ���� � ������� ���� � �� �� ��������� ��� ����� JSP ���� � ���� <%@ include � %>. ���� ���������� ��������� ���������� ���������� �� ���� �������� ��������� ��� (code reuse), ����� ��� ������ ������� � ����� ����� ���������� �������. �������� ���� � �������� �� JSP ��������� �� �� ������ ������� ���:

��� <%@ include file="menu.jsp" %>

��� ������� ������������ �� ����� menu.jsp � �������� JSP �������� �� ����� �� ����������. ����� ���� ���, �� ��������� �� �������� ��� � �������� JSP �������� ��� � ��� ���� ������� ���: <jsp:include page="relative_url" />. ��� ��������� ���� <%@ include � %> ���������� ���� �� ������� ������ ��� ������� ���������� �� JSP-�� � ���� ���� ���� �� ���� ��������, ��������� �� �� ��������� �� JSP-�� (static include). ��� ��������� �� ���� ���� <jsp:include � /> ���������� ���� �� ��������� ��� ����� ������ ��� JSP ���������� � ���������� �� ���� �� ������ � ���������� (dynamic include). ����, ��� ���������� ���� ���� ��������, ��������� �� �������� � �� ������ JSP-��, ����� �� ��������. ����� ���� ���� <jsp:include � /> ����� �� �� �������� ��������, CGI ��������� � ����� �������, �������� ���� ���������� URL, � �� ���� ��������� �� JSP ���������. ��� � ������ �� ��������� �� �������� �������� � �������� �� JSP ��������:

������ <jsp:include page="header.jsp" flush="true"/>

��������� flush=�true� � ������������ � ������ ������ �� �� ������� ��� ���������� �� <jsp:include � /> ����. �������� false �� � ���������.

��� ���� ������� ��� � JSP ��������� � ����� �� ������������ ��� ����� JSP <jsp:forward page="relative_URL"/>. ��� ���������� �� ���� ���, ���� �������� �� �������� �� ������� �� ����� ���������� �� ������������ �� ���������� URL. ��� ������ ������� ����� ������������ ���� request.sendRedirect(�) (browser redirection) � <jsp:forward � /> (server redirection). ������� request.sendRedirect(�) ������ ����� �� �������� �� ������ ���������� URL ������ ���� URL, ����� � �������. ���� ����� ���� �������� ����� ������� � ��� 302 �� HTTP �������� (document temporary moved). ������ ������������ � ������������ �� ���� ������������ �� ������ ���������� URL � address bar-� �� �������� � �� �� ������. �������������� � <jsp:forward � /> ������ �� ���� �����. ��� ���� ��������� �� �������, �� �� ������� �� � ��������� ������������, � ������ �������� ��������� �� ������������ �� URL-��, ��� ����� � ��������� ������������ � <jsp:forward � />. � ����� ������ � address bar-� �� �������� URL-�� �� �� �������.

 

�������� ������ �� Web-����������

�� �� ����������� ������ �������, � ����� �� ����������, �� ������� ���� �������� ������������������ Web-���������� � �� �� �������� � Web-���������� Tomcat. �� �� �������� �� ������ ������������ �� ����� ����� ����������� �����. ������������ ������ �� ��� ��� �������� � ������ �� ������� ��� ������, � ������� �� ������ �� ����������� � �������� �� ���� ���������. �� ������� ��� ������ �� ������� ������������� ��� � ������. ��� ���������� ��� ������� � ���������� ������, ��������� ������ �� ����� ����������� �� ���������� �� ������ � �������� �� ���������. � ���� �������� ������ �� �� �������� � ������� ������ ��������� � �� ��� ����� �� �������� �� ���� ���������. ����������� �� ������� �� ���� � ����������. �� ������� ����������� ����� �� �� ����� ���� � ������� �� ������������, �.�. �� ����� ��� ������������ �� �������. ��������� �� ������ �� ��������� ������ �� ������ �� ������������� ����, ����� �� �� ������ ���� ��������� ��������. ��� ��� �������� ���� �������� ������� �� ��������:

<%-- File name: login.jsp --%>

<%@ page contentType="text/html; charset=windows-1251" %>

<html>

<head><title>Login</title></head>

<body>

��� <%@ include file="header.jsp" %>

��� <div align="center">

��� <%

��� String userName =

������� request.getParameter("user");

��� String password =

������� request.getParameter("pass");

��� if ((userName!=null) && (password!=null)

��� ��� ��� && (userName.length()>0)

��� ��� ��� && (userName.equals(password))) {

��� ��� session.setAttribute("USER", userName);

��� ��� response.sendRedirect("main.jsp");

��� }

��� if (userName!=null) {

��� %>

������� ��������� �����. �������� ������.<br>

��� <%

��� }

��� %>

��� <form action="login.jsp">

������� <input type="text" name="user"><br>

������� <input type="password" name="pass"><br>

������� <input type="submit" value="����">

��� </form>

��� </div>

</body>

</html>

 

<%-- File name: main.jsp --%>

<%@ page contentType="text/html; charset=windows-1251" %>

<%@ page import="java.util.*" %>

<%!

��� private String getMsgsHtml(ArrayList msgs)

��� {

������� if (msgs.size() == 0) {

����������� return "���� ���������.";

������� }

������� String resultHtml =

����������� "<table border=1 width=100% " +

����������� "cellspacing=0><tr><td>����</td>" +

����������� "<td>���������</td></tr>\n";

������� for (int i=0; i<msgs.size(); i++) {

����������� Message msg = (Message) msgs.get(i);

����������� resultHtml = resultHtml +

��������������� "<tr><td>" + Utils.htmlEscape(

��������������� msg.getSubject()) +

��������������� "</td><td>" + Utils.htmlEscape(

��������������� msg.getContents()) +

��������������� "</td></tr>\n";

������� }

������� resultHtml = resultHtml + "</table>\n";

������� return resultHtml;

��� }

%>

<html>

<head><title>View Forum</title></head>

<body>

��� <%@ include file="header.jsp" %>

��� <div align="center">

��� <%

��� String userName = (String)

������� session.getAttribute("USER");

��� if (userName==null) {

��� %>

������� ������ ������ �� ���� ��������.<br>

������� ���� <a href="login.jsp">������</a>

������� � ���������.

��� <%

��� } else {

������� ArrayList msgList = (ArrayList)

����������� application.getAttribute("MESSAGES");

������� if (msgList == null)

����������� msgList = new ArrayList();

������� %>

 

������� <%-- Add the new message if any --%>

������� <jsp:useBean id="msg" class="Message" />

������� <jsp:setProperty name="msg" property="*" />

������� <%

����������� if (msg.getContents() != null) {

��������������� msgList.add(msg);

��������������� application.setAttribute(

������������������� "MESSAGES", msgList);

����������� }

��� ��� %>

�������

������� <br>

������� <%-- Print all the messages --%>

������� <%= getMsgsHtml(msgList) %>

������� <br>

�������

������� <%-- Add new message form --%>

������� <form action="main.jsp">

������� <table border="0">

������� <tr><td>����:</td><td>

������� <input type="text" name="subject">

������� </td></tr>

������� <tr><td>���������:</td><td>

������� <input type="text" name="contents">

������� </td></tr>

������� <tr><td>&nbsp;</td><td>

������� <input type="submit" value="������">

������� </td></tr>

������� </table>

������� </form>

��� <%

��� }

��� %>

��� </div>

</body>

</html>

 

<%-- File name: header.jsp --%>

<table border="0" bgcolor="#66CCFF" width="100%">

<tr><td align="center">

���� ����� - (c) ������� �����, 2002

<%

��� String currentUser = (String)

������� session.getAttribute("USER");

��� if (currentUser != null)

������� out.write(" - ����������: " +

������� Utils.htmlEscape(currentUser));

%>

</td></tr>

</table>

 

// File name: Message.java

public class Message {

��� private String mSubject;

��� private String mContents;

���

��� public String getSubject() {

������� return mSubject;

��� }

��� public void setSubject(String subject) {

������� mSubject = subject;

��� }

��� public String getContents() {

������� return mContents;

��� }

��� public void setContents(String contents) {

������� mContents = contents;

��� }

}

 

// File name: Utils.java

public class Utils {

��� public static String htmlEscape(String s) {

������� StringBuffer out = new StringBuffer();

������� for (int i=0; i<s.length(); i++) {

����������� char ch = s.charAt(i);

����������� if (ch == '\'')

��������������� out.append("&#39;");

����������� else if (ch == '\"')

��������������� out.append("&#34;");

����������� else if (ch == '<')

��������������� out.append("&lt;");

����������� else if (ch == '>')

��������������� out.append("&gt;");

����������� else if (ch == '&')

��������������� out.append("&amp;");

����������� else

��������������� out.append(ch);

������� }

������� return out.toString();

��� }

}

�� �� �� ������ ������������ �� �������� ��� Tomcat, ������ �� �� ������� ��������: �� �� ������� ������������� � ��� forum%TOMCAT_HOME%/webapps � � ��� �� �� ������� ������ JSP �������. � ������ ���� ���������� forum ������ �� �� ������� ������������� � ��� WEB-INF, � � ��� ������������� classes. ����������, �� ��� �������� ����� ����� � ������ �����, ������� ��� ������ ������ Web-���������� �� ������ � ��� Linux. � ��������������� classes ������ �� �� ������� ������ Java ������� � �� �� ���������� �� class �������. ���� � ������, ����� � ���������� �� ���������� �� ������. ����������� �� ������������ �� � �������� ��������, � �� ������ �� �������������� �� Web-���������� �� ��������� �� J2EE. ��� ������������ ���������, �� ��� ������������ forum �� ������ ������ ��� �������� � ������������� �� ���� Web-���������, ������������ �� �������� �� ����� �����. ���� ���� �� �������� �������� Tomcat, ������������ � �������� �� ����� http://localhost:8080/forum/login.jsp. ��� � ������ �� �������� ����� (login.jsp):

���� ������� ������� ��� ������, �� ��������� �� ������ �� ����������� � �������� �� ��������� (main.jsp):

������ �� ���������� ��-�������� ���� �� ������ �������� Web-����������. ��������� �������� login.jsp ������� ��� �������� �� content-type-� � ������ �� �������, ����� �� �� ��������� ��� ��������� �� ����������. ������� � ������������ ������ ������� windows-1251, ����� � ������������, ���������� � �������� �� ������ � �������� ��� Windows. ���� ������ ������� �� �������� �� ������ ���������� Web-�������� � ������ ���������� � ���������� �� �������� �� �� ������ �������� ��� �� � ����� ������������ �� ������ ������� ������������ ���������. ������ ���������� ������ �� HTML ��������, ���� ����� �������� �� ������� ������ header.jsp. ���� ���� �� ������� � �������� �� ����� �������� �� ������������ � ����� �� ������������ �� ���������� �������� ����, � ����� ���� ����� �� ������������, ����� �� ������� ���������� � ��� ������� ����� ������������ ����������. ������ ��������� �� ����������� ������������� ��� � ������, ��� �� ��������� ������. ������ login.jsp ������ � ��� �������� � ��� ��������� � � ���������, �� ���������� ��������� ������� ������. ��� �� ��������� ������������� ��� � ������, �� �� ��������� (�� �������� ������ �� ��������� ���� �������� � �� �� ������ ������) � ��� ����������� � �������, � ������� �� ������� ����� �� ����������� ���������� ��� ���� �USER� � ��������� �� ������� �� �������� ��� ��������� �������� �� ������������ (main.jsp). ��� ����������� � ���������, �� ��������� ��������� �� ������ � �� ������� ������� �� ��������� �� ���������� � ������. ��� main.jsp �� ������ ��� ���������, �� ������� ������ ����� �� ��������� �� ���������� � ������, �� ��� ������� ���������. ���� ����� � ��������� �� ������� �������, �������� �� �����������, ��� ������ ��������, � ����� �� ������ ������ �� (index.jsp). ���� ������������ ���� �� ����� �������������� ����� ����� �� ������� � ���������, �� ������� �� �������� �������� �� ������ ���� ��� ������� ���������. ��� ��� �� ������� �� ����� � ������ �������� URL-�� �� ��������� �������� http://localhost:8080/forum/main.jsp, ��������� ���� �� �� �����, ������ ���� �� ������ ��� �� ����������, �������� � ������� ��� ����� �USER�.

������ ���� ���� ���������� �������� �� ������������ � �������� �������� main.jsp. �� ���� ���� �� �� ���� � ��������� ��� ��� ���������. ��� �� ������ ��� ���������, �� ������� ������ ��������� �� �������. ��� �� ������ � ��������� ���� � ���������, �� ������ ���� ��������� � ������� ��� ����������� � ������� ���� ������. ������� �� login.jsp ������������ �� ������ �������� �������, ����� ��������� ���������� ��������� �� ����������. ���� ���� �� ������� ���������� ���� �� ���������� ���� ���������� ��������� �� ����� header.jsp. ������ ������� �� ����� �� ����������� ���������� �� �������� �����. ���� �� ����� ���� �� ������� ���������� �������� ��� ���� � ��� �USER� � �������. ��� ������������ � �������� ������� ���� login.jsp, �� �������� ������ �������� �� ���. ��� ������������ �� � ���������, ������ �������� ���� �� ���, �.�. �� �� ������ �������� null. � ���� ������ ������������ �� ��������� �� ���� ����� �� ������ � �� �������� �� ����� � ��������� ���� ��������� ��������. ��� ������������ � ���������, ��� ��� ������ � ��� ��� ���������� � ��������� ������ �� �������� �� ���� ���������, ��� ���������� � �������� ��� ���������. �� ��������� �� ����������� �� �������� JavaBean ����� Message, ����� �� ���������� � ���� <jsp:UseBean � />. ���� ���� ����������� �� �������� � bean-� ���� ��������� �� ����������� ����������� �� ��������� � ���� <jsp:setProperty � />. ����������, �� bean-� Message ��� ������, ����� ����� ������������ �� ������� �� ���������� ���������. ��� � ����� �������� ��������� �� ���������� �� ���������, � ������ contents �� bean-� �� ��� ��������, �������� �� null. ��� ���������� � null, �� �����, �� ���������� � �������� � ��� ��������� �� ������ ���������, � �� � ��� �������� �� ���� ���������. �� ���������� �� ����������� � ������������ �� �������� ������ (java.util.ArrayList), ����� �� ��������� � ������������ ��� ���� �MESSAGES�. ����������, �� �������� ��� ����������� �� ��������� � ������������, ����� �� ����� �������� �� ������ �����������, � �� �� ��������� � �������, ����� ����� �� �������� ����������. �������� � � ������������ �� ���� ���� ��� ��� �MESSAGES�. ���� ��������, �� ��� ��� ����� ���������� �� � ������� ������� ���������. ��� ������ ��� ��������� ����, ��� �� ������� � ������������ � ������. ���� ���� ��� � ��������� ���� ��������� ���� ���������, �� �� ������ � ������� � ���������� ��� ��� �MESSAGES� � ������������ �� �����������. ���������� ���� � �������� ���� ��������� ��� ��, ������ ��������� �� ��������. �� ����� �� �������� ���������, ���������� ���� JSP ���������� � ���� <%! � %>. �� ����� ���� ��������� ������ �� ��������� � ����� ���� �������� HTML �����, ����� ������������ ������������ �� ���� ��������� ��� ��� �� �������. ���� ���� �� �������������� �� ����������� � JSP ���������� � ����������� HTML ������� �� �������� �� ���� ���������. ���� ����� ������� ���� ��� ������ � ����� �� �������� �� ���������, ����� ������� �������, ��������� �� ����������� ��� ������ JSP �������� (main.jsp). ����� ���� ���������, ���� ��������� �� �������� � bean � �� ���������� �� �������� ����� ���� ����. ������ �� ������� ��� �� ������������ ����������� ��� ��� �� HTML. ������� getMsgsHtml(�), ����� �� ��������� ���� ������ �� ����� �� JSP ���������� main.jsp, ����� ��������� ���� ��������, ����� �� � ������� ���� ��������� �� � ������. ��� � ������, ����� ��������� ���������, � � �������� ������ ������� ������� � ������� � ��� ���������� �� ������� ��� ����������� ����������� for-�����. ���� ����� ����� ����, ����� �� ����� ��� ������������� �� ����������� � ���������, ����� �� ��������, � �� �� ������� ������������� �� HTML ����������� ������� � ������ ���������� � HTML (HTML escaping). ����� ������ �� ������� ���� <, >, & � ����� �����, ����� ����� �� �������� HTML ���������, ��� �� �������� � ���� ��� �� �� escape-���. �������� ��� ����� ������ ��� ������ ��������� ��� ���������� �</td></tr></table>������!�, ���� �� ������� ��������� � �� ���������� ������ �� ����� ����� ���. � HTML ��� ��������� ����� �� ��������� �� �������� �������, ������� HTML escaping, ����� ������ �� �� �������� ������, ������ �� �������� ������, ����� ���� ����� �� �������� ������ �������. �������, �� ���� ������� �������� ����� � 100% �� Web-������������, ������������ � Java, � JSP/Servlet API-�� ���� ���������� �����, ����� �������� HTML escaping. ������� � �� � �������, ���������� ���������� �� PHP ��������� html_escape(�) ���� � ��� ������ ���� �� �� �� �������. ���������� ���� ���������� ���� java.net.URLEncoder, �� ��� ����� �� ���� ��� escaping � URL escaping, ����� �� �������� �� �������� �� ������������ ��� ��������� �� HTML �����. �� �� ���� �� �� �������� �� ������ JSP-�� �� ������������, ���� ����� � ��������� ���� �������� � ������� ���� � ��� Utils. ��� ������ �� �� ������ HTML escaping, ����� � ����� ��������, ��� ������ Web-����������, ����������� �������� ������ htmlEscape(�), ����� � ����� � ���� �� ����-��������, �� �� �� ������ ����� �� �� �� ������ ���� ��� �� �� ������� � ��������.

�� �������� ��-���� ������ ������������ �� ����� header.jsp, �������� �������� �� ���, ����� � ������������ �� ���� � �������� �� ����� �������� �� ������������. � ���� ��� �� ��������� ���� � ������� ��� ����������� ���������� � ��� ���, ����� ������������ �������� �����, �� ��������� � ����� �� �������� ����������.

���������� ���������� ��� ����� ���������� ��������������, ������ ������������ ��� ���� �� �� ���� ����� ������ � ������������ �� ��������� �������� ��-������ ���� �� JSP �������� � ��������� ������� � ���������� ������. �������� �� �������� �� �� ����� �� �� ������� � �������, ���� �������, �� ��� �������� ��������� �� ���������� �������� ������ ��������� ������������ � Java�, ���� ���� �� �� ��������.

� ���������� ������ �� ���������, �� JSP ������������ �� ���������� �� Web-���������� � ���� �� �������� � �������� ����� � � ��������� �� ��-����� �� ASP, PHP, Perl � ColdFusion. ��������� �� ��������� �� ��-�������� � ��-�������� ���������� �� �������� ������ JSP ������ Perl � PHP, ������ J2EE ����������� �������� �� ������ �����, ����� ���� ���� ���������� � ����������, ���������, ������������, ��������������, ������������ � �.�.