Эта статья начинается с проекта онлайн -торгового центра, начиная с построения окружающей среды и интегрируя S2SH шаг за шагом. В этом блоге в основном суммируется, как интегрировать Struts2, Hibernate4.3 и Spring4.2.
Чтобы интегрировать три основных рамках, вы должны сначала начать с создания различных сред, то есть, сначала вы должны построить среду пружины, Hibernate и Struts2, чтобы убедиться, что у них нет проблем, а затем интегрировать их. Порядок, в котором следует этот пост в блоге: сначала построить весеннюю среду -> затем построить среду Hibernate -> Интегрировать Spring и Hibernate -> Создайте среду Struts2 -> Интегрировать Spring и Struts2.
1. Управление всем пакетом JAR Project
Весна имеет много баночных пакетов. Рекомендуется классифицировать их в категории, а затем добавить их в библиотеку пользователей, для легкого управления и с первого взгляда. Здесь я суммирую основные пакеты JAR, необходимые для всего SSH, и посмотрю следующую картинку:
Как видно из рисунка, во-первых, пружинные банки разделены на четыре категории: Spring 4.2.4-ядер, Spring 4.2.4-AOP, Spring 4.2.4-Persistence и Spring-4.2.4-Web. Поместите все основные пакеты Spring в Core, поместите все, что связано с AOP, в AOP, поместите все, что связано с постоянством (интегрированным с Hibernate) в стойкость, и поместите все, что связано с Интернетом (интегрированным со Struts2) в Интернет. Какие пакеты банков имеют каждая часть? Пожалуйста, смотрите скриншот ниже:
Примечание. Пакеты в каждой категории выше не содержат всех банок в исходном пакете. Некоторые файлы JAR не используются. Просто добавьте их, когда в этом нужен конкретный проект. Приведенная выше рисунок является самым основным пакетом JAR, необходимым для обеспечения того, чтобы проектная среда могла создать самый базовый пакет JAR.
2. Создайте весеннюю среду
Приведенный выше скриншот пакета JAR - все пакеты JAR, которые были интегрированы в последний раз. Когда вы впервые создаете среду, вам не нужно добавлять их все сразу. Вы можете добавить их кусочком. Это также более способствует пониманию того, что имеют пакеты JAR в каждой части. Конечно, также можно добавить их все сразу.
2.1 Добавить файл конфигурации Beans.xml и соответствующие пакеты JAR
Создайте новый проект, а затем добавьте свою библиотеку в библиотеку пользователей. Вот два основных, а именно Spring-4,2,4-ядра и Spring4.2.4-Aop. Я не буду вдаваться в подробности о добавлении пакетов JAR. После добавления добавьте файл beans.xml в каталог SRC. Есть много шаблонов для этого файла в Интернете, и есть также примеры, приведенные к весне. Просто возьмите копию, см. Следующую картинку:
2.2 Тестовая пружина МОК окружающая среда
Давайте напишем нормальный класс Java java.util.date, чтобы проверить, является ли пружинный МОК нормальным. Если он может быть введен обычно в тестовую программу, это означает, что среда IOC Spring успешно построена. Давайте напишем тестовый пример ниже:
/** * @description todo (с использованием отладки Annotation Spring, поддерживает только Spring3.1 и выше) * @author ni shengwu * * / / * * После Spring3.1 есть дополнительный весенний тест-4.2.4.reeleas.jar. Этот пакет JAR специально используется для поддержки тестирования на основе аннотаций JUNIT. Пакет JAR находится в Spring-4.2.4-Core * В этом пакете JAR есть SpringJunit4classRunner.class, и вы можете добавить его с аннотацией @runwith * * Annotation @contextConfiguration @ContextConfiguration (locations = "classpath: beans.xml") открытый класс sshtest {@resource частная дата; @Test // Проверка среды разработки весны Ioc public void springioc () {System.out.println (date); }} Наконец, он может нормально выводить: Чт 28 апреля 22:45:13 CST 2016. Это указывает на то, что объект даты был введен в пружину, что подтверждает, что функция пружины МОК является нормальной. По этой причине построена весенняя среда.
3. Создайте спящую среду
Строительство окружающей среды Hibernate сложнее, чем пружина, потому что она использует обратную инженерию в Myeclipse. Мы выполняем следующие шаги для построения среды разработки Hibernate:
3.1 Добавить соответствующий пакет банки
Здесь мы в основном добавляем два пакета JAR в библиотеку пользователей: Hibernate4.3.11 и пакет драйверов MySQL MySQL-Connector-Java-5.1.26, который не будет подробно описан.
3.2 Создайте новую базу данных и таблицу
бросить базу данных, если существует магазин; Создание базы данных магазин по умолчанию набор символов UTF8; Используйте магазин; сбросить таблицу, если существует категория; Создать категорию таблицы ( /* Номер категории, автоматический рост* / id int int null auto_increment, /* Имя категории* / type varchar (20), /* Будь то категория горячей категории, может отображаться горячая категория на домашней странице* / Hot Bool по умолчанию, /* Установите номер категории на первичный ключ* / первичный ключ (ID));
3,3 DB Браузер подключается к базе данных MySQL
Браузер DB относится к окну просмотра в Myeclipse. Вы можете интуитивно увидеть, какие базы данных и таблицы находятся в MySQL. Метод для открытия браузера DB: Window-> Open Perposceperive-> DB Browser открывает рабочее окно браузера БД. Если нет браузера БД, следуйте следующему: Window-> Show View-> Другое-> Введите браузер DB и найдите его, чтобы открыть его.
После открытия мы начинаем подключаться к базе данных MySQL. Щелкните правой кнопкой мыши -> Новое в пустое пространство окна браузера БД, и появится следующее диалоговое окно:
После заполнения нажмите Драйвер Теста, чтобы проверить его. Тест проходит тест и указывает, что драйвер подключения базы данных был настроен, а затем завершит его. Таким образом, мы можем увидеть базу данных MySQL 5.6 в окне браузера БД. Щелкните правой кнопкой мыши, чтобы открыть его, чтобы увидеть существующие библиотеки и таблицы в базе данных следующим образом:
3.4 Создать файл отображения XML и SessionFactory
SessionFactory используется для создания сеансов. Мы создаем их следующим образом: Щелкните правой кнопкой мыши название проекта-> Myeclipse-> Добавить возможности Hibernate. Если нет возможностей добавить Hibernate, нажмите Facets Project Facets-> Установите грани спящих
Затем добавьте поддержку Hibernate, то есть отображение Hibernate.cfg.xml Файл и SessionFactory в Myeclipse. Здесь мы в основном создаем пакет для SessionFactory, и пакет по умолчанию не может быть использован.
Затем добавьте драйвер. Поскольку мы настраивали драйвер раньше, мы можем напрямую выбрать недавно настроенный драйвер здесь.
Далее, так как мы добавили нашу собственную бронирование JAR раньше, здесь нет необходимости выбирать, просто закончите его напрямую.
Таким образом, мы завершаем создание файла конфигурации Hibernate и SessionFactory. Давайте кратко рассмотрим, что в сеансе, созданном Myeclipse:
открытый класс hibernatesessionFactory {private static final threadlocal <session> threadlocal = new Threadlocal <session> (); // SessionFactory используется в сеансефакторном частном статическом org.бибитном. SessionFactory SessionFactory; // sessionFactory: создать завод для сеанса частной статической конфигурации конфигурации = new Configuration (); Частная статическая услуга ServiceRegistry ServiceRegistry; static {// инициализировать SessionFactory try {configuration.Configure (); ServiceRegistry = New ServiceRegistryBuilder (). ApplySettings (configuration.getProperties ()). BuildServiceRegistry (); sessionFactory = configuration.BuildSessionFactory (ServicERegistry); // Метод создания SessionFactory в hibernate4} catch (Exception e) {System.err.println ("%%%% confure SessionFactory %%%%"); e.printstacktrace (); }} private hibernatesessionFactory () {// Частный метод конструктора предотвращает выпущение новых объектов, обеспечивая, чтобы SessionFactory Singleton} public Static Session () Throhs hibernateException {session session = (session) threadlocal.get (); // Получить сеанс из пула потоков if (session == null ||! Session.isopen ()) {// Если пул потоков пуст, или открытие сеанса не сбои. // Если SessionFactory пуст, создайте его снова, так же, как статическая часть} session = (sessionFactory! = Null)? SessionFactory.Opensession (): NULL; // sessionFactory не пуст, создать сеанс Threadlocal.set (session); // затем поместите этот сеанс в пул потоков и получите его в следующий раз} return Session; } public static void RebuildSessionFactory () {try {configuration.Configure (); ServiceRegistry = New ServiceRegistryBuilder (). ApplySettings (configuration.getProperties ()). BuildServiceRegistry (); sessionFactory = configuration.BuildSessionFactory (ServicERegistry); } catch (Exception e) {System.err.println ("%%%% Создание SessionFactory %%%%%"); e.printstacktrace (); }} public static void closeSession () бросает hibernateexception {session session = (session) threadlocal.get (); threadlocal.set (null); if (session! = null) {session.close (); }} public static org.hibernate.sessionFactory getSessionFactory () {// Предоставьте публичный интерфейс, чтобы позволить внешнему миру получить этот синглтон SessionFactory return SessionFactory; } public Static Configuration getConfiguration () {return Configuration; }} Это можно увидеть из HibernatesessionFactory, созданного в основном используемых синглтонских и технологий объединения потоков. Это не сложно понять.
3.5 Сгенерировать файлы отображения модели и ORM с помощью обратной инженерии
Затем мы начнем использовать обратную инженерию для создания объекта экземпляра, то есть модели, соответствующей таблице базы данных. В окне Browsera DB щелкните правой кнопкой мыши в магазине стола, который мы только что создали, и выберите Hibernate Reverse Engineering, чтобы начать создание:
Есть два способа его создания, на основе файлов конфигурации и на основе аннотаций. Это зависит от настроения разработчика. Вы можете выбрать:
Затем, на следующем этапе, выберите метод автоинсюревания собственного первичного ключа, а затем заполните обратную инженерию для создания модели и картирования ORM.
После завершения будет сгенерирована модель категории, и соответствующие отображения также будут генерироваться в файле hibernate.cfg.xml. Предыдущие сопоставления на основе файлов конфигурации и аннотаций на основе аннотаций будут разными.
3.6 Тестирование постоянной базы данных Hibernate
Поскольку он не был интегрирован с весной, это просто простое строительство среды разработки Hibernate, поэтому нам не нужно использовать аннотации. Мы выполняем ввод данных в базу данных непосредственно новой службой.
Сначала напишите интерфейс и класс реализации категории:
Категория публичных интерфейсов {public void save (категория категория); // Использование для тестирования среды Hibernate} Общедоступный класс CategoryServiceImpl реализует CategoryService {@Override // Не существует интеграции с Spring Public Void Said Said (категория категории) {// GET Session Session = HibernatesEssessionFactory.getSession (); try {// Ручная транзакция сеанса.getTransaction (). begin (); // Выполнить бизнес -логику session.save (категория); // вручную отправить session.getTransaction (). Commit (); } catch (Exception e) {session.getTransaction (). Rollback (); бросить новое runtimeexception (e); } наконец {hibernatesessionFactory.closesession (); }}} Следующее - добавить тест Hibernate в тестовый пример только сейчас:
@Runwith (springjunit4classrunner.class) @contextconfiguration (locations = "classpath: beans.xml") открытый класс sshtest {@resource Частная дата даты; @Test // Проверка среды разработки весны Ioc public void springioc () {System.out.println (date); } @Test // Проверка /проверить среду разработки Hibernate, поскольку нет интеграции, вы можете непосредственно новый public void hihernate () {CategoryService CategoryService = New CategoryServiceImpl (); Категория категория = новая категория («Мужская повседневная», правда); CategoryService.Save (категория); }}Мы проверили базу данных и обнаружили, что было слишком много элементов, которые были только что вставлены, что означает, что в среде Hibernate не было никаких проблем. На этом этапе мы построили среду разработки Hibernate.
4. Интегрируйте пружину и гибернат
После построения среды разработки для весны и спячки мы начали интегрировать их. После интеграции Spring и Hibernate вы можете использовать AOP, чтобы позволить пружине управлять транзакциями Hibernate. Интеграция Spring и Hibernate в основном начинается с двух аспектов: один - импортировать необходимые пакеты JAR, а другой - настройка файла Beans.xml. Ниже мы интегрируем Spring и Hibernate шаг за шагом.
4.1 Импортируйте соответствующий пакет JAR
Существует два основных пакета JAR, которые необходимо импортировать при интеграции Spring и Hibernate, Spring4.2.4-Persistence и C3P0-0.9.5.1. Для конкретных файлов JAR в каждом пакете JAR, пожалуйста, обратитесь к скриншоту выше и не будут описаны здесь. Теперь мы начнем настраивать файл beans.xml.
4.2 Настройка данных источника данных
Сначала настройте данные, а затем соответствующая часть в hibernate.cfg.xml может быть убита. Поскольку он настроен весной, Spring инициализирует этот источник данных, что означает, что это оставлено на пружину, и соответствующая часть в hibernate.cfg.xml может быть удалена. следующее:
<!-com.mchange.v2.c3p0.combopooledDatasource Class находится в пакете com.mchange.v2.c3p0 C3P0-0.9.5.1.jar пакета-> <bean id = "dataSource"> <свойство = "DriverClass" value = "com.mysql.jdbc.driver" /> <property = "jdbccr.driver" /"jdbcur" jdbcr. value = "jdbc: mysql: // localhost: 3306/shop"/> <name = "user" value = "root"/> <name = "пароль" value = "root"/> </bean>
Та часть, которая должна быть убита в hibernate.cfg.xml:
4.3 Настройка SessionFactory
SessionFactory настроен на создание сеанса. Кроме того, HibernateTemplate также возможен. Тем не менее, SessionFactory используется здесь вместо HibernateTemplate, потому что HibernateMemplate обеспечивается весной и зависит от весны. Если весна не будет использована однажды, будет сообщена ошибка. И SessionFactory предоставляется Hibernate, без проблем. HibernateTemplate слишком зависит. Давайте посмотрим на конкретную конфигурацию:
<!-org.springframework.orm.mbernate4.localsessionFactorybean Class в org.springframework.orm.mbernate4 пакета Spring-orm-4.2.4.Release.jar пакета-> <bean id = "sessionFactory"> <имя свойства = "dataSource" ref = "dataSource" /> <perity name = "configlocation" value = "classpath: hibernate.cfg.xml" /> <!-Загрузить файл конфигурации Hibernate-> < /bean>
Мы только что использовали данные в сфере SessionFactory, чтобы ссылаться на датчик с атрибутом Ref. Мы больше не используем конфигурацию здесь. Мы напрямую загружаем файл hibernate.cfg.xml и используем конфигурацию в файле конфигурации Hibernate, чтобы сделать его более кратким и удобным.
4.4 Настройка диспетчера транзакций
Диспетчер транзакций конфигурации используется для управления SessionFactory, так что все сеансы, сгенерированные SessionFactory, будут декларативно. Конфигурация заключается в следующем:
<!-org.springframework.orm.mbernate4.hibernateTrancectionManager класс Spring-orm-4.2.4.Release.jar Package in org.springframework.orm.hibernate4-> <bean id = "TransactionManager"> <name = "sessionFactory" ref = " /> < /bean>
Аналогичным образом, мы можем использовать только что настройка SessionFactory и ссылаться на его атрибут REF. На этом этапе вы обнаружите, что в течение всего пути - это серия операций, ссылаясь на них один за другим.
4.5 Настройте консультации (уведомление)
Цель настройки консультаций состоит в том, чтобы указать, какие методы требуют того, какой тип режима транзакции. См. Конфигурацию:
<TX: ARDED ID = "Совет" Transaction-Manager = "TransactionManager"> <TX: атрибуты> <tx: method name = "save*" Propagation = "требуется"/> <tx: атрибуты> </tx: атрибуты> </tx: консультант>
Требуется, что если есть транзакция, поддерживается текущая транзакция. Если нет, создается новая транзакция. Этот режим транзакции применяется ко всем методам, начиная с сохранения, обновления и удаления, то есть поддержка транзакций требуется при добавлении, удалении и изменении базы данных. Поддержка означает, что если есть транзакция, текущая транзакция поддерживается, и если никого нет, все будет хорошо.
4.6 Настройка аспектов AOP
<aop: config> <!-Настройте классы пакетов для ввода транзакции-> <aop: pointcut id = "pointcut" Expression = "exeprage (*cn.it.shop.service.impl.*.*(..))" /> <aop: Advisor rest-ref = "Совет" pointcut-ref = "pointcut" /> <! Yahei; "> и точка выше-> <!-aop: pointcut должен быть записан на AOP: Advisor, в противном случае будет сообщена ошибка-> </aop: config>
AOP-это касательное программирование. AOP: Pointcut определяет касательную. Конфигурация в свойстве выражения означает, что все методы в рамках пакета cn.it.shop.service.impl, независимо от возвращаемого значения и параметров, должны войти в транзакцию. Этот пакет принадлежит к слою DAO и непосредственно управляет базой данных. AOP: советы объединяют уведомления и разделы. Мы можем напрямую использовать консультации и точечную, настроенную выше, чтобы представить их. После этой конфигурации это означает, что все методы в рамках пакета cn.it.shop.service.impl должны вводить управление транзакциями. В частности, методы, начинающиеся с сохранения, обновления и удаления, используют необходимый метод, а другие методы используют метод поддержки. Это позволяет легко понять значение этой конфигурации.
4.7 Результаты интеграции тестирования
Когда мы строили среду Hibernate ранее, мы проверяли, что мы напрямую новичны сервис для управления базой данных, потому что она не была интегрирована с пружиной в то время. Теперь, после настройки Beans.xml, пружина разрешается управлять транзакциями Hibernate. Следовательно, текущий тест должен передать услуги управлению пружиной, ввести его до весны и полагаться на SessionFactory. Если данные могут быть вставлены в базу данных, это означает, что транзакция в порядке.
Во -первых, нам нужно сопоставить эту службу в Spring's Configuration File Beans.xml:
Скопируйте код следующим образом: <bean id = "CategoryService">
<name name = "sessionFactory" ref = "sessionFactory" /> <!-SessionFactory SessionFactor
</bean>
Во -вторых, нам необходимо добавить метод в интерфейс категории и его категория класса реализации, чтобы проверить ситуацию интеграции:
Категория публичных интерфейсов {public void save (категория категория); // используется для тестирования обновления Hibernate Environment Public Void (категория категории); // используется для тестирования интеграции пружины и гиберната} общедоступного класса категория, предоставляя реализацию категории {@Override // ситуация, когда нет интеграции с Spring Public void Save (категория категория) {// GET Session Session = HibernatesessionFactory.getSession (); try {// Ручная транзакция сеанса.getTransaction (). begin (); // Выполнить бизнес -логику session.save (категория); // вручную отправить session.getTransaction (). Commit (); } catch (Exception e) {session.getTransaction (). Rollback (); бросить новое runtimeexception (e); } наконец {hibernatesessionFactory.closesession (); }} /*Пружина и спятить весь* / private sessionFactory SessionFactory; // Определить сеансфактор // Когда вам нужно использовать SessionFactory, Spring внедрит SessionFactory в public void setSessionFactory (sessionFactory SessionFactory) {this.SessionFactory = sessionFactory; } Защищенный сеанс getSession () {// получить сеанс из текущего потока. Если нет, создайте новый сеанс return sessionfactory.getcurrentsession (); } @Override // Ситуация после весны и Hibernate интегрировано публичное обновление void (категория категории) {getSession (). Обновление (категория); }} Теперь мы можем добавить методы испытаний в тестовый класс, чтобы проверить результаты после интеграции пружины и Hibernate:
@Runwith (springjunit4classrunner.class) @contextconfiguration (locations = "classpath: beans.xml") открытый класс sshtest {@resource Частная дата даты; @Resource Private CategoryService CategoryService; @Test // Тестовая пружина IOC Development Environment Public void Springioc () {System.out.println (date); } @Test // test // test hibernate Enferualtion, поскольку нет интеграции, вы можете непосредственно новый public void hihernate () {CategoryService CategoryService = New CategoryServiceImpl (); Категория категория = новая категория («Мужская повседневная», правда); CategoryService.Save (категория); } @Test // Проверка public void hibernateAndspring () {CategoryService.Update (новая категория (1, «случайные женщины», True)); // категория сервиса, введенная из сверху до пружины}}Затем мы проверили базу данных и обнаружили, что категория с id = 1 была изменена в стиль случайной женщины, что означает, что обновление было успешным. На этом этапе весна и склонность были успешно интегрированы.
5. Построить среду Struts2
5.1 Добавить соответствующую конфигурацию и пакеты JAR
Я поместил пакет JAR, необходимый для запуска Struts2 в библиотеке Struts2.3.41, поэтому я могу просто представить его напрямую, и я не буду повторять его. Кроме того, файл web.xml необходимо настроить следующим образом:
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" = "webapp" = "webapp" = "webapp_dapp_3_0.0. <display-name>E_shop</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name> struts2 </filter-name> <url-pattern>*. action </url-pattern> </filter-mapping> </web-app>
Как указано выше, мы настроили фильтр StrutSpreArandDexecutefilter и установили URL-паттерн фильтра на *.
5.2 Создать действие и настроить его в файл struts.xml
Мы создаем действие следующим образом:
Общедоступный класс CategoryAction расширяет ActionSupport {Private CategoryService CategoryService; // CategoryService установлен на интуитивно увидеть различия до и после интеграции с Spring Public void SetCategoryService (CategoryService CategoryService) {this.categoryService = CategoryService; } public String Update () {System.out.println ("---- Update ----"); System.out.println (CategoryService); // вывод разных возврата "Индекс"; } public String save () {System.out.println ("---- Сохранить ----"); System.out.println (CategoryService); // открыть различные возвраты «индекс» до и после интеграции; }} Затем мы настраиваем файл struts.xml, который помещается в каталог SRC:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="shop" extends="struts-default"> <!-- Category_update.actiocan: Метод обновления доступа-> <name = name = "category_*" method = "{1}"> <name = "index">/index.jsp </result> </action> </package> </struts> 5.3 Тестирование среды Struts2
Метод испытаний: напишите действие JSP Access, и если действие может быть создано, это означает, что среда Struts2 в порядке. То есть серия процессов в Struts2 может быть завершена нормально: jsp-> struts.xml-> action-> struts.xml-> jsp, так что среда struts2 была готова. Давайте напишем простой index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <!-- The following two ways of writing можно получить доступ-> </span> <a href = "$ {pagecontext.request.contextPath} /category_update.action"> Обновление доступа </a> <a href = "category_save.action"> Сохранить доступа </a> </body> </html> Затем мы развертываем следующий проект, откроем сервер Tomcat, введите: http: // localhost: 8080/e_shop/index.jsp в браузере, появится обычная страница JSP, затем нажимает две кнопки и все еще перейдем к index.jsp, а затем мы посмотрим на информацию о выходе:
---обновлять---
нулевой
---сохранять---
нулевой
Это показывает, что линия Struts2 была завершена, и нет проблем с окружающей средой. На этом этапе была построена среда разработки Struts2.
Мы видим, что консоль выводит NULL, что означает, что категория сервиса пуста, что означает, что мы вообще не получили категорию, потому что мы не интегрировались с пружиной и не были введены, поэтому нулевая нормальная. Мы переворачиваемся по выводу информации из консоли, и мы найдем сообщение: выбор бобов (стойки) для (com.opensymphony.xwork2.objectfactory). Кроншеты говорят, что стойки генерируются Struts2 до того, как они будут интегрированы с пружиной.
6. Интеграция Spring и Struts2
6.1 Добавить соответствующий пакет банки
Когда пружина и Struts2 интегрированы, пакет JAR в основном в Spring4.2.4-WEB, включая Struts2-Spring-Plugin-2.3.24.1.jar. Гид пакет не будет описан снова.
6.2 Оставьте действие и его зависимости от управления весной
Настройте действие и его зависимости в файле конфигурации Spring Beans.xml. В настоящее время у нас есть только одно действие, которое настроено следующим образом:
<bean id = "date" /> <bean id = "categoryAction" scope = "prototype"> <name = "CategoryService" Ref = "Catepenservice" /> <!-Зависимая категория сервиса настроена при интеграции вышеуказанной и гибернат-> < /bean>
6.3 Измените конфигурацию в struts.xml
Оказывается, что в struts.xml атрибут класса соответствует полностью квалифицированному имени конкретного действия. Теперь измените значение атрибута класса на значение идентификатора настроенного действия весной, то есть категория, следующим образом:
<struts> <name = name = "shop" extends = "struts-default"> <!-Класс соответствует значению идентификатора действия, настроенного в пружине, потому что его следует передать в управление пружиной-> <name = "Категория_*" Method = "{1}"> <Результат имя = "index">/index.jsp </result> </action> <//packebure> <//package> <//recult> <//rekult> <//rekult> <//rekult> <//rekult> <//rekult> <//rekult> 6.4 Настройте слушатель
Настройте прослушивание ContextLoaderListener в web.xml, чтобы файлы конфигурации пружины могли быть загружены при запуске сервера. следующее:
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" = "webapp" = "webapp" = "webapp_dapp_3_0.0. <display-name>E_shop</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name> struts2 </filter-name> <url-pattern>*. Action </url-pattern> </filter-mapping> <!-Приоритет запуска слушателя в web.xml выше, чем у фильтров, поэтому он не имеет значения, не имеет значения-> <Прослушитель> <lloader-class> org.springframework.web.context.contextloaderListener </sluster> </alinger> <context-param> <param-name> contextConfiglocation </param-name> <param-value> classpath: beans.xml </param-value> </context-param> </web-appath>
6.5 Результаты интеграции тестирования
Мы добавляем новый оператор в действие для обновления базы данных следующим образом:
Общедоступный класс CategoryAction Extends ActionSupport {Private Category Category; // Установите переменную частного члена для получения параметров, предоставленных URL. Обратите внимание, что методы получения и установки должны быть записаны ниже. Частная категория категория категория; public void setCategoryService (CategoryService CategoryService) {this.categoryService = CategoryService; } public String Update () {System.out.println ("--- Обновление ---"); System.out.println (CategoryService); // Поскольку она была интегрирована с Spring, вы можете получить эту категорию. Это не null после печати его категории. Update (категория); // Добавить новый оператор для обновления базы данных return "Индекс"; } public String save () {System.out.println (CategoryService); вернуть "индекс"; } публичная категория getCategory () {return Category; } public void setCategory (категория категория) {this.category = категория; }} Затем мы изменяем файл index.jsp следующим образом:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <a href = "$ {pagecontext.request.contextpath} /category_update.action?category.id=2&category.type=gga&category.hot=false"> access update </a> <a href = "catee_save.action"> access save </a> </body> </href = " Затем мы развертываем следующий проект, откроем сервер Tomcat, введите: http: // localhost: 8080/e_shop/index.jsp в браузере, появится обычная страница JSP, затем нажмите кнопку «Обновление доступа» и все еще перейти к index.jsp, а затем мы посмотрим на выходную информацию о консоле: и все еще перейдем к index.jsp, а затем мы посмотрим на выходную информацию о консоле: и все еще перейдем к index.jsp, а затем мы посмотрим на выходную информацию:
--- Обновление --- cn.it.shop.service.impl.categoryserviceimpl@7c5ecf80 hibernate: обновление категории Set =?, Type =? где id =?
Мы можем вывести информацию об объекте CategoryService, а также можем вывести оператор SQL при выполнении оператора обновления. Затем мы запрашиваем базу данных и обнаруживаем, что тип данных с id = 2 был обновлен до GGA и Hot обновлен до FALSE. Мы переворачиваем информацию о консоли вверх, и мы найдем сообщение: выбор бобов (весна) для (com.opensymphony.xwork2.objectfactory), с пружиной кронштейнов. По сравнению с вышеупомянутой ситуацией, мы видим, что после интегрирована Struts2 с пружиной, действие передается пружине для управления.
На этом этапе была завершена интеграция Struts2, Hibernate4 и Spring4, и мы можем разработать его в среде SSH в следующий раз!
Полный пакет JAR, необходимый для интеграции SSH, представленного в этой статье: Скачать бесплатно
Адрес загрузки исходного кода всего проекта: //www.vevb.com/article/86099.htm
Оригинальный адрес: http://blog.csdn.net/eson_15/article/details/51277324
(ПРИМЕЧАНИЕ: В конце концов, загрузка исходного кода всего проекта предоставлена! Все могут собирать или следовать)
Вышеуказанное - все содержание этой статьи. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.