Los primeros proyectos fueron relativamente simples, en su mayoría directamente tratados con JSP, Servlet + JDBC. Más tarde, Struts1 (Struts2)+Spring+Hibernate se utilizó para impulsar el desarrollo de proyectos estrictamente de acuerdo con el concepto de capas. Esta vez, Spring MVC se usó para reemplazar los puntales para el desarrollo.
MVC ya es una parte muy importante del desarrollo web moderno. Presentemos la construcción del entorno de desarrollo de SpringMVC+Spring3+Hibernate4.
Echemos un vistazo a la estructura del proyecto:
El código específico ya no se demostrará, se toma principalmente una ruta muy ordinaria, la estructura de MVC-Servcie-Dao-Hibernate, el código fuente se puede descargar, observa principalmente el archivo de configuración. Ver los comentarios para explicación
web.xml
<? xml versión = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" " xmlns: web = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id = "webapp_id" version = "2.5"> <portsmvc </display-name> <wheday-filist> <velceed-file> index.jsp </Welcome-File> </Welcome-File-List> <!-Configurar Spring-> <context-param> <amamname> contextConfiglocation </param-name> <amam-value> classpath*: config/spring-*. xml </param-value> </context-param> <inger> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Configure SpringMVC --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <Amam-name> contextConfigLocation </param-name> <amam-value> classpath*: config/spring-servlet.xml </amam-value> </ init-param> <load-on-startup> 1 </load-on-startup> </servlet> <ervlet-mapping> <ervlet-name> springmvc </ervlet-name> <url-patn>/</</</urath/</servlet> <ervlet-name> springmvc </ervlet-name> <url-patn>/</</</urath/</url-pattern> <Servlet> </servlet-mapping> <Se-set de caracteres set-> <filter> <filter-name> EncodingFilter </filter-name> <filter-class> org.springframework.web.filter.characteriCoDodingFilter </filter-class> <itparam> <amamname-Name> encoding </param-name> <amam-value> utilic. <Init-param> <amamname> ForceEncoding </param-name> <amam-value> true </amam-value> </it-param> </filter> <filter-mapping> <filter-name> encodingfilter </filter-name> <url-pattern>/*</url-pattern> </sille-mapping> <!-sesion a la sesión de control-> <filter> <filter-name>openSession</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSession</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
Spring-Servlet.xml
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework.org/schema/context" " xmlns: p = "http://www.springframework.org/schema/p" xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: xsi = "http://wwww.w3.org/2001/xschemlns" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/contextExt http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springfframework.org/schema/mvc/spring-mvc-3.0.0.xsd " paquete-> <context: component-scan base-paquete = "com.jialin" /> <!-esquema de anotación abierto 1-> <!-Procesamiento de métodos de anotación-> <!-<bean />-> <!-Annotation Class Mapping Process -> <mvc: recursos ubicación = "/img/" mapping = "/img/**"/> <mvc: recursos ubicación = "/js/" mapping = "/js/**"/> <!-Acceso de recursos estáticos, esquema 2-> <!-<mvc: predeterminado-servlet-handler/>-> <! name = "prefix" value = "/"> </property> <!-puede estar vacío, conveniente para implementar la lógica de la clase de interpretación de la vista basada en su extensión-> <propiedad name = "sufix" value = ". jsp"> </property> </bean> <!-cargar archivo bean-> <!-<bean id = "multiprartresolver"> <nombre de propiedad = "value" value "valiente" Utf- "Utf-"/"Utf-8"/<<Bean Propiedad <Propiedad de propiedad ". name = "maxUploadSize" value = "10485760000" /> <propiedad name = "maxInMemorySize" value = "40960" /> < /bean> -> </ Beans>
spring-hibernate.xml
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework.org/schema/context" " xmlns: p = "http://www.springframework.org/schema/p" xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: xsi = "http://wwww.w3.org/2001/xschemlns" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/contextExt http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springfframework.org/schema/mvc/spring-mvc-3.0.0.xsd ". Fuente-> <bean id = "dataSource"> <propiedad name = "driverClassName" value = "com.mysql.jdbc.driver" /> <propiedad name = "url" value = "jdbc: mysql: //127.0.0.0.1/springmvc" /> <name de propiedad = "usue" value = "root" /> <nombre de propiedad "valor" valor " /> < /bean> <!-Configurar Hibernate SessionFactory-> <Bean id = "SessionFactory"> <Property Name = "DataSource" ref = "DataSource" /> <Property name = "HibernateProperties"> <Props> <prop key = "hibernate.dialect"> org.hibernate.dialect.mysqldialect < /prop> <prop> key = "Hibernate.hbm2ddl.auto"> Update </prop> <prot key = "Hibernate.show_sql"> true </prop> <proping key = "hibernate.format_sql"> true </pr> </prop> </property> <property name = "configlocations"> <List> <Neal>> classpath*: config/hibernate/hibernate.cfg.xml </valor> </list> </propiety> </bean> <!-Transaction Manager-> <bean id = "TransactionManager"> <Property Name = "SessionFactory" Ref = "SessionFactory"> </Property> </Bean> <!-Transaction Agent Class-> <Bean Id = "TransactionBese" Lazzary-init = "verdadero" verdadero "verdadero" verdadero "verdadero" verdadero "verdadero" verdadero "verdadero" verdadero "verdadero" verdadero "verdadero" <Property name = "TransactionManager" ref = "TransactionManager"> </propiety> <Property Name = "TransactionATtributes"> <Props> <proping key = "add*"> propagation_required, -exception </prop> <prot key = "update*"> propagation_required, -exception </prop> <propiLE key = "insert*"> propagation_required, -Exception </prop> <prop syke = "modify*"> propagation_required, -exception </pr> <prop key = "modificar*"> propagation_required, -exception </pp> <pp key = "delete*"> propagation_required, -exception </prop> <pppi key = "del*"> propagation_required, -exception </prop> <proping key = "get*"> propagation_never </prop> </props> </propiT a </ bean> </beans>
spring-core.xml
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework.org/schema/context" " xmlns: p = "http://www.springframework.org/schema/p" xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: xsi = "http://wwww.w3.org/2001/xschemlns" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/contextExt http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springfframework.org/schema/mvc/spring-mvc-3.0.0.xsd " Archivos, que pueden ser múltiples-> <importar recursos = "classpath*: config/spring/spring-user.xml"/> </les>
Spring-user.xml
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype Beans pública "-// Spring // dtd Bean 2.0 // en" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [<<<<<<<<<<<<<<<Untity contextinClude System. "org/springframework/web/context/web-inf/contextinclude.xml">]> <Beans> <!-spring bean-> <bean id = "userdao"> <propiedad name = "sessionFactory" ref = "sessionFactory"> </property> </bean> <bean id = "usermanBase"> <name de propiedad = "userdao" ref = "usserDao" <
hibernate.cfg.xml
<! DOCTYPE Hibernate-Configuration public "-// Hibernate/Hibernate Configuration Dtd 3.0 // en" "http://www.hibernate.org/dtd/Hibernate-Configuration-3.0.dtd"> <HiBernate-Configuration> <session-factory> <!-Introducción a las clases. <Mapeo/> </session-factory> </hibernate-Configuration>
Echemos un vistazo al controlador
paquete com.jialin.controller; import java.io.ioException; import java.io.printwriter; import java.util.list; import javax.annotation.resource; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; importar org.springframework.stereotype.controller; importar org.springframework.web.bind.annotation.requestMapping; import com.jianin.entity.user; import com.jianin.service.iusermanager; @Controller // Acción similar a Struts @RequestMapping ("/User") Clase pública UserController {@Resource (name = "Usermanager") // Obtener la ID del Bean en el archivo de configuración de Spring como USERMANAGER e inyectar iUsermaner usermanager privado; @RequestMapping ("/adduser") // Solicitar la asignación de direcciones de URL, similar a la acción de mapeo de acción de Struts, public String adduser (usuario de usuario) {if (usermanager.adduser (user)) {// redirect devuelve "redirect:/user/getalluser"; } else {return "/fail"; }} @RequestMapping ("/updateUser") Public String UpdateUser (usuario de usuario, solicitud httpservletrequest) {if (usermanager.updateuser (user)) {user = usermanager.getoneuser (user); request.setAttribute ("Usuario", usuario); return "/UserEdit"; } else {return "/fail"; }} @RequestMapping ("/Deluser") public void Deluser (usuario de usuario, respuesta httpServletResponse) {string dult = "{/" resultado/":/" error/"}"; if (usermanager.deluser (user)) {result = "{/" result/":/" éxito/"}"; } PrintWriter out = null; respuesta.setContentType ("Aplicación/JSON"); intente {out = respuesta.getwriter (); out.write (resultado); } catch (ioException e) {E.PrintStackTrace (); }} @RequestMapping ("/Toadduser") public String ToadDuser () {return "/UserAdd"; } @RequestMapping ("/ToupDateUser") public String ToupDateUser (usuario de usuario, solicitud httpservletRequest) {user user1 = usermanager.getoneuser (usuario); request.setAttribute ("user1", user1); return "/UserEdit"; } @RequestMapping ("/getAlluser") Public String getAlluser (httpservletRequest request) {list userList = usermanager.getalluser (); request.setAttribute ("UserList", UserList); return "/usermain"; }}Descarga del código fuente ...
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.