1. Preparação
Antes de começar, consulte o artigo anterior:
struts2.3.24 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 A construção do ambiente de desenvolvimento e as explicações relacionadas são as mesmas, mas o struts2 é substituído pelo mvc da primavera
2. Lugares diferentes
Diretório do projeto e pacote JAR:
Alterar o pacote de ação para o controlador;
Exclua o pacote STRUTS2 JAR e adicione o pacote MVC da primavera (se já existir, você não precisa adicioná -lo);
Web.xml Configuração:
A diferença de antes é que o filtro STRUTS2 é substituído por um servlet, o principal objetivo é rotear o URL e entregá -lo ao MVC da mola para processamento;
<?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/xmls/javaee/web-web-web-web-web--/java.sun.com/xmls/javaeeeee/web-web-web-web-web-web-web-web-web-web-web-web-web-web-web-/java.sun.com/ <Exibir-name> ssh </play-name> <context-paparam> <amam-name> contextConfigLocation </param-name> <amam-value> classPath: ApplicationContext.xml </param-value> </context-paparam> <visterner> <vister-class> org.springframework.web.contet.Contether> <vister>-class> org.erpringframework.web.contet.Contet> <lorde-file-list> <lmed-File> index.jsp </-Welcome-File> </-Welcome-File-List> <Servlet> <Servlet-Name> springmvc </servlet-name> <sisp-class> orig.springframework.web.servlet.dispatherStlet </servLass> <ing------Staram> <amam-value> ClassPath: springmvc-servlet.xml </param-value> </irit-param> <adarot-on-startup> 1 </olload-on-startup> </servlet> <sirtlet-mapping> <Verlet-name> springmvc </servlet-name> <url--patripn>*.
ApplicationContext.xml Configuração:
A diferença é principalmente ao configurar a varredura automática, o componente @Controller deve ser excluído. Esses feijões são gerados pelo MVC da primavera;
Outras configurações são as mesmas do artigo anterior;
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: p = "http://www.springframework.org/schema xmlns: context = "http://www.springframework.org/schema/context" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/sring-apa.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tg/schema http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd http://www.springframework.org/schema/context/spring-context-4.1.xsd "> <!-Substitua o caminho de classe para componentes anotados (Inclunsenst: @RePostory e @Service que será auto-registro" Spring)-<contexto: component-scan e @service que será auto-registro "Spring)- que é digitalizado pelo arquivo de configuração do springmvc-> <Contexto: exclude filter type = "anotação" expressão = "org.springframework.steretype.controller" /> < /context: component-scan> <!-seleção da fonte de dados-> <nome do bEan = "DataSource" Method = "Close"> "> value = "com.mysql.jdbc.driver" /> <propriedade name = "jdbcurl" value = "jdbc: mysql: // localhost: 3306 /Demo" /> <nome da propriedade = "user" value = "root" /> <nome da senha "=" " /> <> <weeng =" user "" "" /") /") /") <names =" user "" /"root" /> <nome da senha "=" " /> <> name = "InitialPoolSize" value = "80"> </propriedade> <propriedade name = "maxidleTime" value = "60"> </property> <propriedade name = "maxpoolsize" value = "80"> </propriedade> <propriedades name = "minPoolSize" "=" 50 "> </propriedades> <(names> name = "adquirreretryAttempts" value = "60"> </propriedade> <propriedade name = "breakafteracireFailure" value = "false"> </propriedade> <!-Se muitas conexões aparecerem, preste atenção à modificação do arquivo de configuração (consulta <figuration my.ini do mySQL para aumentar o número máximo de conexões (veja a corrente de corrente (consulte o comando de corrente: <figurning, o comando do MySQL para aumentar o número máximo de conexões (veja a corrente <Corrente, a corrente <ContRONL). <Propriedade name = "DataSource" ref = "DataSource"/> <propriedade name = "hibernateProperties"> <ports> <prop key = "hibernate.dialect"> org.hibernate.dialect.mysqldialect </prop> <phay "hibernate.show_sql"> True </prop) key = "hibernate.hbm2ddl.auto"> update </prop> <props key = "hibernate.hbm2ddl.auto"> update </prop> <props key = "conexão.pool_size"> 10 </prop> <ppy = "current_session_contet_cllass"> Thread </prop. key="hibernate.cache.use_second_level_cache">true</prop> <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop> <prop key="hibernate.cache.use_query_cache">true</prop> <prop key = "hibernate.cache.provider_configuration_file_resource_path"> ehcache.xml </sprild </sports> </property> <names name = "mappinglocations"> <list> <lort> ClassPath: ssh/model/user.hbm.xml <//"> </list> <Value> ssh.model.user </value> </list> </property>-> </bean> <!-Configure Transaction Manager-> <bean id = "transactionManager"> <nome da propriedade "sessionfactory" ref = "sessionFactory"/> </bean> <!-Propagation características de transações "<t" tx ""/> <tx: atributos> <tx: método name = "add*" propagation = "requerir" leitura somente = "false" rollback for = "java.lang.exception"/> <tx: name do método = "delete*" propagação = "requerido" requisito-only = "false" rollback = "java.lang.Exception"/> leitura somente = "false" Rollback for = "java.lang.exception"/> <tx: método name = "update*" propagação = "requerir" leitura somente = "false" rollback for = "java.lang.exception"/> <tx: name = "salvar*propagation = "angun" readn-ly = "false" rollback " < /tx: conselhos> <aop: config> <aop: Pointcut id = "pcMethod" Expression = "Execution (*ssh.service ..*.*(..))" /> <aOP: advisor Pointcut-ref = "pcMethod" Conselhos-ref = "txadVice" /> < /aop: Config: id="aopTest"></bean> <bean id="myAop"></bean> <aop:config proxy-target-class="true"> <aop:aspect ref="myAop"> <aop:pointcut id="pcMethodTest" expression="execution(* ssh.aop.AopTest.test*(..))"/> <aop:before Pointcut-ref = "pcMethodtest" Method = "Antes"/> <AOP: After Pointcut-ref = "pcMethodTest" Method = "After"/> </AOP: Aspect> </AOP: Config> </ Beans>
Springmvc-ervlet.xml Configuração:
Configure a varredura automática do @Controller no pacote SSH.Controller. Aqui você precisa restaurar o filtro excluído configurado no appoldcontext.xml;
Configurar o View Parser, existem muitos analisadores, aqui tomamos internoResourceViewResolver como exemplo;
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://wwwxt.springframework.org/schema =" http://wwwx. xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: p = "http://www.springframework.org/schema/p" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframwerw.org/schema http://www.springframwerw.org/schema.xsd http://wwwww.springframew.org/schema/ttp://www.springframwerw.org/schema.xsd http://wwwww.springframwerw.org/schema.xsd http://www.springframwerw.org/schema http://wwwww.springframw.org/schema http://www.springframework.org/schema/tx/spring-tx-4.1.xsd "> <!-Inicie a varredura automática de todos os grãos sob este pacote (por exemplo, o contratante @Controller)-> <Contexto: componente-capa the-package =" Ssh.Controller "> <! scanning path ssh.controller--> <context:include-filter type="annotation" expression="org.springframework.steretype.Controller" /> </context:component-scan> <!-- Define view parser --> <bean> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <property name="suffix"> <Value> .jsp </value> </ouse> </ Beans>
Write Controller:
Como o MVC da primavera é usado para substituir o Struts2, não há pacote de ação. Exclua e crie um novo pacote de controladores. Crie uma nova classe UserController sob o pacote;
@RequestMapping: MAP URL;
@ResponseBody: o conteúdo é retornado diretamente como um corpo;
UserController.java
pacote ssh.controller; importar java.io.printwriter; importar java.util.list; importar javax.annotation.resource; importar javax.servlet.http.httpServLeQuest; import javax.serv.http.htTletLeSonspon; org.springframework.stereotype.controller; importar org.springframework.web.bind.annotation.requestmapping; importar org.springframework.web.bind.annototation.Responsebody; Import.aoP.aoPester; com.google.gson.gson;@controlador@requestmapping ("/user") classe pública userController {logger logger = logger.getLogger (userController.class); @Resource privado UserService UserService; @Resource Private AOPTEST AOPTEST; @RequestMapping (Value = "/addUser") @ResponseBody Public void addUser (solicitação httpServletRequest, httpServletResponse resposta) {printWriter out = null; tente {Response.SetContentType ("text/html; charset = utf-8"); String conta = request.getParameter ("conta"); Nome da string = request.getParameter ("nome"); String endereço = request.getParameter ("endereço"); Usuário do usuário = novo usuário (); user.setAccount (conta); user.setAddress (endereço); user.setName (nome); userService.add (usuário); out = Response.getWriter (); out.Write (New Gson (). Tojson ("Sucesso")); } catch (Exceção e) {e.printStackTrace (); logger.error (e.getMessage ()); if (out! = null) out.write (new gson (). Tojson ("Fail")); } finalmente {out.flush (); out.Close (); }} @RequestMapp (value = "/QueryUser") @ResponseBody Public void QueryallUser (solicitação httpServletRequest, httpServletResponse resposta) {printWriter out = null; AOPTEST.TEST1 (); AOPTEST.TEST2 (); tente {Response.SetContentType ("text/html; charset = utf-8"); Gson gson = new gson (); LIST <usery> userlist = userservice.QueryallUser (); String gSonstr = gson.tojson (UserList); out = Response.getWriter (); out.write (GSonstr); } catch (Exceção e) {e.printStackTrace (); logger.error (e.getMessage ()); if (out! = null) out.write (new gson (). Tojson ("Fail")); } finalmente {out.flush (); out.Close (); }}} 3. Execute o programa
Execute o programa, adicione usuários e consulte usuários. A função é normal;
Além disso, o cache secundário também funciona normalmente e o banco de dados não é mais operado na segunda consulta;
@Author um codificador semelhante ao vento
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.