Проста J2EE модель контролера
Меню навігації
Посилання користувача
Оголошення
інформація про користувача
Ви тут » Інтернет Форум! = int.5bb.ru = » Інтернет та технології » Проста J2EE модель контролера
Повідомлень 1 сторінка 1 з 1
Поділитися1 2011-11-28 01:25:24
- Автор: Admin
- = Super Moderator =
- Звідки: м. Липецьк
- Зареєстрований: 2007-11-10
- Запрошень: 0
- Повідомлень: 2079
- Повага: +66
- Позитив: +45
- Стать: Чоловіча
- ICQ: 438351970
- Провів на форумі: 14 днів 14 годин
- Останній візит: 2019-01-18 18:04:24
Представляє контент для користувачів на багатьох сторінках, що містять різні дані. Крім того, інженерна група відповідає за розробку, впровадження та підтримку додаток складається з людей з різними навичками.
Однією з основних проблем з web-додатків є поділ логіки, які займаються презентація себе, то дані повинні бути представлені, а той, який управляє потоком логіки. Це як відповідь на такі побоювання, що Model-View-Controller(MVC патерн був розроблений. Цей документ надає рішення для моделювання інтерфейсу користувача, функціональність Веб-додатки так, щоб окремі частини можуть бути легко змінені, тобто модель-представлення-контролер рамках .
Вступ Model-View-Controller (MVC) малюнок відокремлює моделювання домену, презентації, та дії, засновані на введення користувача в трьох різних класах.
Модель: модель управляє поведінкою та даних у предметній галузі, відповідає на запити на інформацію про її стан (зазвичай від точки зору), та відповідає наінструкції, щоб змінити стан (зазвичай від контролера). Вигляд: вид управляє відображенням інформації. Контролера: інтерпретує мишу та клавіатура клавіші для введення від користувача, повідомляючи модель, та/або вид на зміни як відповідні.
Рішення, представлені в цьому документі використовується дуже простий сервлет і 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, який відображатиме сторінку, використовуючи моделі , ці дві залежності від додатку і ця основа носить централізований контролер сервлет, який буде заповнити моделі та викликає метод з класу дії. Нижче наведено вихідний контролера.
імпорт 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 = "); 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.getBeanIn 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> = Arrayvalue[0]; > try method.invoke(obj, '); &cat > 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 допоміжний клас.
імпорт 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 Рядок str .+action.trim()); якщо(str >throw new NullPointerException("Null дій: :"+дія); повернутися Class.forName(strClass).newInstance(); >
загальний Об'єкт getBeanInstance(String дій)throws Exception Рядок str .+дія); якщо(str >новий NullPointerException("Null боб::"+дія); повернутись Class.forName(strClass).newInstance( ); > >
Цей клас читає файл властивостей і забезпечує два методи для створення екземпляра Дій і Боб класів з використанням java reflection для вказаного користувача дії. Методи GET і POST запиту викликає наступний код у контролері. try Рядок>Рядок 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. Якщо виникли будь-які помилки, цей контролер направляє узагальнену сторінку помилки.
імпорт 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.
[%@ page language="java" pageEncoding="ISO-8859-1"%] [html] [головка] [title]Помилка.[/title] [/head ] [body] [font color="#ff0000"]Помилка сталася при обробці запиту. [/font] [/body] [/html]
Web-конфігурація визначається нижче, це простий конфігураційний файл на контролер.
[?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 -- [сервлета] [опис]Простий 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]
Приклад Програми на основі
[tr] [td colspan="2" align="center"] [input type="submit" value="Submit" name="Submit"][/td][/uk] [/ table] [/форму] [/body] [/html]
імпорт javax.servlet.http.HttpServletRequest; імпорт javax.servlet.http.HttpServletResponse;
Це JSP показує повідомлення успіху обробки даних.
Висновок
Однією з основних проблем з web-додатків є поділ логіки, які займаються презентація себе, то дані повинні бути представлені, а той, який управляє потоком логіки. Це як відповідь на такі побоювання, що Model-View-Controller(MVC патерн був розроблений).