43132

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

Курсовая

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

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

Русский

2013-11-04

953 KB

37 чел.

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с.:ил.


 

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

74585. ГЕОЛОГИЧЕСКАЯ ДЕЯТЕЛЬНОСТЬ ОЗЕР И БОЛОТ 220.5 KB
  Источниками питания озер служат атмосферные воды поверхностный сток и подземная разгрузка водоносных горизонтов; Основную массу воды в озера поставляют реки. По величине озера сильно различаются площадь крупных озер-морей измеряется сотнями тысяч квадратных километров...
74586. Геологическая деятельность подземных вод 872.5 KB
  Формы существования воды в горных породах Интенсивная деятельность подземных вод определяется прежде всего их огромной массой. Практически в пустотах и трещинах земной коры содержится огромный подземный океан превышающий по массе воды например Атлантический океан. С увеличением количества воды в пустотах породы возникает пленочная вода образующая на поверхности минеральных частиц сплошную пленку из нескольких слоев молекул рис. Движение воды на стенках пустот происходит до тех пор пока толщина пленок не станет равной причем пленочная...
74587. Особенности поражения сильнодействующими ядовитыми веществами с преимущественно цитотоксическим действием 49.5 KB
  Изучить принципы оказания первой медицинской помощи. Тестовые задания по военной токсикологии радиобиологии и медицинской защите Куценко С. Особенности организации первой медицинской помощи и основные принципы лечения. Особенности организации первой медицинской помощи и основные принципы лечения.
74588. Медико-тактическая характеристика очагов поражения ядерным оружием 1.42 MB
  Оно будет возникать как в момент ядерного взрыва так и на следе радиационного облака. Характеристика поражающих факторов ядерного взрыва. Все эти формы проявления энергии получили название поражающих факторов ядерного взрыва. Воздушная ударная волна начинает действовать на объект через несколько секунд после взрыва в зависимости от его удаления от центра эпицентра и длится от долей до нескольких секунд.
74589. Медико- тактическая характеристика очагов поражения при авариях на атомных энергетических установках 70 KB
  Доза внутреннего облучения в таких условиях составит 10 бэр а сумма сочетанного облучения 20 бэр. Следовательно эффективная годовая доза при средней мощности гаммаизлучения равной 5 мР ч составит 10 бэр при средней мощности дозы равной 03 мР ч 05 бэр в год. Допустимая доза облучения для населения за первый год после аварии была установлена в 10 бэр а в последующем 05 бэр в год. При угрозе получения дозы 75 бэр и выше эвакуация организуется немедленно.
74590. Отравляющие и сильнодействующие ядовитые вещества кожно-нарывного действия. Клиника, диагностика и лечение 99 KB
  Клиника поражения и особенности её проявления при различных путях поступления в организм. Эти ОВ являются клеточными органическими ядами вызывают язвенно-некротические поражения тех органов и систем с которыми имеют контакт и кроме того оказывают общерезорбтивное действие на организм. В связи с этим они на большие сроки выводят личный состав из строя затрудняется лечение поражения ими так как отсутствует за исключением унитиола при поражении люизитом антидотная терапия. Местное действие проявляется в развитии воспалительного и...
74591. Современное состояние и перспективы развития токсикологии отравляющих и сильнодействующих ядовитых веществ 114.5 KB
  Значительная часть американских химических боевых средств размещена и за пределами национальной территории: в Южной части Тихого океана (атолл Джонсоне) и в Германии. Общий объём ОВ, находящихся только на территории Германии
74592. Отравляющие и сильнодействующие ядовитые вещества нервно-паралитического действия. Клиника, диагностика и лечение 126 KB
  Это объясняется следующими свойствами ФОВ: а высокой токсичностью в десятки раз и сотни превышающая токсичность старых ОВ ультраяды один вдох смертелен при концентрации 01 мг л. На тактическое использование ФОВ существенное влияние оказывают их физико-химические и токсические свойства. После возникновения клинической картины отравления смертельный исход наступает обычно быстрее чем при поражении другими ФОВ. Способы доставки ФОВ: авиабомбы артиллерийские химические снаряды мины фугасы специальные распылители...
74593. Отравляющие и сильнодействующие ядовитые вещества общеядовитого действия. Клиника 29.97 KB
  Физикохимические и токсические свойства синильной кислоты цианидов оксида углерода нитробензола серо водорода акрилнитрила динитроортокрезола и др. Некоторые органические соедине ния синильной кислоты употребляются в сельском хозяйстве в добывающей промышленности могут встречаться поражения людей этими соединениями. снарядами снаряженными смесью синильной кислоты и треххлористого мышьяка. синильной кислоты и хлорциана опасность синильной кислоты в полевых условиях оказалась не существенной изза низкой устойчивости ее паров в...