190 likes | 205 Views
Язык Java. JSP. Java. Синтаксис. Перевод строчки эквивалентен пробелу Регистр в именах различается // Комментарии до конца строки / * Многострочные комментарии * /. Типы данных. Примитивные типы данных : boolean char – 2 байта byte – 1 байт : целое -128 ÷ 127
E N D
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:forwardpage="относительный 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){ • 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> • <% • } • } • } • 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+1]%> голосов • <% • } • } • } • %> • </H3></body></html>