Язык Java. JSP.

advertisement
Язык 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){
Download