1. Подготовка
Перед началом, пожалуйста, обратитесь к предыдущей статье:
Struts2.3.24 + Spring4.1.6 + Hibernate4.3.11 + MySQL5.5.25 Строительство среды развития и связанные с ним объяснения одинаковы, но Struts2 заменяется Spring MVC
2. Различные места
Каталог проектов и пакет JAR:
Изменить пакет действий на контроллер;
Удалить пакет JAR Struts2 и добавить пакет Spring MVC (если уже существует, вам не нужно добавлять его);
Конфигурация web.xml:
Разница в том, что фильтр Struts2 заменяется сервлетом, основная цель - направить URL и передать его на пружину MVC для обработки;
<? 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. <SIVEL-name> ssh </display-name> <context-param> <param-name> contextConfiglocation </param-name> <value> classPath: ApplicationContext.xml </param-value> </context-param> <lisherer> <lisherer-class> org.spramework.web.context-flaselirelirelister </reslecter-frase-frame-frame-frame-frame. <werveload> index.jsp </wervedied-file> </werveding-file-list> <servlet> <servlet-name> springmvc </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherserverv </servlet-class> <init-param> <param-name> contextconfiglocation </param-name> </param-name> </param-name> </param-name> </param-name> </param-name> <param-value> classpath: springmvc-servlet.xml </param-value> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-maping> <servlet-name> springmvc </servlet-name> <url-pattern>*. Do </url-pattern> </servlet-mapping> </url-pattern>*.
ApplicationContext.xml Конфигурация:
Разница в основном при настройке автоматического сканирования компонент @Controller должен быть исключен. Эти бобы генерируются Spring MVC;
Другие конфигурации такие же, как в предыдущей статье;
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/context" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: xsi = "http://www.w3. xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: jdbc = "http://www.springframework.org/schema/jdbc" xsi: schemalocation = "http:/www.spramema.spramemema.spramemema. http://www.springframework.org/schema/beans http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aopmpma/Sshema/aopm.-aopmema.-aopmema-aopmema/sschema/aopm.-aopmasmasm.-aopmema htt http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd http://www.spramework.org/schema/context-4.4. <!-Сканирует обход класса для аннотированных компонентов (включая @Repostory и @Service, которые будут автоматически зарегистрированы как пружинные бобы-> <Контекст: компонент-сканирование Base-package = "ssh"> <!-Exclude @controller Component, который сканируется файлом конфигурации Springmvc-> <xetride @contid Express = "org.springframework.steretype.controller" /> < /context: component-scan> <!-Выбор источника данных-> <bean name = "dataSource" Dressome-method = "close"> <Свойство name = "riverclass" value = "jdbc: mysql: // localhost: 3306/demo"/> <name = "user" value = "root"/> <property name = "password" value = "root"/> <name = "Приобретение" value = "1"> </property> <property name = "initialPoolsize" value = "80"> </propertive> <propertion> <property> "makxidime" makxidime = "MaxIdime" MaxIdime = "MaxIdime" maxIdime ". value = "60"> </property> <name = "maxpoolsize" value = "80"> </property> <name = "minpoolsize" value = "50"> </property> <name = "acciereretrydelay" value = "1000"> </property> <property name = "acporerertryattempts" value = "60"> </property name> ". value = "false"> </property> <!-Если появляется слишком много соединений, обратите внимание на изменение файла конфигурации my.ini mysql, чтобы увеличить максимальное количество элементов конфигурации соединений (см. Команду текущего соединения: Show Procestlist)-> </bean> <Bean Id = "SessionFactory"> name = "dataSource" ref = dataSource "> <props hiberporpoprop nameprop hiberpor <prop key = "hibernate.dialect"> org.hibernate.dialect.mysqlidialect </prop> <prop key = "hibernate.show_sql"> true </prop> <prop key = "hibernate.hbm2ddl.auto"> update </prop> <prope = "hibernate.hbm2dl.auto"> update </prop> <prop = " key = "connection.pool_size"> 10 </prop> <prop key = "current_session_context_class"> Thread </prop> <prop key = "hibernate.cache.use_second_level_cache"> true </prop> <prop key = "hibernate.cache.region.factory> key = "hibernate.cache.provider_configuration_file_resource_path"> ehcache.xml </prop> </props> </property> <property name = "mappingLocations"> <Siture> <dithle> classpath: ssh/model/user.hbm.xml </value> </list> </stopport> <! <sist> <dather> ssh.model.user </value> </list> </property>-> </bean> <!-Конфигурировать менеджер транзакций-> <bean id = "transactionmanager"> <name = "sessionFactory" ref = "SessionFactory"/> </bean> <!-Процесс-характеристики транзакции-> <tx: adse ud = "texadvice" Transaction-Manager = "TransactionManager"> <TX: атрибуты> <tx: method name = "add*" opragation = "требуется" только для чтения = "false" hollback-for = "java.lang.exception"/> <tx: method name = "delete*" Propagation = "требуется" chude-nely "/> rowlback-for =" java.lexexception "/? name = "delete*" opragation = "required" read-only = "false" hollback-for = "java.lang.exception"/> <tx: method name = "update*" Propagation = "обязательно" только чтение = "false" roplack-for = "java.lang.exception"/> <tx: method name = "save*propagation =" rete year-nother "/> <tx: method name =" save*"" false ". Rollback-for = "java.lang.exception"/> </tx: атрибуты> </tx: Advice> <aop: config> <aop: pointcut id = "pcmethod" Expression = "execution (*ssh.service ..*.*(..)"/> <aop: Advisor pointcut-ref = "pcmethod". </aop: config> <!-Custom AOP-обработка-> <bean id = "aoptest"> </bean> <bean id = "myaop"> </bean> <aop: config proxy-target-class = "true"> <aop: Aspice ref = "myaop"> <aop: pointcut id = "pcmethodtest" ssh.aop.aoptest.test*(..)) "/> <aop: до pointcut-ref =" pcmethodtest "method =" до "/> <aop: после pointcut-ref =" pcmethodtest "method =" после "/> </aop: аспект> </aop: config> </beans>
Настройка Springmvc-servlet.xml:
Настройте автоматическое сканирование @Controller в пакете SSH.Controller. Здесь вам нужно восстановить исключенный фильтр, настроенный в ApplicationContext.xml;
Настройка просмотра анализатора, есть много анализаторов, здесь мы принимаем InternalResourceViewResolver в качестве примера;
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: p = "http://www.springframework.org/schema/p" xmlns: xsi = "http./www.w3. xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.spramework.orgemabema/beans/spring-xpring-xpring-xpring-xpring-xpring-xpersemabema-4.shemabeman http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd " > <!-Восстановите, что исключающий фильтр, установленные родительским контейнером, обратите внимание на путь сканирования пакетов SSH.Controller-> <Контекст: включает в себя тип фильтра = "аннотация" Expression = "org.springframework.steretype.controller" /> < /context: component-scan> <!-define view preser-> <bean> name ampix> "prefix>" name name = ">"> "" bean> name = ">" name name = ">"> "name"> ">". <dulch>/web-inf/jsp/</value> </property> <name = "Суффикс"> <dulch> .jsp </value> </property> </beans>
Контроллер записи:
Поскольку Spring MVC используется для замены Struts2, нет пакета действий. Удалить и создать новый пакет контроллера. Создать новый класс UserController под пакетом;
@Requestmapping: карта URL;
@Responsebody: содержание возвращается непосредственно как тело;
Usercontroller.java
пакет ssh.controller; импорт java.io.printwriter; import java.util.list; import javax.annotation.resource; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservesponse; import org.Apach. org.springframework.stereotype.controller; import org.springframework.web.bind.nantation.requestmapping; импорт org.springframework.web.bindation.annotation.responsebody; import.aop.aoptest; import.model.user; импорт. com.google.gson.gson;@controller@requestmapping ("/user") открытый класс usercontroller {logger logger = logger.getlogger (usercontroller.class); @Resource private userservice userservice; @Resource private aoptest aoptest; @Requestmapping (value = "/adduser") @Responsebody public void AddUser (httpservletRequest, httpservletresponse response) {printwriter out = null; try {response.setContentType ("text/html; charset = utf-8"); String account = request.getParameter ("Account"); String name = request.getParameter ("name"); String address = request.getParameter ("Адрес"); Пользователь пользователь = новый пользователь (); user.setAccount (учетная запись); user.setAddress (адрес); user.setname (имя); userservice.add (пользователь); out = response.getWriter (); out.write (new gson (). Tojson ("успех")); } catch (Exception e) {e.printstackTrace (); logger.error (e.getMessage ()); if (out! = null) out.write (new gson (). tojson ("Fail")); } наконец {out.flush (); out.close (); }} @Requestmapping (value = "/QueryUser") @Responsebody public void QueryAlluser (httpservletrequest, httpservletresponse response) {printwriter out = null; aoptest.test1 (); aoptest.test2 (); try {response.setContentType ("text/html; charset = utf-8"); Gson Gson = new Gson (); Список <user> userlist = userservice.queryalluser (); String gsonstr = gson.tojson (userlist); out = response.getWriter (); out.write (gsonstr); } catch (Exception e) {e.printstackTrace (); logger.error (e.getMessage ()); if (out! = null) out.write (new gson (). tojson ("Fail")); } наконец {out.flush (); out.close (); }}} 3. Запустите программу
Запустите программу, добавьте пользователей и пользователей запроса. Функция нормальная;
Кроме того, вторичный кэш также работает нормально, а база данных больше не работает во втором запросе;
@author, похожий на ветру, кодировщик
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.