Aqui está um exemplo mais simples
1. Crie um novo projeto Javaweb padrão
2. Importar alguns pacotes básicos de jar necessários para a primavera
3. Configure o arquivo web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xmls/javaee/http://java.sun.com/xmls/javaee/web-web-23 <Cexexp-Param> <amam-name> contextConfigLocation </param-name> <amam-value> ClassPath*: ApplicationContext*.xml, </param-value> </context-param> <!-Spring Context Carreging-lister-> <Ivister> <Ivier-class> org.errg.errgFramework.web.Conter-> <Ivister> <lorde-arquivo de boas-vindas> <lmed-fil-bile> index.jsp </chailt-fil-bile> </list-list> </web-app>
4. Adicione o arquivo de configuração do Spring ApplicationContext
5. Faça a configuração mais fácil do arquivo ApplicationContext.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-bans-3.0.xsd" default-lazy-in-init = "fals" name = "name" value = "zhang san"/> </i bean> </ Beans>
feijão-o nó raiz do arquivo XML.
xmlns - é a abreviação do XMLNamesPace. Como os nomes de tags dos arquivos XML são personalizados, as tags escritas por elas mesmas e definidas por outros provavelmente serão duplicadas, mas as funções são diferentes, portanto, um espaço para nome de nome precisa ser adicionado para distinguir esse arquivo XML de outros arquivos XML, semelhante ao pacote em Java.
XMLNS: XSI - Refere -se ao arquivo XML cumpre as especificações XML. O nome completo de XSI: XMLSchemainstance refere -se às especificações que são estritamente seguidas pelos elementos definidos no arquivo de recursos do esquema usado. Ou seja, quais padrões os elementos definidos no arquivo /spring-beans-2.0.xsd cumprem?
XSI: esquema - refere -se às especificações com as quais o elemento XML neste documento está em conformidade. A propriedade Schemalocation é usada para referência ao documento de esquema (esquema). O analisador pode usar este documento para verificar o documento da instância XML, se necessário. Seu valor (URI) aparece em pares, o primeiro valor representa o espaço para nome e o segundo valor representa o local específico do documento de padrões que descreve o espaço para nome, separado por espaços.
6. Crie uma nova classe de entidade Usuário.java
pacote com.po; Public class Usuário {Nome da String Private; idade de cordas privadas; public String getName () {Return Name; } public void setName (nome da string) {this.name = name; } public String getage () {Age de retorno; } public void setage (idade da string) {this.age = Age; }}7. Teste
public static void main (String [] args) {// TODO Método Geral Goletom ApplicationContext AC = new FileSystemXMLApplicationContext ("Config/ApplicationContext.xml"); Usuário do usuário = (usuário) ac.getbean ("usuário"); System.out.println (user.getName ()); }Saída
Isso permite a construção de uma estrutura básica de primavera para projetos da Web. Em seguida, faremos algumas extensões que serão usadas em projetos reais. Você pode configurar algumas funções ou outras configurações para a integração da estrutura de primavera no web.xml.
<!-Os filtros de codificação de caracteres devem ser colocados na parte superior do filtro-> <filter> <filter-name> codingfilter </ftrhter-name> <filter-Class> org.springframework.web.filter.characterencodingFilter </filter-class> <otit-Param> <amMame> <brectencoding </init-param> <init-param> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Use OpenSessionInView--> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> <init-param> <param-name>singleSession</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>sessionFactoryBeanName</param-name> <!--Specify which sessionFactory in Spring configuration to use OpenSessionInView--> <param-value>sessionFactory</param-value> </init-param> </filter> <filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- filtro de segurança da primavera org.springframework.web.filter.delegatingFilterProxy (proxy do filtro delegado)-> <!-Este filtro será usado usando o springsecurity ou o shiro de apache,-> <filter> <filter-name> springsecurityfilterchain </limter-Name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Declaration Spring MVC DispatcherServlet --> <servlet> <Verlet-name> springdispatcher </servlet-name> <Servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <iit-param> <amam-name> contextConfigLocation </param-Mam-value> ClassPath*: spring-mvc.xmling </param> <amunue>/ClassPath*: spring-mvc.xmling </param> <Orging-on-startup> 1 </load-on-startup> </servlet> <!-mapeie todas as solicitações para/* para o despachante servlet-> <Vertlet-Mapping> <Servlet-name> springdispatcher </servlet-name> <url-Pattern>/</url-pattern> </servlet--mapping> <!-inseror- <Cathery> ErrorPage/404.jsp </catching> </rorwror-page> <!-401 Erro-> <rorwerp-age> <rorw-code> 401 </rorwror-code> <ctatherion> /errorpage/401.html </location> </error-page> <!-taglib.jspf e outros arquivos para cada página-> <taglib-uri> /web-inf/runqianReport4.tld </taglib-uri> <taglib-location> /web-inf/runqianReport4 <Dubstibilt, </incluir -prelude> <!-<rim-Directive-whitaSpaces> true </rod-Direction-whitaSpaces>-> </jsp-property-Group> </jsp-config>
Entre eles, o JSPF é fazer algumas declarações globais
<%@ page language="java" contentType="text/html; charset=UTF-8" <span style="white-space:pre"> </span>pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%<%taglib uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "h taglib prefix =" fnc "uri ="/web-inf/tlds/fnc.tld "%> <%@ taglib tagdir" <c: set var = "ctx" scope = "session" <span style = "white-space: pre"> < /span> value = "$ {pageContext.request.contextpath}" />Mais funções podem ser configuradas no ApplicationContext.xml
<!-Mais declarações podem ser adicionadas ao feijão-> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3 xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans O http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd "default-lazy-init =" false "atrawire-pornin-3.0.xsd" <AOP: AspectJ-AutoProxy /> <MVC: Annotation-Driven /> <!-O comentário substitui a configuração, digitaliza automaticamente o pacote básico. O pacote de varredura e todas as classes em todas as subpackagens precisam ser removidas do controlador; caso contrário, afetará o gerenciamento de transações-> <Contexto: componente-Scan-package = "com.schoolnet"> <contexto: exclude-filter type = "annotation" Expression = "org.springwork.SteretypeTyTerTerTroller" /SMISTROLLER " / file--> <bean id="propertyConfigurer" > <property name="fileEncoding" value="UTF-8" /> <property name="locations"> <list> <value>classpath:jdbc.properties</value> </list> </property> </bean> <!-- Data source configuration--> <bean id="dataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driverClassName}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name = "MinPoolSize"> <Value> 1 </value> < /propriedade> <propriedade name = "maxpoolsize" value = "100" /> <propriedade name = "InitialPoolSize" value = "3" /> <!-Tempo de inatividade máxima, se a conexão não for usada em 60 segundos, a conexão será descartada. Se for 0, nunca será descartado. Padrão: 0-> <Nome da propriedade = "maxidleTime" value = "60" /> <!-O número de conexões obtidas por C3P0 ao mesmo tempo em um momento em que a conexão no pool de conexão está esgotada. Padrão: 3-> <propriedade name = "adquiririncrement" value = "5" /> <nome da propriedade = "maxstatements" value = "0" /> <!-Verifique as conexões ociosas em todos os pools de conexão a cada 60 segundos. Padrão: 0-> <Nome da propriedade "" IdleConnectionTestPeriod "value =" 60 " /> <!-Define o número de tentativas repetidas depois que uma nova conexão não foi recuperada do banco de dados. Padrão: 30-> <Propriedade name = "adquireretryAttSts" value = "30" /> <!-Falha ao obter a conexão fará com que todos os threads aguardem o pool de conexão para obter a conexão para lançar uma exceção. No entanto, a fonte de dados ainda é válida e continua tentando obter a conexão na próxima vez que você ligar para getConnection (). Se definido como true, a fonte de dados declarará que foi desconectada e fechada permanentemente após tentativas fracassadas de obter a conexão. Padrão: false-> <propriedade name = "breakafteracquirefailure" value = "false" /> <!-Por favor, use-o apenas quando necessário devido ao consumo de alto desempenho. Se definido como true, sua validade será verificada em cada envio de conexão. Recomenda -se usar o IDleConnectionTestperiod ou AutomaticTestTable para melhorar o desempenho dos testes de conexão. Padrão: false-> <propriedade name = "testConnectionOncheckOut" value = "false" /> </i bean> <!-Definição de gerenciador de transações (transação declarativa)-> <!-suporta @Transactional Tags-> <!-Way One: DataSourCeTransManager-> <bean id = "TransationManager"> < <tx: transação acionada por anotação-manager = "transactionManager"/> <!-maneira dois: hibernateTransactionManager-> <bean id = "hibernateTransactionManager"> <names </session "> <ref Local =" Sessão "/> </propriedade> </bean> <! name = "DataSource" ref = "DataSource"/> <propriedade name = "lobhandler" ref = "lobhandler"/> <propriedade name = "mappinglocations"> <list> <Value> classpath*:/com/schoolnet/**/*. O Hibernate não gera tabelas automaticamente quando vários espaços de tabela são os mesmos no Oracle. -> <prop key = "hibernate.default_schema"> $ {jdbc.username} </prop> <propi key = "hibernate.dialect"> org.hibernate.dialect.oracle10gdialect </prop> key = "hibernate.show_sql "> key = "Hibernate.Generate_Statistics"> false </prop> <prop) <p key = "hibernate.gereate_statistics"> false </prop> <propr key = "hibernate.connection.release_mode"> Auto </prop> <phay = "hibernate.auteConnect.bert.P. org.hibernate.cache.ehcacheProvider </pp> <!-Resolva problemas de vazamento de memória-> <propi key = "hibernate.cache.use_query_cache"> false </prop> <propra "/"/hiber) key = "current_session_context_class"> thread </sport> </props> </property> <propriedade name = "eventListeners"> <pap> <entradas key = "merge"> <bean/> </string> </pap> </propriedade> </bean> <conconfigure hibernate características- transaction-manager="hibernateTransactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method Nome = "Modify*" Propagation = "Requerired" Rollback para = "Exception" /> <TX: Método Nome = "Del*" Propagation = "Requerired" Rollback para = "Exception" /> <Tx: Método Nome = "Start*" Propagation = "Requerir" Rollback para = "Exception" /> <Tx: Method Name = "Stop*" "Propagation =" requerir "Rollback" Rollback " propagação = "requerido" rollback for = "excepção" /> <tx: método name = "clear*" propagation = "requerir" rollback para = "excepção" /> <tx: método name = "clear*" propagação = "requerir" rollback = "excepction" /> <tx: name = "Execute*" propagation = "requerir" roll-for "" " rollback-for = "Exception" /> <tx: método name = "do*" propagation = "requerir" rollback para = "excepção" /> <tx: name do método = "set*" propagation = "requerir" rollback para = "excepção" /> <tx: namesn-on-"*n" propagation = "nunca" /> <Tx: name = "*" " <!-Configurar métodos dessas classes para gerenciamento de transações-> <aop: config> <aop: advisor pointcut = "Execution (*com.eshine ..*. Serviço.Configuração do arquivo spring-mvc.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/sring-jee.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context/sring-context-3.0.xsd http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <Contexto: Componente-Scan-Base-Package = "com.schoolnet" use-default-filters = "false"> <Contexto: incluir filtro type = "anotação" expressão = "org.springframework.stretype.controller" /> </xcent: component-ccan> <-svc: anatation-driven />> <Mvcen> <MVC: <Mvc! analiser-> <bean id = "jspViewResolver"> <propriedade name = "prefixo" value = " /" /> <nome da propriedade = "sufixo" value = ". <bean id = "multipartresolver"> <propriedade name = "maxuploadSize" value = "1073741824"/> </shean> </beans>
Resumir
O exposto acima é todo o conteúdo deste artigo sobre o compartilhamento completo de código do projeto Web Spring Framework. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a este site:
Exemplo de Introdução e Implementação do Código de Introdução e Implementação do Estilo de Rest Springmvc
Springmvc Interceptor implementa um único sinal
Spring Integrated Redis Código detalhado da amostra
Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!