Прост модел J2EE контролер
Навигационно меню
Персонализирани връзки
Съобщение
Информация за потребителя
Вие сте тук » Интернет форум! = int.5bb.ru = "Интернет и технологии" Прост модел J2EE контролер
Публикации 1 страница 1 от 1
Споделяне1 2011-11-28 01:25:24
- Автор: Админ
- = супер модератор =
- От: Липецк
- Регистриран: 2007-11-10
- Покани: 0
- Публикации: 2079
- Респект: +66
- Положителна: +45
- Пол Мъж
- ICQ: 438351970
- Прекарано във форума: 14 дни 14 часа
- Последно посещение: 2019-01-18 18:04:24
Представя съдържание на потребителите на много страници, съдържащи различни данни. В допълнение, инженерният екип, отговорен за разработването, внедряването и поддържането на приложението, се състои от хора с различни умения.
Един от основните проблеми с уеб приложенията е разделянето на логиката, която обработва самото представяне, тази, която контролира потока на логиката, данните, които трябва да бъдат представени, и тази, която контролира потока на логиката. В отговор на такива опасения беше разработен шаблонът Model-View-Controller (MVC).Този документ предоставя решение за моделиране на функционалността на потребителския интерфейс на уеб приложение, така че отделните части да могат лесно да се модифицират, т.е. рамката Model-View-Controller.
Въведение Фигурата Model-View-Controller (MVC) разделя моделирането на домейна, представянето и действията, базирани на въвеждане от потребителя, в три различни класа.
Модел: Моделът управлява поведението и данните в домейна, отговаря на искания за информация относно неговото състояние (обикновено от гледна точка) и отговаря наинструкции за промяна на състоянието (обикновено от контролера). Изглед: изгледът контролира показването на информация. Контролер: интерпретира клавишите на мишката и клавиатурата за въвеждане от потребителя, казвайки на модела и/или изгледа на промените, както е подходящо.
Решението, представено в тази статия, използва много прости сървлети и JSP и обикновени Java обекти, използването на тази система е много лесно, могат да се разработят всякакви приложения в реално време. Следвайки тази проста система, могат да се разберат най-сложните основи на ЗНАНИЕТО.
Модел-изглед-тип контролер
Mvc-Type Me: В този тип реализация, View и Controller съществуват като един View-Controller. В плана за внедряване, на страницата, подходът, ориентиран към логическия контролер, е внедрен в рамките на изгледа, т.е. с J2EE, това е JSP. Всички тези задачи на контролера, като извличане на параметри на HTTP заявка, се наричат бизнес логика (имплементирана в JavaBeans, ако не директно в JSP), а обработката на HTTP сесии е включена в JSP с помощта на скриптове и JSP тагове за действие.
Mvc Type-II: Проблемът с Type-I е липсата на контролируемост. С контролерите, вградени в JSP, използващи скриптлети, кодът може да излезе извън контрол много лесно. За да се преодолеят проблемите с възможността за поддръжка и многократна употреба, логиката на контролера може да бъде преместена в Servlets и JSP може да се използва за това, което е предназначен да бъде - компонент за изглед. Следователно, чрез инжектиране на контролери в сървлет, моделът на проектиране MVC Type-II може да бъде внедрен.
Основната разлика между MVC тип I и тип II е, че когато логиката на контролера е вградена в JSP в тип I и тип II, тя се премества в сървлет.
Основи на Mvc тип II
В тази рамкаработа, модел-обикновен стар java-обект, view-jsp, който ще изобрази страницата с помощта на модели, тези две зависимости на приложенията и тази рамка носи централизиран сървлет контролер, който ще попълни моделите и ще извика метод от класа на действие. По-долу е оригиналният контролер.
импортиране на java.io.IOException; импортиране на java.lang.reflect.Method;
импортиране на javax.servlet.ServletException; импортиране на javax.servlet.http.HttpServlet; импортиране на javax.servlet.http.HttpServletRequest; импортиране на javax.servlet.http.HttpServletResponse;
публичен клас SimpleController разширява HttpServlet
частно картографиране на ActionBeanMapping;
public void doGet(HttpServletRequest request, Httpservletresponse response) хвърля ServletException, IOException try String strJsp = null; String strURI = request.getRequestURI(); int startIndex = strURI.lastIndexOf("/"); int endIndex=strURI.lastIndexOf ("имате"); String strAction = Struri.substring(startIndex+1, endIndex); This.populatebean(request, strAction); Simplehandler handler = (Simplehandler)mapping.getActionInstance(strAction); Strjsp = handler.process(request, response); Request. getrequestdispatcher(strJsp).forward(заявка, отговор); > catch (Изключение e) E.printstacktrace(); Request.getrequestdispatcher("/error.jsp").forward(заявка, отговор); > >
public void doPost(HttpServletRequest request, Httpservletresponse response) хвърля ServletException, IOException This.doget(request, response); >
public void init() хвърля ServletException String strFile = this.getServletContext().getRealPath("/")+ This.getservletconfig().getInitParameter("actionmappings"); System.out.println("MAPPING FILE PATH::"+strFile); tryкартографиране = ново ActionBeanMapping(strFile); > catch (IOException e) E.printstacktrace(); > > private void populateBean(HttpServletRequest request, strAction string) obj; try obj = mapping.getBeanInstance(strAction); Methods[] = obj.getClass().getMethods(); for(int i= 0;i Метод на метода = методи[i]; String strName = method.getName(); if(strName.startsWith("set")) String strField = strName.substring(4); Strfield = String.valueof(strName.charAt(3)).toLowerCase(+) Str field; String arrayValue[] = request.get ParameterValues(strField); String'= null; if(arrayValue != null &&arrayValue.length>0)'= Arrayvalue[0]; > опитайте method.invoke(obj, '); > catch (Изключение e) E.printstacktrace(); > ><1 3>> Request.setattribute(SimpleHandler.BEAN, obj); >catch (Изключение e) E.printstacktrace(); > > >
Методът init на сървлета се използва за инициализиране на действия и съпоставяне на компоненти.
public void init() хвърля ServletException String strFile = this.getServletContext().getRealPath("/")+ This.getservletconfig().getInitParameter("actionmappings"); System.out.println("MAPPING FILE PATH::"+strFile); опитайте mapping = new ActionBeanMapping(strFi le); > catch (IOException e) E.printstacktrace(); > > Пътят на съпоставящия файл се взема от конфигурационния сървлет и помощният клас ActionBeanMapping се инициализира.
импортиране на java.io.FileInputStream; импортиране на java.io.IOException; импортиране на java.util.Properties;
публичен клас ActionBeanMapping private Properties prop = new Properties();
public ActionBeanMapping(String propFile) хвърля IOException this.prop.load(newFileInputStream(propFile)); > публичен обект getActionInstance(низ от действия) хвърля низ за изключение str .+action.trim()); if(str >throw new NullPointerException("Null actions::"+action); връща Class.forName(strClass).newInstance(); &g t;
public Object getBeanInstance(String actions)хвърля Изключение String str .+action); if(str >new NullPointerException("Null bean::"+action); return Class.forName(strClass).newInstance(); > >
Този клас чете файл със свойства и предоставя два метода за създаване на екземпляр на класовете Action и Bob, използвайки отражение на Java за определено потребителско действие. Методите GET и POST на заявката извикват следния код в контролера. опитайте String strJsp = null; Of("you"); String strAction = Struri.substring(startIndex+1, endIndex); This.populatebe an(request, strAction); Simplehandler handler = (Simplehandler)mapping.getActionInstance(strAction); Strjsp = handler.process(request, response); Request.getrequest dispatcher(strJsp).forward(request, response); > catch (Изключение e) E.printstacktrace(); Request.getrequestdispatcher("/error.jsp").forward(заявка, отговор); >
Този кодов фрагмент получава потребителски действия от URI и създава компонента и класовите действия и попълва модела и извиква метода за класови действия. Всички класови действия в приложението трябва да имплементират интерфейса SimpleHandler. Ако възникнат грешки, този контролер изпраща обобщена страница за грешка.
импортиране на javax.servlet.http.HttpServletRequest; импортиране на javax.servlet.http.HttpServletResponse;
публичен интерфейс SimpleHandler публичен статичен финал BEANS = "simple.BEAN";
процес публичен низ (заявка HttpServletRequest, отговор HttpServletResponse) хвърля изключение;
Всички действия на класовете в приложението трябва да реализират метода процес.
Попълването на модела на данни от обекта на заявката се извършва чрез следния метод на контролера.
private void populateBean(HttpServletRequest request, String strAction) Object obj; try obj = mapping.getBeanInstance(strAction); Methods[] = obj.getClass().getMethods(); for(int i=0; i Method method = methods[i]; String strName = method.getNa me(); if(strName.startsWith("set")) String strField = strName.substring(4); Strfield = String.valueof(strName.charAt(3)).toLowerCase(+) Strfield; String arrayValue[] = request.getParameterValues(strField); String' = null; if(arrayValue != null && amp;arrayValue.length>0)'= Arrayvalue[0]; > try method.invoke(obj, '); >catch (Изключение e) E.printstacktrace(); > > > Request.setattribute(SimpleHandler.BEAN, obj); &g t;catch (Изключение e) E.printstacktrace(); > >
Този метод попълва модела с данни и обвързва модела към обекта на заявката, този модел е в обхвата на класа и JSP.
[%@ page language="java" pageEncoding="ISO-8859-1"%] [html] [head] [title]Грешка.[/title] [/head] [body] [font color="#ff0000"]Възникна грешка при обработката на заявката. [/font] [/body] [/ html]
Уеб конфигурацията е дефинирана по-долу, това е прост конфигурационен файл за контролер.
[?xml version="1.0" encoding="UTF-8"?] [уеб версия 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 -- [servlet] [description]Simple J2EE Controller[/description] [display-name]Simple J2EE Controller[/display-name] [servlet-name]SimpleController[/servlet-name]<1 3>[servlet-name] yo-class]simple.SimpleController[/servlet-class] [init-param] [param-name]actionmappings[/param-name] [param value]WEB-INF/actionmappings.properties[/param value] [/init-param] [load-per-startup]1[/ зареждане при стартиране] [/servlet]
Примерно приложение, базирано на
[tr][td][/en] [/table] [/form] [/body] [/html]
импортиране на javax.servlet.http.HttpServletRequest; импортиране на javax.servlet.http.HttpServletResponse;
Този JSP показва съобщение за успешна обработка на данни.
Заключение
Един от основните проблеми с уеб приложенията е разделянето на логиката, която обработва самото представяне, тази, която контролира потока на логиката, данните, които трябва да бъдат представени, и тази, която контролира потока на логиката. Това е в отговор на такива опасения, че моделът Model-View-Controller (MVC) е разработен.