43132

Веб-приложения на Java, реализующее функциональность просто интернет-магазина

Курсовая

Информатика, кибернетика и программирование

Основные модели архитектуры JSP. Функционирование JSP. Заключение Список литературы Введение JSP JvServer Pges технология позволяющая веб-разработчикам легко создавать содержимое которое имеет как статические так и динамические компоненты.

Русский

2013-11-04

953 KB

32 чел.

1. Обзор технологии Java Server Pages

Технология Java Server Pages содержит четыре ключевых компонента:

  1. Директивы (directive) представляют собой сообщения для контейнера JSP, дающим возможность определить параметры страницы, подключения других ресурсов, использовать собственные нестандартные библиотеки тегов.

  2. Действия (actions) инкапсулируют функциональные возможности в предопределенных тегах, которые можно встраивать в JSP-страницу. Действия часто выполняются на основе информации, посылаемой на сервер в составе запроса от определенного клиента. Действия также могут создавать объекты Java для использования их в скриптлетах JSP.

  3. Скриптлеты (scriptlets) позволяют вставлять код Java в страницы JSP, который взаимодействует с объектами страницы при обработке запроса.

  4. Библиотеки тегов (tag library) являются составной частью механизма расширения тегов, допускающего разработку и использование собственных тегов.

Наличие данных с неизменяемой структурой определяют выбор программиста в принятии решения, какую технологию следует использовать: сервлеты или страницы JSP. Программисты предпочитают использовать страницы JSP, если основная часть посылаемого клиенту содержимого представляет собой данные с неизменяемой структурой, и лишь небольшая часть содержимого генерируется динамически с помощью кода Java. Сервлеты предпочтительнее использовать, если только небольшая часть содержимого, посылаемого клиенту, представляет собой данные с неизменяемой структурой. На самом деле отдельные сервлеты могут вообще не генерировать содержимого для клиента, выполняя определенную задачу в интересах клиента, а затем вызывают другие сервлеты или JSP-страницы, чтобы отправить ответ.

Во многих случаях сервлеты и JSP-страницы являются взаимозаменяемыми. Подобно сервлетам, JSP-страницы обычно выполняются на стороне Web-сервера, который называют контейнером JSP.

Когда Web-сервер, поддерживающий технологию JSP, принимает первый запрос на JSP-страницу, контейнер JSP транслирует эту JSP-страницу в сервлет Java, который обслуживает текущий запрос и все последующие запросы к этой странице. Если при компиляции нового сервлета возникают ошибки, эти ошибки приводят к ошибкам на этапе компиляции. Контейнер JSP на этапе трансляции помещает операторы Java, которые реализует ответ JSP-страницы, в метод _jspService. Если сервлет компилируется без ошибок, контейнер JSP вызывает метод _jspService для обработки запроса.

JSP-страница может обработать запрос непосредственно, либо вызвать другие компоненты Web-приложения, чтобы содействовать обработке запроса. Любые ошибки, которые возникают в процессе обработки, вызывают исключительную ситуацию в Web-сервере на этапе запроса.

Весь статический текст HTML, называемый в документации JSP шаблоном HTML (template HTML), сразу направляется в выходной поток. Выходной поток страницы буферизуется. Буферизацию обеспечивает класс JspWriter, расширяющий класс Writer. Размер буфера по умолчанию ограничен до 8 Кбайт, но его можно изменить атрибутом buffer тега <%@ page>. Наличие буфера позволяет заносить заголовки ответа в выходной поток совместно с выводимым текстом. В буфере заголовки будут размещены перед текстом.

Таким образом, достаточно написать страницу JSP, сохранить ее в файле с расширением jsp и установить файл в контейнер, так же, как и страницу HTML, не заботясь о компиляции. При установке можно задать начальные параметры страницы JSP так же, как и начальные параметры сервлета.

1.1 Архитектура JSP-страницы

Базовая архитектура Java Server Pages в самом общем виде представлена на рисунке. Платформа J2EE обеспечивает базу, на которой функционирует все приложение в целом и страницы JSP, в частности, в то время, как сеть Интернет предоставляет механизм транспортировки данных.

Страница JSP располагается на Web-сервере в среде виртуальной Java-машины. Доступ к страниц JSP, как и в случае сервлета, осуществляется через Web с использованием протокола HTTP.

Страница JSP функционирует под управлением JSP Engine (среды исполнения JSP). Страница JSP может взаимодействовать с программным окружением с помощью компонентов JavaBeans, получая и устанавливая его параметры, используя теги: <jsp:useBean>, <jsp:getProperty>, <jsp:setProperty>. Компонент JavaBean сам может участвовать в других процессах, предоставляя результаты в виде своих параметров, доступных страницам JSP, участвующим в сеасе, а через них - всем пользователям, запрашивающим эти страницы JSP.

Использование межплатформенных компонентов JavaBeans и библиотек тегов значительно расширяет возможности JSP. Программный Java-код в странице JSP, в идеале, должен использоваться только для управления представлением информации.

1.2. Основные модели архитектуры JSP

Возможны различные подходы к использованию технологии JSP. Два основных архитектурных подхода, нашедшие применение при реализации приложений уровня предприятия, имеют специальные названия:

  * JSP Model 1 (Первая модель архитектуры JSP);

  * JSP Model 2 (Вторая модель архитектуры JSP);

Первая модель архитектуры JSP

JSP Model 1 (Первая модель архитектуры JSP) практически реализует базовую архитектуру JSP. В архитектурном решении JSP Model 1 полностью отвечает за получение запроса от клиента, его обработку, подготовку ответа и доставку ответа пользователю. Разделение представления и динамического содержания обеспечивается тем, что доступ к данным осуществляется через компоненты JavaBeans. В сценарии JSP Model 1 предполагается следующая последовательность действий:

  1. Запрос пользователя посылается через Web-браузер странице JSP.

  2. Страница JSP компилируется в сервлет (при первом обращении).

  3. Скомпилированный сервлет обращается к некоторому компоненту JavaBean, запрашивая у него информацию.

  4. Компонент JavaBean, в свою очередь, осуществляет доступ к информационным ресурсам (непосредственно или через компонент Enterprise JavaBeans).

  5. Полученная информация отображается в свойствах компонента JavaBeans, доступных странице JSP.

  6. Формируется ответ в виде страницы HTML с комбинированным содержанием (статическое, динамическое).

Архитектура JSP Model 1 может с успехом применяться для небольших приложений. Однако использование данной модели для более сложных задач вызывает определенные трудности и не является технологичным из-за большого объема встроенных в страницу программных фрагментов. Для сложных корпоративных приложений рекомендуется применение второй модели архитектуры JSP.

Вторая модель архитектуры JSP

JSP Model 2 (Вторая модель архитектуры JSP) реализует гибридный подход к обслуживанию динамического содержания Web-страницы, при котором совместно используется сервлет и страница JSP. Эта модель позволяет эффективно использовать преимущества обеих технологий: сервлет поддерживает задачи, связанные с обработкой запроса и созданием объектов JavaBeans, используемых JSP, а страница JSP отвечает за визуальное представление информации. Сервлет используется как управляющее устройство (контроллер). Схематично вторая модель представлена на рисунке. Сценарии JSP Model 2, как правило реализует следующую типовую последовательность действий:

  1. Запрос пользователя посылается через Web-браузер сервлету.

  2. Сервлет обрабатывает запрос, создает и инициализирует объект JavaBean или другие объекты, используемые страницей JSP, и запрашивает динамическое содержание у компонента JavaBean.

  3. Компонент JavaBean осуществляет доступ к информации непосредственно или через компонент Enterprise JavaBeans.

  4. Сервлет, направляющий запрос, вызывает сервлет, скомпилированный из страницы JSP.

  5. Сервлет, скомпилированный из страницы JSP, встраивает динамическое содержание в статический контекст HTML-страницы и отправляет ответ пользователю.

Необходимо отметить, что в рамках этой модели страница JSP сама не реализует никакую логику, это входит в функции сервлета-контроллера. Страница JSP отвечает только за получение информации от компонента JavaBean, который был предварительно создан сервлетом, и за визуальное представление этой информации в удобном для клиента виде.

Архитектуры JSP Model 2 в большей степени, чем архитектура JSP Model 1, соответствует идее отделения представления от содержания. Эта модель позволяет четко выделить отдельные части приложения и связанные с ними роли и обязанности персонала, занятого в разработке:

  * Дизайнер - разработка дизайна Web-страницы;

  * Разработчик - реализация функций управления и обработки.

Чем сложнее разрабатываемая система, тем заметнее становятся преимущества архитектуры JSP Model 2.

1.3. Функционирование JSP

Работа со страницей JSP становится возможной только после ее преобразования в сервлет. В процессе трансляции как статическая, так и динамическая части JSP преобразуются в Java-код сервлета, который передает преобразованное содержимое браузеру через выходной поток Web-сервера.

Технология JSP является технологией серверной стороны, поэтому все процессы обработки JSP протекают на стороне сервера. Страница JSP - текстовый документ, который в соответствии со спецификацией JSP, проходит две фазы:

  * фазу трансляции;

  * фазу выполнения.

При трансляции, которая выполняется один раз для каждой страницы JSP, создается или локализуется класс типа Servlet, реализующий JSP. Трансляция JSP может производиться как отдельно, до ее использования, так и в процессе размещения JSP на Web-сервере или сервере приложений.

Во второй фазе осуществляется обработка запросов и подготовка ответов.

2. Построение веб-приложения

Программа представляет собой  — простой подсистему обработки заказов. Данный пример сильно упращен, но зато он демонстрирует основные возможности сервлетов, библиотеки стандартных тегов и пр.:

• Разбиение кода на представления (JSP), обработчики запросов, формы, модель.

•   Выборка данных из БД с использованием JDBC.

2.1. Описание приложения

Система обработки заказов позволяет пользователю просмотреть список товаров, которых можно пробрести, т. е. Добавить в корзину покупок  (рис. 1) и список помещенных товаров в корзину и общую сумму, на которую были выбраны товары(рис. 2).

Рисунок 1. Список товаров.

Рисунок 2. Покупка товаров

Рисунок 3. Отмена покупки.

Так же существует возможность отмены всех выбранных покупок (рис. 3).

 2.2. База данных 

CREATE TABLE IF NOT EXISTS `tovar` (

 `Name` varchar(40) CHARACTER SET utf8 NOT NULL,

 `Price` int(10) NOT NULL,

 `type` varchar(40) CHARACTER SET utf8 NOT NULL,

 `id` int(2) NOT NULL

)

2.3. Конфигурация

Веб-приложения в Java конфигурируются через специальные дескрипторы веб-приложений web.xml и server.xml.

Листинг 1.  web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true">

<display-name>A test application</display-name>

<description> A scriptable management web application for the Tomcat Web Server; Manager lets you view, load/unload/etc particular web applications. </description>    

   <resource-ref>

 <description>MySQL_Lab</description>

 <res-ref-name>jdbc/inetmagazine</res-ref-name>

 <res-type>javax.sql.DataSource</res-type>

 <res-auth>Container</res-auth>

</resource-ref>

</web-app>

 Листинг 2. Часть листинга из  server.xml, необходимая для конфигурации данного веб-приложения.

<GlobalNamingResources>

   <!-- Editable user database that can also be used by

        UserDatabaseRealm to authenticate users

   -->

   

   <Resource name="jdbc/inetmagazine" auth="Container"

       type="javax.sql.DataSource"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost/webshop?user=root"

username="root" password=""

maxActive="20" maxIdle="10" maxWait="-1"/>

   

 </GlobalNamingResources>

2.4. Текст сервлетов 

 Листинг 3. DataObject.java

package kurs_rab;

import java.sql.*;

public abstract class DataObject {

   protected String selectStatement;  

protected String searchStatement;  

protected String insertStatement;   

protected String updateStatement;  

protected String deleteStatement;  

   public int id;      

   public void showSelectStatement()

   {

       System.out.println(this+".selectStatement = "+this.selectStatement);

   }

   protected DataObject[] parseData(ResultSet rs) throws SQLException

   {

       // возвращаем пустой массив

       return new DataObject[0];

   }

   

   protected static int getRecordCount(ResultSet rs) throws SQLException

   {

       int cnt;

       // переставляем курсор на последнюю запись набора

       if(rs.last())

       {           

           cnt=rs.getRow();

           rs.beforeFirst();

           return cnt;

       }

       else

       {

           return 0;

       }

   }

   

     public DataObject select(Connection conn,int id) throws SQLException

   {

      

       PreparedStatement ps=conn.prepareStatement( selectStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

       ps.setInt(1, id);

       DataObject obj=parseData(ps.executeQuery())[0];        

       ps.close();

       return obj;

   }    

}

 Листинг 4. Client.java

package kurs_rab;

import java.util.*;

import java.sql.*;

public class Tovar extends DataObject

{

   public String Name;

   public String Last;

   public String Tel;

   public Tovar()

   {

     

        this.selectStatement="select id, Name, Last, tel, In, Out, Room from Clients where id=?";

   

        this.searchStatement="select id, Name, Last, tel, In, Out, Room from Clients where 1=1";

      

        this.insertStatement= "insert into clients (Name, Last, Tel, `In`, `Out`, Room, Tarif) values (?,?,?,`?`,`?`,?,?)";

       

   }

   @Override

   protected Tovar[] parseData(ResultSet rs) throws SQLException

   {

       // вызываем getRecordCount для определения количества найденых записей

       Tovar[] o=new Tovar[getRecordCount(rs)];

               // последовательно просматриваем ResultSet

       while (rs.next())

               {

                   int i=rs.getRow()-1;

                   o[i]=new Tovar();

                   o[i].id=rs.getInt("id");

                   o[i].Name=rs.getString("Name");

                   o[i].Last=rs.getString("Last");     

                   o[i].Tel=rs.getString("Tel");

                   o[i].In=rs.getString("In");

                   o[i].Out=rs.getString("Out");

                   o[i].Room=rs.getString("Room");

                   o[i].Tarif=rs.getString("Tarif");

               }

       return o;

   }

   public Tovar[] search(Connection conn, String Name,String Last,String Tel,String In,String Out,String Room) throws SQLException

   {

       String ss=this.searchStatement;

                     

       if (Name!=null)

       {

           //поиск по Client_ID по шаблону

           ss=ss+" and `Client_Name` LIKE ?"/*+Client_Name+"'"*/;

       }

       

       if (Last!=null)

       {

           //поиск по Client_ID по шаблону

           ss=ss+" and  Client_Last_Name = ?"/*+Client_Last_Name+"'"*/;

       }

       

       if (Tel!=null)

       {  

           //поиск по Client_ID по шаблону

           ss=ss+" and Client_Phone_Number = ?"/*+Client_Phone_Number+"'"*/;

       }

       

       if (In!=null)

       {  

           //поиск по Client_ID по шаблону

           ss=ss+" and Date_In = ?"/*+Date_In+"'"*/;

       }

       if (Out!=null)

       {  

           //поиск по Client_ID по шаблону

           ss=ss+" and Date_Out = ?"/*+Date_Out+"'"*/;

       }

       

       if (Room!=null)

       {  

           //поиск по Client_ID по шаблону

           ss=ss+" and Room_Number = ?"/*+Room_Number+"'"*/;

       }

      System.out.printf(ss);

      // создаем запрос

      

       PreparedStatement ps=conn.prepareStatement(ss);

               

       if (Name!=null)

       {

           ps.setString(i,Name);

    i++;

       }

 

       if (Last!=null)

       {

           ps.setString(i,Last);

           i++;

       }

      

       if (Tel!=null)

       {

           ps.setString(i,Tel);

           i++;

       }

       

       if (In!=null)

       {

           ps.setString(i,In);

           i++;

       }

       

       if (Out!=null)

       {

           ps.setString(i,Out);

           i++;

       }

       

       if (Room!=null)

       {

           ps.setString(i,Room);

       }

       

       // выполняем запрос, вызываем метод обработки набора результатов

       Tovar[] o=this.parseData(ps.executeQuery());

       // закрывыем запрос

       ps.close();

       return o;

   }

   public void insert(Connection conn) throws SQLException

{

   PreparedStatement ps=conn.prepareStatement(this.insertStatement);

       if (this.Name!=null){ ps.setString(1,this.Name); }

       else{ps.setNull(1, Types.VARCHAR);}

       

       if (this.Last!=null){ ps.setString(2,this.Last); }

       else{ps.setNull(2, Types.VARCHAR);}

       

       if (this.Tel!=null){ ps.setString(3,this.Tel); }

       else{ps.setNull(3, Types.VARCHAR);}

       

       if (this.In!=null){ ps.setString(4,this.In); }

       else{ps.setNull(4, Types.DATE);}

       if (this.Out!=null){ ps.setString(5,this.Out); }

       else{ps.setNull(5, Types.DATE);}

       if (this.Room!=null){ ps.setString(6,this.Room); }

       else{ps.setNull(6, Types.VARCHAR);}

       

       if (this.Tarif!=null){ ps.setString(7,this.Tarif); }

       else{ps.setNull(7, Types.INTEGER);}

 

           ps.execute();

           ps.close();

       }

       

}

2.5. Текст JSP-страницы 

 Листинг 5. index.jsp

<%@page import="javax.naming.*, javax.sql.*, java.sql.*" contentType="text/html; charset=UTF-8"%>

<html>

<head><title>Веб-интерфейс системы управления отелем - общая информация о клиентах</title></head>

<body style="background-color: #000000; background-image: url(img/bgw.png); background-position: center top; background-repeat: repeat-x">

   <div style="min-height: 800px; text-align: center; background-image: url(img/menu.png); background-position: center top;  background-repeat: no-repeat;">

       <br><br><a href="#" onclick="price()"><img src="img/but.png"></a>&nbsp;&nbsp;<a href="#" onclick="cancel()"><img src="img/but2.png"></a>

       

       

                   <table border=0 align="center">  

                       <tr> <td>  </td>  

 <td bgcolor="#CDB5CD">Серьги и кольца :)</td>     

   </tr>

<%

 //получаем JNDI-контекст

 Context initContext = new InitialContext();

 Context envContext  = (Context)initContext.lookup("java:/comp/env");

 //из контекста получаем пул соединений

 DataSource ds = (DataSource)envContext.lookup("jdbc/MySQL_Lab");

 //а из пула - соединение

 Connection conn = ds.getConnection();

 //создаем запрос

 Statement stmt=conn.createStatement();

 //выполняем его

 ResultSet rs=stmt.executeQuery("select name,price from tovar");

 //выводим результат

               int i=0;

 while(rs.next())

 {i++;

  

   %>

   <tr> <td><a href="#" onclick="summ(<%=i%>)"><img src="img/but1.png"></a>&nbsp;&nbsp;</td>

                                   <td><img src="img/<%=i%>.jpg"></td>

    <td bgcolor="#A9A9A9"><%=rs.getString("name")%></td>

                                       <td bgcolor="#A9A9A9"><%=rs.getInt("price")%></td>

                                       

   </tr>

   <%

   

 }

 //закрываем объекты - освобождаем ресурсы

 stmt.close();

 rs.close();

 //а этот вызов фактически не закрывает соединение, а возвращает его в пул

 conn.close();

%>

</table>

<script>

   var sum=0;

   var k = 0;

   

   function cancel(){

       sum=0;k = 0;

       alert("Корзинка очищена, все покупки отменены");

   }

   

   function price(){

       alert("Вы купили товаров " +k+ " штук, на сумму: " +sum+ " руб");

   }

   

   function summ(idnum){

       switch (idnum){

           case "1": {sum+=120;k++; break;}

           case "2": {sum+=120;k++; break;}

           case "3": {sum+=100;k++; break;}

           case 4: {sum+=70;k++; break;}

           case 5: {sum+=120;k++; break;}

           case 6: {sum+=80;k++; break;}

           case 7: {sum+=80;k++; break;}

           case 8: {sum+=180;k++; break;}

           case 9: {sum+=180;k++; break;}

           case 10: {sum+=100;k++; break;}

           default: {sum+=0;k++; break; }

           }

   }

   

   $('a').on('click', function( e ) {

 // аПаОаЛбƒб‡аАаЕаМ ббб‹аЛаКбƒ аНаА б‚аЕаКбƒб‰аИаЙ баЛаЕаМаЕаНб‚ <a>, аИаЗаВаЛаЕаКаАаЕаМ аИаЗ аНаЕаГаО аАб‚б€аИаБбƒб‚ href

 var href = $(this).attr('href');

   });

</script>

  </div>

</body>

</html>


Заключение

В данной работе было проведено исследование технологии JSP, для разработки веб-приложений, а также приведен пример простого веб-приложения на Java, реализующего функциональность просто интернет-магазина. Хотя рассмотренное приложение не выглядит полностью законченным, оно реализует все основные концепции, которые могут применяться для создания подобных веб-приложений.


Список литературы

  1.  Хабибуллин И. Ш. Создание распределённых приложений на Java 2. – СПб.: БХВ-Петербург, 2001 г. – 688с.: ил.
  2.  Хантер. Д. Введение в XML. – СПб.: Лори, 2001. – 656с.:ил.


 

А также другие работы, которые могут Вас заинтересовать

85104. Первая помощь при ранениях и травмах 43.45 KB
  Наиболее часто встречающиеся травмы это раны ушибы растяжения связок вывихи и переломы. Одна традиция заливать раны в том числе скальпированные йодом чего стоит. Что такое рана и чем она отличается от ушиба Какие раны наиболее опасны Что такое кровопотеря Чем она опасна Как вы обычно обрабатываете раны Расскажите алгоритм действий. Раны это поверхностные повреждения которые связаны с нарушением целости кожных покровов или слизистой оболочки.
85105. Первая медицинская помощь при остановке сердца 41.26 KB
  Первая медицинская помощь при остановке сердца Цели урока. Изучить признаки остановки сердца и порядок действий при сердечнолегочной реанимации. Получить первичные навыки по оказанию первой помощи при остановке сердца и прекращении дыхания. На втором месте после травм среди причин смерти от несчастного случая стоит остановка сердца.
85106. Профессионально-психологический отбор в Вооружённых Силах РФ 40.89 KB
  Да и не только сила но и ловкость выносливость другие физические качества без которых невозможно представить настоящего военного. Профессиональный психологический отбор в Вооруженных силах является одним из видов профессионального отбора и представляет собой комплекс мероприятий направленных на достижение качественного комплектования воинских должностей на основе обеспечения соответствия профессионально важных социальнопсихологических психологических и психофизиологических качеств граждан призываемых или добровольно поступающих на...
85107. Обязательная подготовка граждан к военной службе 44.67 KB
  Обязательная подготовка граждан к военной службе Цель: Изучить цели задачи и составляющие обязательной подготовки граждан к военной службе. Кроме того много времени отнимает психологическая адаптация молодых людей к условиям военной службы иногда до полугода. Для разрешения этого противоречия и предназначена обязательная подготовка к военной службе. В ходе мероприятий которые она и себя включает происходит первичная адаптация молодого человека к военной службе формируется мотивация на военное обучение вырабатываются необходимые...
85108. Добровольная подготовка граждан к военной службе 41.25 KB
  Добровольная подготовка граждан к военной службе Цели урока. Изучить назначение структуру и содержание добровольной подготовки к военной службе. должен пройти подготовку по основам военной службы на одном из учебных пунктов организаций. В нем проводит занятия по военной истории и воинским традициям священник местной церкви.
85109. Организация медицинского освидетельствования и медицинского обследования граждан при постановке на воинский учет 40.72 KB
  Организация медицинского освидетельствования и медицинского обследования граждан при постановке на воинский учет. Познакомить учащихся и изучить правила медицинского освидетельствования граждан при первоначальной постановке на воинский учет правила профессионального психологического отбора при первоначальной постановке на воинский учет; ознакомить с психологической классификацией воинских должностей. Отметьте знаком мероприятия относящиеся к добровольной подготовке граждан к военной службе: занятия в поисковых военноисторических...
85110. Разработка композиции вышивки и её выполнение 619.09 KB
  Тема: Разработка композиции вышивки и её выполнение. Цель: ознакомить учащихся с композицией вышивки изделий украшенных счётной гладью или занизыванием; научить создавать композиции вышивок подбирать нитки ткань для вышивания; формировать художественный вкус при подборе цветовой гаммы ниток для вышивания; развивать творческие способности учащихся при составлении композиций; воспитывать уважительное отношение к традициям национальной вышивки. Разработка композиции вышивки. Презентация Композиция вышивки IV.
85111. Обработка изделия мережкой. Правила БЖ при вышивании 468.5 KB
  Мережка – это ажурная техника вышивания. Выполняется мережка на месте выдернутых с ткани ниток. Мережки относятся к счётной технике. Существует большое количество различных мережек. Мережки применяются в салфетках, скатертях, для подшивания краёв изделия
85112. Рушниковые швы (крестик) 261.69 KB
  Цель: расширить знания учащихся по рушниковым швам; научить правильной технологии вышивания рушникового шва; воспитывать аккуратность при выполнении вышивки развивать художественный вкус учащихся. Актуализация опорных знаний и умений учащихся. Закрепление новых знаний и умений учащихся. Актуализация опорных знаний и умений учащихся.