Интернет Форум! = int.5bb.ru =

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Интернет Форум! = int.5bb.ru = » Интернет и Технологии » Простая J2EE модель контроллера


Простая J2EE модель контроллера

Сообщений 1 страница 4 из 4

1

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

Одной из основных проблем с web-приложений является разделение логики, которые занимаются Презентация себя, то данные должны быть представлены, а тот, который управляет потоком логики. Это как ответ на такие опасения, что Model-View-Controller(MVC паттерн был разработан. Этот документ предоставляет решение для моделирования пользовательского интерфейса, функциональность Веб-приложения так, чтобы отдельные части могут быть легко изменены, то есть модель-представление-контроллер рамках.

Введение

Model-View-Controller (MVC) рисунок отделяет моделирование домена, презентации, и действия, основанные на ввод пользователя в трех разных классах.

Модель: модель управляет поведением и данных в предметной области, отвечает на запросы на информацию о ее состоянии (обычно от точки зрения), и отвечает на инструкции, чтобы изменить состояние (обычно от контроллера).
Вид: вид управляет отображением информации.
Контроллера: интерпретирует мышь и клавиатура клавиши для ввода от пользователя, сообщая модель, и/или вид на изменения как соответствующие.

Важно отметить, что оба представления и контроллера, зависит от модели. Однако, модель зависит ни на вид, ни на контроллер. Это одно из ключевых преимуществ разделения. Это разделение позволяет этой модели будет построено и испытано независимой визуальной презентации. Расстояние между представления и контроллера является вторичной по многим rich-client-приложений, и, в самом деле, многие интерфейс пользователя базы реализации роли, как один объект. В Web-приложениях, с другой стороны, расстояние между просмотра (браузер) и контроллер (серверные компоненты обработки HTTP-запроса) очень четко определены.

Решения, представленную в настоящем документе используется очень простой сервлетов и JSP и обычных java-объектов, использования этой системы очень легко любых приложений реального времени могут быть разработаны. Следуя этой простой системы наиболее сложных ЗНАНИЕ основ можно понять.

Модель-Представление-Контроллер Тип

Mvc-Типа Я: В этом типе реализации, Представление и Контроллер существовать как единое целое-View-Controller. В плане реализации, на Странице, ориентированный подход Контроллер логики реализуется в рамках Вид т.е. с J2EE, это JSP. Все эти задачи Контроллер, как, например, извлечение HTTP-запрос параметров, называют бизнес-логики (реализовано в JavaBeans, если не непосредственно в JSP), и обработки HTTP-сессии включено в JSP с использованием скриплеты и JSP-тегов действия.

Mvc Тип-II: проблема с Type-I является ее недостаточная управляемость. С Контроллеров, встроенных в JSP с использованием скриптлетов, код может получить из рук очень легко. Чтобы преодолеть проблемы, ремонтопригодности и повторного использования, Контроллер логики, могут быть перенесены в сервлетов и JSP могут быть использованы для чего он предназначен, чтобы быть-компонента представления. Следовательно, путем внедрения Контроллеров в сервлет, MVC Тип-II Шаблон Проектирования могут быть реализованы.

Основное различие между MVC Типа I и Типа II, когда Контроллер логики, встроенной в JSP в Типа I и Типа II, его переехала в сервлет.

Mvc Тип-II Основы

В этом кадре работа, Модель-plain old java-объект, вид-JSP, который будет отображать страницу, используя модели , эти две зависимости от приложения и эта основа носит централизованный контроллер сервлет, который будет заполнить модели и вызывает метод из класса действия.
Ниже приведен исходный контроллера.

Simplecontroller.java

пакет прост;

импорт java.io.IOException;
импорт java.lang.reflect.Method;

импорт javax.servlet.ServletException;
импорт javax.servlet.http.HttpServlet;
импорт javax.servlet.http.HttpServletRequest;
импорт javax.servlet.http.HttpServletResponse;

public class SimpleController расширяет HttpServlet {

частные ActionBeanMapping картирование;

public void doGet(HttpServletRequest запрос,
Httpservletresponse ответ)
бросает ServletException, IOException {
try {
Строка strJsp = null;
Строка strURI = request.getRequestURI();
int startIndex = strURI.lastIndexOf("/");
int endIndex=strURI.lastIndexOf("у тебя");
Строка strAction =
Struri.substring(startIndex+1, endIndex);
This.populatebean(запрос, strAction);
Simplehandler handler =
(Simplehandler)mapping.getActionInstance(strAction);
Strjsp = handler.process(request, response);
Request.getrequestdispatcher(strJsp).forward(request, response);
} catch (Exception e) {
E.printstacktrace();
Request.getrequestdispatcher("/error.jsp").forward(request, response);
}
}

public void doPost(HttpServletRequest запрос,
Httpservletresponse ответ)
бросает ServletException, IOException {
This.doget(request, response);
}

public void init() throws ServletException {
Строка strFile = this.getServletContext().getRealPath("/")+
This.getservletconfig().getInitParameter("actionmappings");
System.out.println("MAPPING FILE PATH::"+strFile);
try {
отображение = new ActionBeanMapping(strFile);
} catch (IOException e) {
E.printstacktrace();
}
}
частные void populateBean(HttpServletRequest запроса, Строка strAction)
{
Объект obj;
try {
obj = mapping.getBeanInstance(strAction);
Методы[] = obj.getClass().getMethods();
for(int i=0; i
Метод method = методов[i];
Строка strName = method.getName();
если(strName.startsWith("set")) {
Строка strField = strName.substring(4);
Strfield =
String.valueof(strName.charAt(3)).toLowerCase(+)
Strfield;
Строка arrayValue[] = request.getParameterValues(strField);
Строка'= null;
если(arrayValue != null &&arrayValue.length>0){
'= Arrayvalue[0];
}
try {
method.invoke(obj, ');
} catch (Exception e) {
E.printstacktrace();
}
}
}
Request.setattribute(SimpleHandler.BEAN, obj);
} catch (Exception e) {
E.printstacktrace();
}
}
}

Сервлета метод init используется для инициализации действий и боб отображений.

public void init() throws ServletException {
Строка strFile = this.getServletContext().getRealPath("/")+
This.getservletconfig().getInitParameter("actionmappings");
System.out.println("MAPPING FILE PATH::"+strFile);
try {
отображение = new ActionBeanMapping(strFile);
} catch (IOException e) {
E.printstacktrace();
}
}
Файл отображения путь берется из сервлета config, и инициализирован ActionBeanMapping вспомогательный класс.

Actionbeanmapping.java:

пакет прост;

импорт java.io.FileInputStream;
импорт java.io.IOException;
импорт java.util.Properties;

public class ActionBeanMapping {
частные Свойства prop = новые Свойства();

общественные ActionBeanMapping(String propFile) throws IOException {
this.prop.load(новый FileInputStream(propFile));
}
общественный Объект getActionInstance(String действий)throws Exception {
Строка strClass = prop.getProperty("действие".+action.trim());
если(strClass == null)
throw new NullPointerException("Null действий::"+действие);
вернуться Class.forName(strClass).newInstance();
}

общественный Объект getBeanInstance(String действий)throws Exception {
Строка strClass = prop.getProperty("боб".+действие);
если(strClass == null) throw
новый NullPointerException("Null боб::"+действие);
вернуться Class.forName(strClass).newInstance();
}
}

Этот класс читает файл свойств и обеспечивает два метода для создания экземпляра Действий и Боб классов с использованием java reflection для указанного пользователя действия.
Методы GET и POST запроса вызывает следующий код в контроллере.
try {
Строка strJsp = null;
Строка strURI = request.getRequestURI();
int startIndex = strURI.lastIndexOf("/");
int endIndex=strURI.lastIndexOf("у тебя");
Строка strAction =
Struri.substring(startIndex+1, endIndex);
This.populatebean(запрос, strAction);
Simplehandler handler =
(Simplehandler)mapping.getActionInstance(strAction);
Strjsp = handler.process(request, response);
Request.getrequestdispatcher(strJsp).forward(request, response);
} catch (Exception e) {
E.printstacktrace();
Request.getrequestdispatcher("/error.jsp").forward(request, response);
}

Этот фрагмент кода получает действий пользователя от URI, и создает компонент и действия класса и заполняет модель и вызывает метод действий класса. Все действия классов в заявке должны реализовывать интерфейс SimpleHandler. Если произошли какие-либо ошибки этот контроллер направляет обобщенную страница ошибки.

Simplehandler.java:

пакет прост;

импорт javax.servlet.http.HttpServletRequest;
импорт javax.servlet.http.HttpServletResponse;

открытый интерфейс SimpleHandler {
public static final ФАСОЛИ = "simple.BEAN";

public String процесса(HttpServletRequest запрос, HttpServletResponse ответ) throws Exception;

}

Все действия классов в заявке должны осуществлять процесс метод.

Население модель данных из объекта запроса осуществляется по следующим метода контроллера.

частные void populateBean(HttpServletRequest запроса, Строка strAction)
{
Объект obj;
try {
obj = mapping.getBeanInstance(strAction);
Методы[] = obj.getClass().getMethods();
for(int i=0; i
Метод method = методов[i];
Строка strName = method.getName();
если(strName.startsWith("set")) {
Строка strField = strName.substring(4);
Strfield =
String.valueof(strName.charAt(3)).toLowerCase(+)
Strfield;
Строка arrayValue[] = request.getParameterValues(strField);
Строка'= null;
если(arrayValue != null &&arrayValue.length>0){
'= Arrayvalue[0];
}
try {
method.invoke(obj, ');
} catch (Exception e) {
E.printstacktrace();
}
}
}
Request.setattribute(SimpleHandler.BEAN, obj);
} catch (Exception e) {
E.printstacktrace();
}
}

Этот метод заполняет модель данными и связывает модель для объекта запроса, эта модель находится в радиусе действия класса и JSP.

error.jsp

[%@ page language="java" pageEncoding="ISO-8859-1"%]
[html]
[головка]
[title]Ошибка.[/title]
[/head]
[body]
[font color="#ff0000"]Ошибка произошла при обработке запроса.[/font]
[/body]
[/html]

Web-конфигурация определяется ниже, это простой файл конфигурации на контроллер.

web.xml:

[?xml version="1.0" encoding="UTF-8"?]
[web-версия app="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema инстанции"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"]
[сервлета]
[описание]Простой J2EE Контроллер[/описание]
[display-name]Простой J2EE Контроллер[/display-name]
[сервлет-имя]SimpleController[/servlet-имя]
[сервлет-класс]simple.SimpleController[/servlet-класс]
[init-param]
[param-имя]actionmappings[/param-имя]
[param value]WEB-INF/actionmappings.properties[/param value]
[/init-param]
[нагрузки-на-автозагрузки]1[/нагрузка-на-автозагрузки]
[/servlet]

[servlet-mapping]
[сервлет-имя]SimpleController[/servlet-имя]
[url-шаблон]*"трудитесь[/url-шаблон]
[/servlet-mapping]
[добро-file-list]
[добро-файл], [/welcome-файл]
[/welcome-file-list]
[/web-app]

Контроллер сервлет запускается для всех url-адресов, которые будут заканчивается у тебя, этот сервлет нагрузок при запуске сервера, и определяет действие отображений путь к файлу.

Пример Приложения на основе

Предоставление образец заявления на регистрацию для хранения имя, адрес электронной почты и телефон.
index.jsp:
[%@ page language="java" pageEncoding="ISO-8859-1"%]
[html]
[головка]
[title]главная страница[/title]
[/head]

[body]
[form method="post" action="register.do"]
[table width="200"border="0" align="center"]
[tr]
[td colspan=2 align="center"][сильный]Данные Пользователя[/strong] [/td][/ru]
[tr]
[td]Название[/td]
[td][input type="text" name="name"][/td][/ru]
[tr]
[td align="left"]Электронный адрес[/td]
[td][input type="text" name="email"][/td][/ru]
[tr]
[td align="center"] Телефон[/td]
[td][input type="text" name="телефон"][/td][/ru]

[tr]
[td colspan="2" align="center"] [input type="submit" value="Submit" name="Submit"][/td][/ru]
[/table]
[/форму]
[/body]
[/html]

Это JSP-странице для ввода данных пользователем для сохранения данных в системе. Когда пользователь нажимает кнопку Submit на странице данных размещена в действие реестра.
Боб и Действий отображений вошли в отображения файла.
actionmappings.properties
action.register=simple.RegistrationHandler
bean.register=simple.User
все действия пользователей от просмотра, необходимо представить в свойства этого файла.
Когда пользователь отправляет данные на контроллер заполняется данными для следующей модели.
User.java:
пакет прост;

общественный класс Пользователя {
private String имя;
частные Строку, электронный адрес;
private String телефон;
public String getEmail() {
вернуться электронный адрес;
}
public void setEmail(Строку, электронный адрес) {
this.email = электронный адрес;
}
public String getName() {
возвращение имени;
}
public void setName(String name) {
и = имя;
}
public String getPhone() {
возвращение телефона;
}
public void setPhone(String телефона) {
this.phone = телефон;
}
}
Следующие действия вызывается, когда данные представлены.
пакет прост;

импорт javax.servlet.http.HttpServletRequest;
импорт javax.servlet.http.HttpServletResponse;

public class RegistrationHandler реализует SimpleHandler {
public String процесса(HttpServletRequest запрос,
Httpservletresponse ответ) throws Exception {
User = (Пользователя)request.getAttribute(SimpleHandler.BEAN);
возвращение "/success.jsp";
}
}
Это действие класс получает компонента из просьбе; этот компонент может быть сохранен в системе, после успешной обработки возвращается в success.jsp для контроллера вперед к этой точке зрения.
success.jsp:
[%@ page language="java" import="просто.*" Pageencoding="ISO-8859-1"%]
[%
User = (Пользователя) request.getAttribute(SimpleHandler.BEAN);
%]
[html]
[головка]
[title]Успех.[/title]
[/head]
[body]
[table width="200"border="0" align="center"]
[tr]
[td colspan=2 align="center"][сильный]Пользовательские Данные Успешно Сохранены[/strong] [/td][/ru]
[tr]
[td]Название[/td]
[td][%= user.getName( %) ][/td][/ru]
[tr]
[td align="left"]Электронный адрес[/td]
[td][%= user.getEmail( %) ][/td][/ru]
[tr]
[td align="center"] Телефон[/td]
[td][%= user.getPhone( %) ][/td][/ru]
[tr]
[td colspan="2" align="center"] [input type="button"value="Home" onClick="window.location='/MVC';" name="Submit"][/td][/ru]
[/table]
[/body]
[/html]

Это JSP показывает сообщение успеха обработки данных.

Заключение

Одной из основных проблем с web-приложений является разделение логики, которые занимаются Презентация себя, то данные должны быть представлены, а тот, который управляет потоком логики. Это как ответ на такие опасения, что Model-View-Controller(MVC паттерн был разработан.

0

2

Мне недавно понадобилось приобрести температурные преобразователи от зарубежных производителей. Большой выбор я увидела на сайте компании "ЭИК" https://eicom.ru/catalog/Sensors, Transducers/Temperature Sensors, Transducers/ . Понравилось, что здесь есть и описание, и схемы, и характеристики. Это упрощает задачу сделать выбор.

0

3

Ага

0

4

Как и любое уважаемое онлайн-казино, главная цель, которую преследуют все клубы – это наполнение каталога игровых аппаратов. В регистрация вулкан 777 навигация россия портале он поистине внушительный. Любой посетитель, который зайдет на официальную страницу, будет приятно удивлен. Здесь его встретит большой ассортимент сертифицированных слотов от лучших мировых брендов. Это такие производители, как:
Novomatic;
Igrosoft;
Net Entertainment;
Booongo;
Microwave.

0


Вы здесь » Интернет Форум! = int.5bb.ru = » Интернет и Технологии » Простая J2EE модель контроллера