Отчёт по практике «Разработка Web-приложения»

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

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

Содержание

Введение

1. Структура и задачи предприятия

1.1 Разработка систем с использованием WEB-технологий

2. Краткое теоретическиое обоснование применяемых для решения поставленной задачи технологий

2.1 WEB-технологии. Spring framework

2.1.1 Архитектура Spring

2.1.2 IoC — инверсия контроля

2.2 Struts

2.3 Hibernate

3. Практическая реализация поставленной задачи

Заключение

Список использованной литературы

Введение

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

Основной целью производственной практики является систематизация и закрепление знаний, полученных в период обучения.

К задачам практики можно отнести расширение теоретических знаний, развитие умений и навыков в ходе выполнения конкретной работы.

Место прохождения производственной практики — подразделение разработки программных продуктов использующих веб-технологии. Компания ИООО «ЭПАМ Системз».

Были поставлены следующие задачи:

·        изучить структуру предприятия и подразделения,

·        изучить технику безопасности и охраны труда,

·        ознакомиться с WEB-технологиями,

·        закрепить полученные знания на практике, построив WEB-приложение с помощью программного продукта Oracle Database и технологий Spring, Struts.

·        подобрать и систематизировать материалы для написания данного отчёта.

Отчёт о производственной практике состоит из трёх разделов.

Первый раздел посвящён описанию структуры и задач предприятия.

Во втором разделе приведены краткие теоретические сведения, необходимые для понимания и последующего решения поставленной задачи.

Скидка 100 рублей на первый заказ!

Акция для новых клиентов! Разместите заказ или сделайте расчет стоимости и получите 100 рублей. Деньги будут зачислены на счет в личном кабинете.

Третий раздел представляет собой подробное описание хода практической реализации поставленной производственной задачи.
1. Структура и задачи предприятия

Компания-резидент Парка высоких технологий «ЭПАМ Системз» (EPAM Systems) является на сегодняшний день крупнейшим поставщиком услуг в области разработки проектного (заказного) программного обеспечения и решений в Центральной и Восточной Европе. Созданная в 1993 году, Компания имеет представительства в 11 странах мира, более 7300 высококвалифицированных специалистов в штате, и продолжает активно расти. Реализовав тысячи сложных и масштабных решений для своих заказчиков по всему миру, EPAM Systems неизменно остаётся признанным лидером в таких областях как: разработка, тестирование <#»723683.files/image001.gif»>

Рис. 1 — Архитектура Spring

·        IoC — главный модуль

·        AOP — Spring может подключиться к программе в любой точке и выполнить там нужный код

·        Service Abstraction — абстрагируем благодаря тому, что мы вызываем интерфейсы Spring-а и вызываем его методы для работы. За счет этого он абстрагирует от всего остального (Web remoting, EJB, JMS, Scheduling итп).

Смотрите также:   Отчёт по практике "Информационные технологии в деятельности казначейства"

·        DAO — для работы с БД

·        ORM — JPA, hibername

·        WEB — классы, которые помогают упростить разработку Web (авторизация, доступ к бинам Spring-а из web)

·        MVC — создает web   2.1.2 IoC — инверсия контроля

Как это обычно делают люди. Менеджер: он зависит от какого-то сервиса или продукта. Сейчас менеджер просто создает этот сервис или продукт самостоятельно, то есть, менеджер делает new service и вызывает его методы. Представим, что у нас есть какая-либо фабрика и мы говорим фабрике, что нужно создавать продукты и она их производит. Но в этом случае мы зависим от фабрики. Так делают многие и это правильно.

Но как можно сделать лучше? Нужно сделать, чтобы менеджер получал, что-то извне, а не создавал. По сути это и называется инъекция зависимости (инверсия контроля). Теперь получается, что не менеджер уже контролирует объекты, а кто-то их контролирует, а менеджеру предоставляет. Мы, как бы, меняем направление движения.

Нужна работа? Есть решение!

Более 70 000 экспертов: преподавателей и доцентов вузов готовы помочь вам в написании работы прямо сейчас.


2.2 Struts

В паттерне MVC поток выполнения приложения всегда проходит через центральный контроллер. Контроллер перенаправляет запросы — в нашем случае, это HTTP запросы — к соответствующему обработчику. Обработчики привязаны к Модели, и каждый разработчик действует как адаптер между запросом и Моделью. Модель представляет, или инкапсулирует, бизнес-логику или состояние приложения. Управление обычно передается обратно через Контроллер соответствующему Представлению (View). Перенаправление осуществляется путем обращения к набору соответствий (mappings) между Моделью и представлением; причем этот набор обычно загружается из базы данных или из конфигурационного файла. Такая схема обеспечивает слабое связывание между Представлением и Моделью, что может сделать разработку и сопровождение приложения значительно проще.

Согласно паттерну Model-View-Controller, Struts имеет 3 основных компонента: сервлет контроллер, который входит в Struts, JSP страницы (это «представление”) и бизнес-логику приложения («модель”). Давайте рассмотрим, как это все взаимодействует.

Struts’овский сервлет-контроллер связывает и перенаправляет HTTP запросы к другим объектам среды, включая JavaServer Pages и наследники класса org. apache. struts. action. Action <#»723683.files/image003.gif»>

Рис. 2 — Список всех новостей

На Рис.3 можно увидеть форму для добавления новой новости. После нажатия на кнопку СОХРАНИТЬ происходит валидация, и если есть ошибки, то они подсвечиваются и не корректная информация не сохраняется.

Смотрите также:   Отчёт по практике "Анализ профессиональных обязанностей техника"

Рис.3 — Форма для добавления новости

На Рис.4 можно увидеть форму для редактирования новости. Форма имеет такой же вид как и на Рис.3, только с уже заполненной информацией.

Рис.4 — Форма для редактирования новости

Далее представим немного основных кусков кода с небольшими комментариями:

Листинг 1. Конфигурация Spring.

<? xml version=»1.0″ encoding=»Utf-8″? >

http://www.springframework.org/schema/beans/spring-beans-2.5 xsd»>

classpath: /resources/config. properties

Листинг 2. Класс, который обрабатывает запросы, пришедшие от пользователя.

public class NewsAction extends MappingDispatchAction {

private static final Logger log = Logger. getLogger (NewsAction. class);

private static final String SUCCESS = «success»;

private INewsDAO newsDAO;

public void setNewsDAO (INewsDAO newsDAO) {

this. newsDAO = newsDAO;

}

public ActionForward list (ActionMapping mapping, ActionForm form,request, HttpServletResponse response)

throws Exception {

log. info (NEWS_LIST);newsForm = (NewsForm) form;. setNewsList (newsDAO. getList ());

return mapping. findForward (SUCCESS);

}

public ActionForward view (ActionMapping mapping, ActionForm form,request, HttpServletResponse response)

throws Exception {newsForm = (NewsForm) form;

int newsId = newsForm. getId ();

log. info (NEWS_VIEW + newsId);. setNewsMessage (newsDAO. fetchById (newsId));

return mapping. findForward (SUCCESS);

}

public ActionForward edit (ActionMapping mapping, ActionForm form,request, HttpServletResponse response)

throws Exception {newsForm = (NewsForm) form;

int newsId = newsForm. getId ();

log. info (NEWS_EDIT + newsId);. setNewsMessage (newsDAO. fetchById (newsId));

return mapping. findForward (SUCCESS);

}

public ActionForward delete (ActionMapping mapping, ActionForm form,request, HttpServletResponse response)

throws Exception {newsForm = (NewsForm) form;[] selected = newsForm. getSelected ();

log. info (NEWS_DELETE + selected); deletedList = new ArrayList ();

for (int index = 0; index < selected. length; index++) {. add (Integer. parseInt (selected [index]));

}. remove (deletedList);

return mapping. findForward (SUCCESS);

}

public ActionForward cancel (ActionMapping mapping, ActionForm form,request, HttpServletResponse response)

throws Exception {traceDeque = (TraceDeque) request. getSession (). getAttribute (TRACE_DEQUE);back;

if (traceDeque. peekLast (). equals (ADD_NEWS_DO)) {= NEWS_LIST_DO;

} else {= traceDeque. peek ();

}

log. info (NEWS_CANCEL + back);refererForward = new ActionForward (back, true);

return refererForward;

}

public ActionForward save (ActionMapping mapping, ActionForm form,request, HttpServletResponse response)

throws Exception {newsForm = (NewsForm) form;news = newsForm. getNewsMessage ();. save (news);

Скидка 100 рублей на первый заказ!

Акция для новых клиентов! Разместите заказ или сделайте расчет стоимости и получите 100 рублей. Деньги будут зачислены на счет в личном кабинете.

log. info (NEWS_SAVE + news);path = mapping. findForward (SUCCESS). getPath ();modifiedForward = new ActionForward (path + «?» + ID +»=»

+ news. getId (), true);

return modifiedForward;

}

public ActionForward add (ActionMapping mapping, ActionForm form,request, HttpServletResponse response)

throws Exception {

log. info (NEWS_ADD);newsForm = (NewsForm) form;. setNewsMessage (new News ());

return mapping. findForward (SUCCESS);

}

}

Листинг 3. Пример пулла соединений:

public class ConnectionPool {

private static final Logger log = Logger. getLogger (ConnectionPool. class);

Смотрите также:   Отчёт по практике "Информационная защищенность организации, недостатки и их решение"

private static final String POOL_CREATED = «Connection pool created, pool size: «;

private static final String POOL_DESTROYED = «Connection pool destroyed»;

private String driver;

private String url;

private BlockingQueue queue;

private ConnectionPool (String driver, String url, int poolSize) {

this. driver = driver;

this. url = url;

this. poolSize = poolSize;();

}

private void initialize () {

try {. forName (driver). newInstance ();= new ArrayBlockingQueue (poolSize);

for (int i = 0; i < poolSize; i++) {. offer (DriverManager. getConnection (url));

}

} catch (SQLException e) {

throw new RuntimeException (e);

} catch (InstantiationException e) {

throw new RuntimeException (e);

} catch (IllegalAccessException e) {

throw new RuntimeException (e);

} catch (ClassNotFoundException e) {

throw new RuntimeException (e);

}

log. info (POOL_CREATED + poolSize);

}

public Connection getConnection () {connection = null;

try {= queue. take ();

} catch (InterruptedException e) {

throw new RuntimeException (e);

}

return connection;

}

public void returnConnection (Connection connection) {

boolean closed = true;

try {. setAutoCommit (true);= connection. isClosed ();

} catch (SQLException e) {

throw new RuntimeException (e);

}

if (! closed) {. offer (connection);

}

}

public void dispose () {connection;

if (queue == null) {

return;

}

while ( (connection = queue. poll ())! = null) {

try {

if (! connection. getAutoCommit ()) {.commit ();

}. close ();

} catch (SQLException e) {

throw new RuntimeException (e);

}

}

log. info (POOL_DESTROYED);

}

}

Листинг 4. Пример маппинга для Hibernate

<? xml version=»1.0″? >

<! DOCTYPE hibernate-mapping PUBLIC

«- // Hibernate/Hibernate Mapping DTD 3.0 // EN»

«http://hibernate. sourceforge.net/hibernate-mapping-3.0. dtd»>

«sequence»>

NEWS_SEQ

<! [CDATA [DELETE FROM News WHERE id IN (: newsIdList)]] >

Заключение

В результате производственной практики были приобретены новые теоретические и практические знания, навыки и умения. Выполненная работа имела отношение к реальной задаче, результат решения которой необходим конкретным людям.

Итогом практики явилось:

·        закрепление полученных в университете теоретических знаний о реляционных БД, СУБД;

·        получение новых знаний о web-технологиях;

·        работа с новым программными продуктами и системами;

·        получение навыков анализа документации;

·        приобретение опыта принятия самостоятельных решений;

·        приобретение опыта работы в команде;

·        приобретение опыта участия в долгосрочных, масштабных проектах.

Список использованной литературы

1       Интернет-сайт Предприятия места практики http://www.epam. by <http://www.epam.by>/. Дата доступа 20.06.2012.

Spring http://www.spring-source.ru/docs_simple. php <http://www.spring-source.ru/docs_simple.php>

Struts <http://www.struts.ru/userGuide/>

Hibernate http://ru. wikipedia.org/wiki/Hibernate_ (%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0)  <http://ru.wikipedia.org/wiki/Hibernate_(%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0)>

Средняя оценка 2 / 5. Количество оценок: 1

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

Научная статья по теме «Влияние сети интернет и социальных сетей на молодёжь (на примере студентов ЕГУ им. И.А. Бунина)»

Современное общество — это общество высоких технологий. Интернет охватил весь мир и все сферы жизнедеятельности людей. Интернет-магазины дают возможность совершать

Открыть / Скачать
Научная статья по теме «Рефлексивно-деятельностный подход в решении организационных конфликтов»

Рефлексия как процесс самопознания всегда вызывала интерес у многих мыслителей еще со времен античной философии. Аристотель определял рефлексию как «мышление,

Открыть / Скачать
Научная статья по теме «Возрастная и гендерная дискриминация в трудовых отношениях»

Дискриминация в трудовых отношениях остается одной из самых «острых» социальных проблем внутригосударственного и мирового масштаба. Дискриминация (discrimination) в переводе с

Открыть / Скачать

Нужна помощь с работой?

Более 200 консультантов онлайн готовы помочь тебе 24 часа в сутки 7 дней в неделю и даже в новогоднюю ночь :)

31-monstrs