Язык Java. JSP. Java. Синтаксис. Перевод строчки эквивалентен пробелу Регистр в именах различается // Комментарии до конца строки /* Многострочные комментарии */ Типы данных Примитивные типы данных: boolean char – 2 байта byte – 1 байт: целое -128 ÷ 127 short – 2 байта: целое -215 ÷ 215 -1 int – 4 байта: целое -231 ÷ 231 -1 long – 8 байт: целое -263 ÷ 263 -1 float – 4 байта double – 8 байт void Объекты Определение новых типов данных class имя_класса { тело_класса } тело_класса – объявления полей и методов класса Поля: данные любого типа (ссылки) Методы: возвращаемый_тип имя_метода(аргументы) { тело } возвращение значения – return значение Переменные Объявления переменных: тип имя_переменной; тип имя_переменной = значение; Объявление не создаёт экземпляра объекта! Создание объекта: имя_переменной = new тип(аргументы); - вызов конструктора Поля объекта: имя_переменной.имя_поля Пример программы // HelloDate.java import java.util.*; public class HelloDate { public static void main(String[] args) { System.out.println("Hello, it's: "); System.out.println(new Date()); } Сервлеты import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Hello extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html"); out.println( "<head><title>Hello!</title></head>"); out.println("<body><h1>Hello!</h1></body>"); out.println("</html>"); } } Классы сервлетов Пакет javax.servlet: HttpServlet HttpServletRequest HttpServletResponse Cookie Session и т.д. Предопределённые объекты page типа java.lang.Object config типа ServletConfig out типа jsp.JspWriter application типа ServletContext session типа http.HttpSession pageContext типа jsp.PageContext response типа HttpServletResponse request типа HttpServletRequest Типичное использование предопределённых объектов <%@ page import="java.util.*" %> <%@ page contentType="text/html; charset=Windows-1251" %> <%@ page session="false" %> <% Cookie[] cs = request.getCookies(); %> <% Enumeration flds = request.getParameterNames(); %> <% String str=request.getParameter("name"); %> <% response.addCookie(cookie); %> <% response.setContentType("image/gif"); %> <% response.setHeader("Content-disposition","attachment; filename=data.txt"); %> <% out.println(str); %> <% Session ses = session.getId() %> <% session.setAttribute("My dog", new String("Ralph")); %> <% Str dogName = session.getAttribute("My dog") %> Директивы include и forward <%@ include file="url" %> = <jsp:directive.include file="url"/> – подключает файл при трансляции JSP в сервлет <jsp:include page="относительный URL" flush="true"/> – подключает файл при обработке запроса <jsp:forward page="относительный URL"/> – перенаправляет запрос на другую страницу Пример: опрос За какую партию Вы намерены голосовать: 1. Единая Россия 2. Справедливая Россия 3. КПРФ 4. ЛДПР Проголосовать Рисование формы <%@ page import="java.util.*" %> <%@ page contentType="text/html; charset=Windows-1251" %> <html><body> <H2>Опрос: выборы в Госдуму</H2> <%! String[] parties = {"Единая Россия", "Справедливая Россия", "КПРФ", "ЛДПР"}; %> <form method="GET" action="anketa.jsp"> <P>За какую партию Вы намерены голосовать:</P><BLOCKQUOTE> <% for(int i = 0; i < parties.length; i++) { %> <INPUT type="radio" id="party<%=i+1%>" name="party" value="<%=i+1%>"> <LABEL for="party<%=i+1%>"> <%=i+1%>. <%=parties[i]%></LABEL><BR> <% } %> </BLOCKQUOTE><P><INPUT TYPE=submit value="Проголосовать"></form> </H3></body></html> Обработка формы <%@ page import="java.util.*" %> <%@ page import="java.io.*" %> <%@ page contentType="text/html; charset=Windows-1251" %> <html><body> <H2>Опрос: выборы в Госдуму</H2> <%! String dataFile = "data.txt"; %> <% if(request.getParameter("party") != null){ String vote=request.getParameter("party"); if(vote!=null){ BufferedWriter save = new BufferedWriter(new FileWriter(dataFile,true)); save.write(vote+"\n"); save.close(); %> <P>Ваше мнение учтено.</P> <% } } %> </H3></body></html> Показ результатов опроса <%@ page import="java.util.*" %> <%@ page import="java.io.*" contentType="text/html; charset=Windows-1251" %> <html><body> <H2>Опрос: выборы в Госдуму</H2> <%! String dataFile = "data.txt"; %> <% if(request.getParameter("display") != null){ int[] votes = new int[parties.length+1]; BufferedReader data = new BufferedReader(new FileReader(dataFile)); String str; while( (str=data.readLine()) != null ){ int n = Integer.parseInt(str); if((n>0) && (n<=parties.length)){ votes[n]++; } } data.close(); %> <H3>Результаты опроса:</H3><OL> <% for(int i = 0; i < parties.length; i++) { %> <LI><%=parties[i]%>: <%=votes[i]%> голосов <% } } %> </H3></body></html> Полный текст <%@ page import="java.util.*" %> <%@ page import="java.io.*" %> <%@ page contentType="text/html; charset=Windows-1251" pageEncoding="Windows-1251" %> <html><body><H2>Опрос: выборы в Госдуму</H2> <%! String dataFile = "data.txt"; String[] parties = {"Единая Россия", "Справедливая Россия", "КПРФ", "ЛДПР"}; %> <% Enumeration flds = request.getParameterNames(); if(!flds.hasMoreElements()) { // No fields %> <form method="GET" action="anketa.jsp"> <P>За какую партию Вы намерены голосовать:</P><BLOCKQUOTE> <% for(int i = 0; i < parties.length; i++) { %> <INPUT type="radio" id="party<%=i+1%>" name="party" value="<%=i+1%>"> <LABEL for="party<%=i+1%>"> <%=i+1%>. <%=parties[i]%></LABEL><BR> <% } %> </BLOCKQUOTE><P><INPUT TYPE=submit value="Проголосовать"></form> <% } else { if(request.getParameter("party") != null){ String vote=request.getParameter("party"); if(vote!=null){ BufferedWriter save = new BufferedWriter(new FileWriter(dataFile,true)); save.write(vote+"\n"); save.close(); %> <P>Ваше мнение учтено.</P> <% } } if(request.getParameter("display") != null){ int[] votes = new int[parties.length+1]; BufferedReader data = new BufferedReader(new FileReader(dataFile)); String str; while( (str=data.readLine()) != null ){ int n = Integer.parseInt(str); if((n>0) && (n<=parties.length)){ votes[n-1]++; } } data.close(); %> <H3>Результаты опроса:</H3><OL> <% for(int i = 0; i < parties.length; i++) { %> <LI><%=parties[i]%>: <%=votes[i]%> голосов <% } } } %> </H3></body></html> Добавляем проверку повторного голосования. Рисование. <%@ page import="java.util.*" contentType="text/html; charset=Windows-1251" %> <html><body> <H2>Опрос: выборы в Госдуму</H2> <%! String[] parties = {"Единая Россия", "Справедливая Россия", "КПРФ", "ЛДПР"}; %> <% Cookie[] cookies = request.getCookies(); boolean voted = false; if(cookies != null){ for(int i=0;i<cookies.length;i++){ if(cookies[i].getName().equals("voted")){ voted = (cookies[i].getValue() != null); } }} if(voted){ out.println(“<P>Вы уже голосовали!</P>”);} else{ %> <form method="GET" action="anketa.jsp"><P>За какую партию Вы намерены голосовать:</P><BLOCKQUOTE> <% for(int i = 0; i < parties.length; i++) { %> <INPUT type="radio" id="party<%=i+1%>" name="party" value="<%=i+1%>"> <%=i+1%>. <%=parties[i]%><BR> <% } %> </BLOCKQUOTE><P><INPUT TYPE=submit value="Проголосовать"></form> <% } %> </H3></body></html> Установка Cookie <% if(request.getParameter("party") != null){ if(voted){ %> <P>Вы пытаетесь проголосовать повторно.</P> <% } else{ String vote=request.getParameter("party"); if(vote!=null){ Cookie cookie = new Cookie("voted","1"); cookie.setMaxAge(10*60*60*24); response.addCookie(cookie); BufferedWriter save = new BufferedWriter(new FileWriter(dataFile,true)); save.write(vote+"\n"); save.close(); %> <P>Ваше мнение учтено.</P> <% } } } Окончательный текст <%@ page import="java.util.*" %> <%@ page import="java.io.*" %> <%@ page contentType="text/html; charset=Windows-1251" pageEncoding="Windows-1251" %> <html><body> <H2>Опрос: выборы в Госдуму</H2> <%! String dataFile = "data.txt"; String[] parties = {"Единая Россия", "Справедливая Россия", "КПРФ", "ЛДПР"}; %> <% Cookie[] cookies = request.getCookies(); boolean voted = false; if(cookies != null){ for(int i=0;i<cookies.length;i++){ if(cookies[i].getName().equals("voted")){ voted = (cookies[i].getValue() != null); } }} Enumeration flds = request.getParameterNames(); if(!flds.hasMoreElements()) { // No fields if(voted){ %> <P>Вы уже голосовали!</P> <% } else{ %> <form method="GET" action="anketa_cookie.jsp"> <P>За какую партию Вы намерены голосовать:</P><BLOCKQUOTE> <% for(int i = 0; i < parties.length; i++) { %> <INPUT type="radio" id="party<%=i+1%>" name="party" value="<%=i+1%>"> <LABEL for="party<%=i+1%>"> <%=i+1%>. <%=parties[i]%></LABEL><BR> <% } %> </BLOCKQUOTE><P><INPUT TYPE=submit value="Проголосовать"></form> <% } } else { if(request.getParameter("party") != null){ if(voted){ %> <P>Вы пытаетесь проголосовать повторно.</P> <% } else{ String vote=request.getParameter("party"); if(vote!=null){