Эта статья поделилась с вами методом настройки структуры Struts2 MVC для вашей ссылки. Конкретный контент заключается в следующем
Пользовательский MVC: (сначала поймите концепции модели1 и модели2)
Model1 и Model2:
Model1: Это чистая технология разработки JSSP, которая объединяет код бизнес -логики и просмотр кода рендеринга.
Model2: Model2 основана на модели1, разделяет код бизнес -логики и образует только сервлет. Model2 также разработан на основе MVC.
Характеристики MVC суммируются следующим образом:
(1) Собственность данных и разделение отображения
(2) Контроллер объединяет различные модели и представления вместе
(3) Приложение делится на три части, слабо связанные и работает вместе, тем самым улучшая масштабируемость и обслуживаемость приложения
(4) Каждый слой отвечает за различные функции и выполняет свои собственные обязанности. Компоненты каждого уровня имеют одинаковые характеристики, которые облегчают генерацию программного кода посредством инженерии и инструментов.
MVC думал и его преимущества (очень сильные)
MVC - это архитектурная модель, цель состоит в том, чтобы разделить модель (бизнес -логику) и представление (уровень презентации), чтобы модель и представление могли быть изменены независимо, не влияя друг на друга. Большая часть программного обеспечения принимает этот шаблон при разработке архитектур. Есть много способов использовать режим MVC. Когда система, просмотр браузера, хочет разработать мобильную версию, вам нужно только перестроить представление, а бизнес -логика модельной части может быть использована повторно. Многие программное обеспечение должно запустить версии B/S и C/S одновременно, внедряя режим MVC, модель может быть использована повторно, и необходимо разработать только разные представления. MVC Idea делит приложение на три основные части: M (модель, модель) V (просмотр, представление) C (контроллер, контроллер). В тех случаях, когда M представляет часть, которая обрабатывает бизнес -логику, V представляет часть, которая отображает данные и получает пользовательский ввод, C аналогичен посреднику, гарантируя, что M и V не взаимодействуют напрямую.
Основные шаги следующие:
1. Создать xml Document Framework.xml
2. Определите интерфейс действия
3. Определите класс действий и рассматривайте его как узел действия
4. Определите класс ActionMapping Manage для управления классами ActionMapping (узлы действий)
5. Определите класс ActionManager, используя механизм отражения для получения конкретных классов на основе имени класса типа строки (написание тегов web.xml)
6. Напишите сервлеты для контроля времени работы
7. Определите класс входа для тестирования
1. Создать xml Document Framework.xml
<!-? xml version = "1.0" Encoding = "utf-8"?-> <!-Файл ограничения определения-> (Примечание) <!-Элемент Указывает элемент-> <!-Attlist указывает атрибут-> <!-CDATA указывает тип строки-> <!-Требуется, что этот атрибут должен быть написан-> <!- *Представляют множественные-> <!-Имгнорированный. Переадресация-> <!-Element Action (Action)-> <!-Element Action (результат*)-> (* означает несколько) <!-Имя действия ATTLIST Имя действия CDATA #TREQUIND CLASS CDATA #REQUIRED-> <!-ATTLIST Имя результата CDATA #Implied Перенаправление (true | false) «false»->] <Framework> <! name = "success"> success.jsp </result> <result name = "login"> index.jsp </result> </action> </action> </framework>
Примечание: спецификации написания пространств и <>.
Иерархия узла.
2. Определите интерфейс действия
Примечание: запрашиваются, запрашиваются и отвечают чрезмерные параметры.
3. Определите класс действий, рассматривайте его как узел действия (напишите метку узла действия)
Инкапсулирует данные в коллекции поля и результаты.
Примечание. Добавьте данные в написание. (Коллекция карт)
4. Определите класс ActionMapping Manage для управления классами ActionMapping (узлы действий)
/** Существует более одного узла действия*, используемого для управления классом ActionMapping*/Public Class ActionMappingManager {// Сборка классов ActionMapping Private Map <String, ActionMapping> Maps = new HashMap <String, ActionMaping> (); public actionmapping getActionMapping (string name) {return maps.get (name); } // ПАНСАНИЕ ВСЕ ФАЙЛЫ КОНФИГУРАЦИИ в соответствии с SRC Project // prese After Centantiation public actionMapingManager (string [] file) {for (string fileName: file) {init (fileName); }} // Метод инициализации инициализации // Переполнять документ XML public void init (String Path) {try {inputStream IS = this.getClass (). getResourCeasStream ("/"+path); // parse xml документ doc = new Saxreader (). Read (IS); // Получить элемент корневого узла root = doc.getRootelement (); // Получить действия action node element = (element) root.elementiterator ("actions"). Next (); // Использование цикла для прохождения всех узлов действий под узлом действий для (итератор <element> action = actions.elementiterator ("action"); action.hasnext ();) {// Получить <cection> node element actionnext = action.next (); // Получить атрибут имени и атрибут класса в узле действия соответственно string name = actionnext.attributevalue ("name"); String classname = actionnext.attributevalue ("class"); // Сохранить приведенные выше два атрибута в класс ActionMapping Class Map = new ActionMapping (); mapapp.setclassname (classname); mapapp.setname (имя); // Поскольку в рамках узла действий есть несколько узлов результатов, проходящих все узлы результатов в соответствии с действием для (iterator <element> result = actionnext.elementiterator ("result"); result.hasnext ();) {// Получить элемент узла результата resultnext = result.next (); // Извлечение значения атрибута имени в узле результата и значения в строке Node Result ResultName = ResultNext.AttributeValue ("name"); String resultValue = resultNext.getText (); // Сохранить их в двухколонном наборе в действии, чтобы облегчить вызов класса действий (в классе действий! System.out.println (mapp.getName ()); } // Получить коллекцию всех узлов действий maps.put (mapp.getName (), map); }} catch (Exception e) {// todo: обрабатывать исключение}}}Краткое содержание:
Проповедовать файл конфигурации Framework.xml через dom4j. Это получит корневой узел и узел действий, а затем пересекает узлы действий под узлом Action через цикл для получения значений атрибутов имени и класса. Поскольку под одним узлом действия и все узлы результатов есть несколько узлов результатов и все узлы результатов, они хранятся в двухколонке в действии и, наконец, получают набор всех узлов действий.
Примечание. Написание метода init и написание ActionMappingManager с группами параметров.
5. Определите класс ActionManager, используя механизм отражения, чтобы получить конкретные классы на основе имени класса типа строки.
открытый класс ActionManager {public Static Action GetActionClass (String className) {class clazz = null; Действие действие = null; // Получить загрузчик класса текущего потока Try {// Если есть класс в потоке, напрямую получить тип класса в соответствии с именем класса clazz = thread.currentThread (). GetContextClassloader (). LoadClass (className); } catch (classnotfoundexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } if (clazz == null) {try {// Если в потоке нет, то используйте метод class.forname, чтобы получить clazz = class.forname (classname); } catch (classnotfoundexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); }} if (action == null) {try {// преобразовать полученный тип в действие и вызовать конструктор без параметра, который в некоторой степени эквивалентен новым, но новые необходимы указать тип action = (action) clazz.newinstance (); } catch (instantiationException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (allogalAccessException e) {// todo Автогенерированный блок улова e.printstacktrace (); }} return action; }}Конфигурация узла для web.xml:
6. Напишите сервлеты, чтобы контролировать время выполнения (сервлеты, инициализировать все классы)
Общедоступный класс MyServlet расширяет httpservlet { / ***Вы такие непослушные* / public void doget (httpservletrequest, httpservletresponse response) бросает Servletexception, ioexception {dopost (запрос, ответ); } <br> / ***Продолжайте усердно работать* / actionmappingmanager man = null; public void Dopost (httpservlectrequest, httpservletresponse response) Throws ServletException, ioException {// Получить действие ActionMapponing actionMaping = man.getActionMaping (getPath (запрос)); // Получить механизм отражения интерфейса действия Action oction = actionManager.getActionManager (actionMapping.getClassName ()); try {string message = action.execute (request, response); String Results = actionMapping.getResults (сообщение); response.sendredirect (результаты); } catch (Exception e) {// todo автоматически сгенерированный блок e.printstacktrace (); }} /** Получить имя пути запроса* /public String getPath (httpservlectrequest) {// project + address string string requesturi = request.getRequesturi (); // имя проекта строка contextPath = request.getContextPath (); // конкретный путь запроса string = requesturi.substring (contextpath.length ()); String fileName = path.substring (1, path.lastindexof (".")); вернуть имя файла; } / * * Rewrite init, программа запускает и загружает все классы * * /@Override public void init (конфигурация ServletConfig). Функция состоит в том, чтобы получить информацию о конфигурации инициализации //config.getinitParameter - это содержимое параметра инициализации указанного имени строки fileName = config.getinitParameter ("config"); String [] filenames = null; if (filename == null) {// Если он пуст, filenames = new String [] {"framework.xml"}; } else {// Если есть другая информация о параметре конфигурации, то она хранится в массиве путем разделения имен файлов = filename.split (","); } // Использование метода init для инициализации man = new ActionMappingManager (filenames); }}Примечание: уровень и комментарии кода.
7. Определите класс входа для тестирования
Общедоступный класс. Реализует Action {@Override public String execute (httpservlectrequest, httpservletresponse response) throws exection {string name = request.getParameter ("name"); String pwd = request.getParameter ("pwd"); if (name.equals ("1") && pwd.equals ("1")) {вернуть успех; } else {return login; }}}код JSP:
Осознайте эффект:
Независимо от того, как долго проходит дорога, вы можете идти шаг за шагом, и независимо от того, насколько короткая дорога, вы не можете добраться до нее, не делая шага.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.