Jav Tags

Jav Tags



💣 👉🏻👉🏻👉🏻 ALL INFORMATION CLICK HERE 👈🏻👈🏻👈🏻

































Jav Tags
-- MySQL dump 10.13  Distrib 5.7.19, for Win64 (x86_64)
-- Host: localhost    Database: simpleapp
-- ------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */ ;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */ ;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */ ;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */ ;
/*!40103 SET TIME_ZONE='+00:00' */ ;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */ ;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */ ;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */ ;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */ ;
-- Table structure for table `article`
DROP TABLE IF EXISTS `article` ;
/*!40101 SET @saved_cs_client     = @@character_set_client */ ;
/*!40101 SET character_set_client = utf8 */ ;
  `id` int ( 11 ) NOT NULL AUTO_INCREMENT ,
  `title` varchar ( 45 ) NOT NULL ,
  `body` varchar ( 3000 ) DEFAULT NULL ,
  `category_id` int ( 11 ) NOT NULL ,
  `users_id` int ( 11 ) NOT NULL ,
  PRIMARY KEY ( `id` , `category_id` , `users_id` ) ,
  KEY `fk_article_category_idx` ( `category_id` ) ,
  KEY `fk_article_users1_idx` ( `users_id` ) ,
  CONSTRAINT `fk_article_category` FOREIGN KEY ( `category_id` ) REFERENCES `category` ( `id` ) ON DELETE NO ACTION ON UPDATE NO ACTION ,
  CONSTRAINT `fk_article_users1` FOREIGN KEY ( `users_id` ) REFERENCES `users` ( `id` ) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8;
/*!40101 SET character_set_client = @saved_cs_client */ ;
-- Dumping data for table `article`
/*!40000 ALTER TABLE `article` DISABLE KEYS */ ;
INSERT INTO `article` VALUES ( 1 , 'First java program' , 'My future content about java programming' , 1 , 1 ) , ( 2 , 'SQL - helpful operations' , 'My future content about SQL' , 2 , 1 ) , ( 3 , 'Javascript as good frontend solution' , 'My future content about javascript programming' , 3 , 1 ) ;
/*!40000 ALTER TABLE `article` ENABLE KEYS */ ;
-- Table structure for table `category`
DROP TABLE IF EXISTS `category` ;
/*!40101 SET @saved_cs_client     = @@character_set_client */ ;
/*!40101 SET character_set_client = utf8 */ ;
  `id` int ( 11 ) NOT NULL AUTO_INCREMENT ,
  `name` varchar ( 45 ) DEFAULT NULL ,
) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8;
/*!40101 SET character_set_client = @saved_cs_client */ ;
-- Dumping data for table `category`
/*!40000 ALTER TABLE `category` DISABLE KEYS */ ;
INSERT INTO `category` VALUES ( 1 , 'java' ) , ( 2 , 'sql' ) , ( 3 , 'javascript' ) ;
/*!40000 ALTER TABLE `category` ENABLE KEYS */ ;
-- Table structure for table `role`
/*!40101 SET @saved_cs_client     = @@character_set_client */ ;
/*!40101 SET character_set_client = utf8 */ ;
  `id` int ( 11 ) NOT NULL AUTO_INCREMENT ,
  `name` varchar ( 45 ) NOT NULL ,
) ENGINE = InnoDB AUTO_INCREMENT = 3 DEFAULT CHARSET = utf8;
/*!40101 SET character_set_client = @saved_cs_client */ ;
/*!40000 ALTER TABLE `role` DISABLE KEYS */ ;
INSERT INTO `role` VALUES ( 1 , 'admin' ) , ( 2 , 'user' ) ;
/*!40000 ALTER TABLE `role` ENABLE KEYS */ ;
-- Table structure for table `users`
/*!40101 SET @saved_cs_client     = @@character_set_client */ ;
/*!40101 SET character_set_client = utf8 */ ;
  `id` int ( 11 ) NOT NULL AUTO_INCREMENT ,
  `login` varchar ( 45 ) NOT NULL ,
  `password` varchar ( 50 ) DEFAULT NULL ,
  `email` varchar ( 45 ) DEFAULT NULL ,
  `role_id` int ( 11 ) NOT NULL ,
  KEY `fk_users_role1_idx` ( `role_id` ) ,
  CONSTRAINT `fk_users_role1` FOREIGN KEY ( `role_id` ) REFERENCES `role` ( `id` ) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8;
/*!40101 SET character_set_client = @saved_cs_client */ ;
/*!40000 ALTER TABLE `users` DISABLE KEYS */ ;
INSERT INTO `users` VALUES ( 1 , 'admin' , NULL , NULL , 1 ) ;
/*!40000 ALTER TABLE `users` ENABLE KEYS */ ;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */ ;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */ ;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */ ;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */ ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */ ;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */ ;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */ ;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */ ;
-- Dump completed on 2017-10-15 16:29:50
package com.javamaster.controller ;
import javax.servlet.ServletException ;
import javax.servlet.http.HttpServlet ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
import javax.servlet.http.HttpSession ;
import com.javamaster.dao.ArticleDao ;
import com.javamaster.dao.impl.ArticleDaoImpl ;
import com.javamaster.entity.Article ;
import com.javamaster.entity.Category ;
 * Servlet implementation class HomeServlet
public class HomeServlet extends HttpServlet {
    private static final long serialVersionUID = 1L ;
    private ArticleDao articleDao = new ArticleDaoImpl ( ) ;
     * @see HttpServlet#HttpServlet()
        // TODO Auto-generated constructor stub
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    protected void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        String path = request. getServletPath ( ) ;
        if ( path. equals ( "/" ) ) {
            List < Article > articles = articleDao. getAllArticles ( ) ;
            request. setAttribute ( "title" , "Title of our application" ) ;
            request. setAttribute ( "articles" , articles ) ;
            request. getRequestDispatcher ( "/WEB-INF/view/index.jsp" ) . forward ( request, response ) ;
        else if ( path. equals ( "/welcome" ) ) {
            request. getRequestDispatcher ( "/WEB-INF/view/welcome.jsp" ) . forward ( request, response ) ;
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    protected void doPost ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet ( request, response ) ;
    jstl

  4.0.0
  com.javamaster
  simplewebapp
  0.0.1-SNAPSHOT
  simplewebapp Maven Webapp
  http://maven.apache.org
      junit
   
    jstl
            javax
            javaee-web-api
            6.0
            provided

            mysql
            mysql-connector-java
            5.1.34
    simplewebapp
            < c : forEach items = "${articles}" var = "article" >
                < article class = "col-xs-12" >
                    < h2 > $ { article. title }
                    < p > $ { article. body }
                    < p >< button class = "btn btn-default" > Read More
                    < p class = "pull-right" >< span class = "label label-default" > keyword < span class = "label label-default" > tag < span class = "label label-default" > post
                    < ul class = "list-inline" >
                        < li >< a href = "#" > Today
                        < li >< a href = "#" >< span class = "glyphicon glyphicon-comment" > 2 Comments
                        < li >< a href = "#" >< span class = "glyphicon glyphicon-share" > 8 Shares

Java master - копирование материала разрешено))






Продолжаем писать простое джава веб приложение и сегодня пришло время рассмотреть, как работать с jstl тегами и как очень удобно отобразить информацию на jsp странице с их помощью. На повестке дня:
С JSP  и JSTl мы уже частично знакомы из предыдущих статей. Теперь, давайте используем уже имеющиеся знания, дополним их и попробуем применить их в нашем простом сайте , который мы пишем уже несколько месяцев.
Для тех, кто тут впервые: мы пишем простое java веб приложение, с целью ознакомиться с основами веб программирования на джава. Весь цикл статей Вы сможете найти в разделе java web .
Прежде всего, чтобы отобразить информацию ее нужно добавить. Я вручную добавил несколько записей в нашу базу данных. В кого ничего не сохранилось вот вам дамп моей базы. Просто создайте файл с расширением sql вставьте содержимое и импортируйте в MySql. Для ленивых, в конце статьи будет ссылка на код гитхаб и в корне каталога будет дамп, который можно будет скачать. Для особенно ленивых, можно попробовать вставить как текст в консоль MySql (не гарантирую, что все заработает):
Базу данных наполнили, теперь можно приступить к слою представления. Как помним слой доступа к базе данных мы уже написали в статье:  Работа с базой данных MySql в Java и договорились, что в этом проекте мы пропустим слой сервисом, а будем работать непосредственно через слой DAO.
Предлагаю вывести на главную страницу сайта все статьи, которые есть в базе. Для этого переходим в наш сервлет и создаем объект ArticleDao, который отвечает за работу с сущностью статьи.  private ArticleDao articleDao = new ArticleDaoImpl ().
Далее нужно выбрать в список все статьи и передать их на jsp. Делается это очень просто. Нужно поместить атрибут в  HttpServletRequest request переменную. 
Как видно из кода выше, используя метод setAttribute() можно поместить как объект, так и список объектов.
Теперь стоит задача получить наши атрибуты на странице jsp. В данном случае нам отлично поможет библиотека jstl тегов, в которой есть все необходимое для работы с объектами. В крайнем случае, Вы всегда можете написать свой собственный тег. Я обязательно напишу статью, как создавать собственные теги, но уверяю, jstl библиотеки вполне хватает для стандартных ситуаций.
Для того, чтобы использовать библиотеку ее нужно подключить к нашему проекту.
Да, это очевидные вещи, но практика показывает, что лучше все таки об этом упомянуть. Вводим в гугле фразу jstl maven и первая ссылка будет весть на репозиторий нашей библиотеки. Или можете просто скопировать код ниже.
Далее подключаем библиотеку jstl непосредственно на нашей странице: <%@ taglib prefix = « c « uri = « http://java.sun.com/jsp/jstl/core « %>
Чтобы вывести значение атрибута title можно воспользоваться тегом out:
В нашем случае:  <c:out value=»${title}»>. Данный атрибут можно заменить на ${attribute} — выражение.
Для вывода списка объектов воспользуемся тегом forEach:
Строку  можно заменить на ${variable.parameter}
Пример с нашего проекта. Весь код index.jsp очень большой (никак не приведу его в порядок), так что выложу только часть. Весь код будет по ссылке в конце статьи.
Обратите внимание: мы в атрибут var поместили просто переменную. Мы можем называть ее по собственному желанию. Потом мы используем эту переменную в выражении типа ${}. В атрибут items мы поместили то название атрибута, которое мы создали и поместили в метод setAttribute. Будьте внимательны, когда меняете названия атрибутов в сервлете. Тогда его придется поменять и в jsp.
Давайте запустим наше приложение и посмотрим, что вышло в итоге.
На этом и закончим нашу статью. Практически ничего нового мы тут не узнали. Просто хотелось показать, как использовать jstl теги на практике. На самом деле мы сейчас рассматривали теги JSTL core. Есть еще и другие: fmt, sql, xml для работы с соответственными технологиями. Я разделил эту статью на две часть и во второй часть мы рассмотрим больше тегов JSTL core и немного fmt  отдельно от контекста нашего веб приложения.
Код на гит как и обещал: https://github.com/caligula95/simplewebapp-part6
<iframe src="https://www.youtube.com/embed/JI-NDcDFjTU" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen">
Ваш e-mail не будет опубликован. Обязательные поля помечены *
Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев.
Уведомить меня о новых комментариях по email.
Уведомлять меня о новых записях почтой.

Пользовательские теги в JSP-страницах - JavaTutor.net
JSTL теги - часть 1 | Java master
Теги JSTL core | Листинг Users. java
Пользовательские теги | Java in perm Wiki | Fandom
JSP - учебник по стандартной... - CoderLessons.com
Описание и пример реализации accordion
Виджет вкладок tabs библиотеки jQuery
Всплытие событий в структуре DOM, останов всплытия
Создание анимированных навигационных панелей
Описание выскакивающих панелей, цепочек и очередей jQuery
Описание метода animate, цветовая анимация
Описание и примеры анимации элементов DOM
Изменение содержимого WEB-страницы библиотекой jQuery
Действия и обработчики событий : css, hide, show, toggle
Создание apk-файла для android устройств, .dex файлы
Учебные примеры изучения платформы Jabricks
Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги   410013796724260  • Webmoney   R335386147728   Z369087728698

// Основные теги создания циклов, определения условий, вывода информации на страницу и т.д.
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>

// Теги для работы с XML-документами
<%@ taglib prefix = "x" uri = "http://java.sun.com/jsp/jstl/xml" %>

// Теги для работы с базами данных
<%@ taglib prefix = "s" uri = "http://java.sun.com/jsp/jstl/sql" %>

// Теги для форматирования и интернационализации информации (i10n и i18n)
<%@ taglib prefix = "f" uri = "http://java.sun.com/jsp/jstl/fmt" %>


// отображение текста 16+64*2
< c : out value = "16+64*2" />


// отображение значения 144
< c : out value = "${16+64*2}" />












Sergey









<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>


Пример тега <c:if> библиотеки JSTL












${сounter.count}> ${clip}



public class GoodsBean
{
String [] goods = { "Хлеб" , "Мясо" , "Рыба" };

public List < String > getGoodsAsList ()
{
return Arrays . asList ( goods );
}

public String [] getGoodsAsArray ()
{
return goods ;
}
}























<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>


Пример использования тега <c:import> библиотеки JSTL









<% int x = 5 / 0 ; %>







package example ;

public class User
{
private int id ;
private String name ;

public User ( final int id , final String name )
{
this . id = id ;
this . name = name ;
}
public int getId ()
{
return id ;
}
public void setId ( final int id )
{
this . id = id ;
}
public String getName ()
{
return name ;
}
public void setName ( final String name )
{
this . name = name ;
}
}


package example ;

import java . util . List ;
import java . util . ArrayList ;

public class Users
{
private List < User > data = new ArrayList < User >();
public Users ()
{
data . add ( new User ( 1 , "Остап Бендер" ));
data . add ( new User ( 2 , "Киса Воробьянинов" ));
}
public List < User > getData ()
{
return data ;
}
public void setData ( List < User > data )
{
this . data = data ;
}
}




<% @page language = "java" contentType = "text/html; charset=UTF-8"
pageEncoding = "UTF-8" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>

<% @page import = "java.util.List" %>
<% @page import = "java.util.ArrayList" %>


<%
List < String > list = new ArrayList < String >();
list . add ( "Продукты" );
list . add ( "Одежда" );
list . add ( "Обувь" );
list . add ( "Спортивный инвентарь" );
request . setAttribute ( "list" , list );
%>




Пример JSP JSTL












UID/td>
Name



${user.id}
${user.name}







Перепечатка материалов возможна только с указанием активной ссылки на сайт http://java-online.ru

Стандартная библиотека тегов JSP (JavaServer Pages Standard Tag Library, JSTL ) является расширением
её спецификации, используемая для условной обработки, создания циклов, интернационализации страницы, разбора XML
данных.
JSTL является альтернативой скриплетам, встроенным в JSP, то есть прямым вставкам Java кода.
JSTL представляет собой набор тегов в стиле HTML, позволяющих обращаться к объектам Java и выполнять
многие из конструкций языка Java.
Для подключения библиотеки тегов JSTL используются следующие выражения:
При использовании библиотеки JSTL необходимо указывать контекст, где сервер приложений должен
искать значение/переменную или куда он должен обратиться. Список предопределенных контекстов представлен
в следующей таблице.

Примечание : На странице рассматриваются только теги ядра библиотеки core

Тэг используется для вывода данных на экран. Следующий код отобразит выражение,
представленное в атрибуте value.
Чтобы было вычислено выражение атрибута value его необходимо оформить как выражение
EL (Expression Language) в виде "${16+64*2}" .
Вывод на экран статических формул требуется не часто. А вот необходимость вывести значение от
пользователя или html-формы возникает частенько.Следует добавить, что тэг
позволяет контролировать специальные символы HTML (<, >, &, ' , "). Атрибут тега
escapeXml отвечает за отображение на странице спецсимволов как код HTML или в виде простых
символов. По умолчанию escapeXml имеет значение true. Пример :
Если выражение value вернет значение null, то тег c:out выведет на экран пустое место.
Но если определить значение атрибута по-умолчанию, то на странице отобразится это значение. Следующий
код отобразит значение quest, если выражение ${user} вернет значение null:
Тег c:set используется для определения переменной подобно
< jsp:setProperty >. Пример использования :
В этом случае будет создана переменная user , имеющая значение Sergey. Вызвать эту переменную можно
с использованием EL выражения ${user}. В результате на странице будет отображено содержимое
переменной. Атрибут scope определяет область видимости и не является обязательным; по-умолчанию имеет
значение "page", т.е. доступен на странице. Возможные варианты атрибута scope [session, page, request,
application].
Значение переменных можно определить в теле тэга, например:
Если значение value равно null, то переменная будет удалена.
С помощью тэга c:set можно устанавливать свойства компонентов JavaBean, добавлять значения
к спискам и массивам. Для этого используется параметр target . Например:
Для удаления переменной следует использовать тэг .
Тег серьезно отличается от того, что мы используем в других языках
программирования. Он не позволяет определить ветку else или elseif. Можно только проверить некоторое
условие. Пример :
В следующем коде реализовано условие if...else в виде двух тегов
В теге можно использовать 2 атрибута :
В следующем примере результат сравнения действителен в течение текущего запроса и
сохраняется в переменной result .
Тег в Java является аналогом оператора switch.
Синтаксис :
Тег choose дает возможность выбора из нескольких условий и имеет вложенный тег
when , отвечающий за определенное действие при условии что test будет истинно.
Тег позволяет задать цикл. Пример использования forEach :
Переменной атрибута var в цикле присваивается значение из списка items ,
которое отображается в ячейке таблицы. Значение можно вывести в ячейку таблицы с использованием
только выражения EL без тега , т.е. ${clip}. Об этом будет сказано ниже.
Тэг содержит опциональный параметр varStatus , позволяющий,
к примеру, реализовать счетчик типа переменной 'i' в обыкновенном цикле программирования.
Создадим тестовый компонент GoodsBean, к которому будем обращаться в цикле
Для вложения одной страницы в другую можно использовать тег . Пример :
Страница header.html загружается динамически на этапе запроса. В качестве url может
использоваться страница за пределами сервера приложений. Если необходимо передать какой-либо
параметр удаленной странице, то можно использовать тэг . Пример:
Таким образом тег позволяет разбить страницу на части. Этот тег очень гибкий,
и в самом простом случае позволяет включать в страницу статический шаблон текста в виде html/txt-блока.
Самые распространенные атрибуты тега
Пример загрузки в переменную data шаблона template.html.
Для обработки исключений в теле JSP следует использовать тэг .
Пример использования .
В примере с использованием библиотеки тегов JSTL представлено применение тега для двух наборов
данных. Один набор данных с описанием групп товаров будет создан непосредствено на странице, второй набор данных
будет подгружаться из компонента JavaBean.
На следующем скриншоте представлена структура проекта JSTLExample.
Пример включает два класса Users.java и User.java, дескриптор приложения web.xml и страницу index.jsp.
Класс описания объекта пользователя, включающего поле идентификатора, поле имени и стандартные методы
чтения и записи свойств (set/get).
Класс пользователей, включающий набор данных data, и стандартные методы чтения и записи списка (set/get).
В конструкторе создается список из двух героев произведения Ильфа и Петров.
В первых строках страницы устанавливается кодировка страницы, определяется префикс библиотеки тегов JSTL,
выполняется импорт необходимых библиотек List , ArrayList и определяется/создается JavaBean компонент
users. После этого формируется список групп товаров.
Первоначально на страницу выводится список групп товаров, после чего в таблице отображается список героев
произведения. Следует обратить внимание в атрибуте items тега определяется список
объектов.
Тег в цикле обходит список объектов. Тег отображает данные объекта на
странице. Использованные в тегах выражения ${users}, ${user.id} и ${user.name} интерпретируются с помощью языка
выражений EL (Expression Language) . При обработке выражения ${users} EL ищет атрибут users в различных
доступных объектах, например pageContext, request, session и контекстах сервлета и приложения.
Развитие технологии применения JSP-страниц обеспечило возможность использования EL не только из
тегов JSTL , но и отдельно. Так первый набор данных выводит информацию на страницу с использованием тега
JSTL . Второй набор выводится без использования данного тега. Эта современная форма JSTL и EL впервые
появилась в спецификации JSP 2.0. Соединенная с архитектурой Model 2 комбинация JSTL и EL дает возможность
создавать JSP-страницы, максимально свободные от Java-кода.
Интерфейс страницы представлен на следующем скриншоте.
Исходные коды рассмотренного примера можно
скачать здесь (866 Кб).
Контекст страницы. Переменные доступны только для текущей страницы.
Контекст запроса. Переменные доступны на всех страницах, а также сервлетам, обслуживающим
текущий запрос пользователя.
Контекст сессии. Переменные доступны в течение всей сессии пользователя, т.е. пока не будет
закрыт браузер или не закончится предельное время бездействия.
Контекст приложения. Доступ к переменным возможен на всех страницах веб-приложения. Это самый
глобальный контекст.
В этом контексте располагаются параметры, отправленные пользователем/браузером либо как
параметры адресной строки, либо как поля html-формы.
Список значений параметров, которые были переданы серверу приложений. Формат отличается
от предыдущего контекста. Если там param имел тип HashMap,
то здесь HashMap.
В этом объекте хранится информация об http-заголовках, которые были переданы от браузера/клиента
веб-серверу.
Конфигурационные параметры, указанные для страницы или сервлета в дескрипторе приложений
web.xml
Список переменных, помещенных внутрь cookie.
Ссылка на объект pageContext, автоматически создаваемых внутри jsp-страницы.

Смотреть Домашнее Порно В Жопу
Порно Ретро Крупно
Геи Порно Русские Военные
Порно Актёры
Волосатые Порно Фото Крупным Планом

Report Page