Siempre he usado SSH. Debido a que la compañía quiere usar SpringMVC, nunca he estado expuesto a él antes, así que hoy aprenderé este marco con usted para poder hacer mi trabajo.
En primer lugar, entendamos qué es un patrón. El patrón es la metodología de resolver un cierto tipo de problema, y resumir las soluciones a este tipo de problema al nivel teórico. Este es el patrón. Los patrones son una guía que ayuda a los desarrolladores a completar las tareas bajo una buena guía. Hacer un excelente plan de diseño puede lograr el doble del resultado con la mitad del esfuerzo. Y obtendrá la mejor solución al problema.
El patrón MVC se originó en el lenguaje SmallTalk, que es la abreviatura del controlador de visión del modelo. MVC debilita el acoplamiento entre la interfaz lógica empresarial y la interfaz de datos. Hay muchos beneficios del uso de modo MVC, como una fuerte confiabilidad, alta reutilización y adaptabilidad, bajo costo del ciclo de vida, implementación rápida, mantenimiento fuerte, etc. No explicaré demasiado los detalles aquí.
Características de SpringMVC:
1. División de rol claro. Spring proporciona una división muy clara en modelo, vista y controlador. Estos tres aspectos se realizan realmente y cada uno asume sus responsabilidades.
2. Función de configuración flexible, porque el núcleo de Spring es IOC, y al implementar MVC, varias clases también se pueden configurar a través de XML como frijoles.
3. Proporcione una gran cantidad de interfaces de controlador y clases de implementación, para que los desarrolladores puedan usar las clases de implementación del controlador proporcionadas por Spring o implementar la interfaz del controlador ellos mismos.
4. SpringMVC es un independiente de la implementación de la capa de vista real. No obligará a los desarrolladores a usar JSP. Podemos usar otras tecnologías de vista, como Velocity, XSKT, etc.
5. Apoyo de internacionalización. ApplicationContext de Spring proporciona soporte para la internacionalización, que puede usarse muy convenientemente aquí.
6. Programación orientada a la interfaz. De hecho, esta no es solo una característica de SpringMVC. Desde la perspectiva de la primavera, esta característica es muy obvia porque facilita a los desarrolladores probar programas y administrarlos fácilmente.
7. Spring proporciona un conjunto completo de procesos para el desarrollo de aplicaciones web, no solo MVC, que se puede combinar fácilmente. A continuación se muestra un ejemplo de cómo lo hice yo mismo. Después de terminar este ejemplo, realmente me di cuenta del poder de SpringMVC.
Comencemos a configurar nuestro proyecto SpringMVC:
Primero, configuramos web.xml en el directorio web-INF:
<? xml versión = "1.0" encoding = "utf-8"?> <web-app versión = "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/xml/ns/Javaee/web-app_2_5.xsd"> <Servlet> <! DispatcherServlet, que controla la ruta de solicitud de toda la página-> <Servlet-name> DispatcherServlet </Servlet-Name> <Servlet-Class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <!-Initialization Parameters>/Web-Inf/Classes/Equivalent to the Src Directory-> <<rin-Param> <! contextConfigLocation-> <amamname> contextConfigLocation </marr-name> <amam-value> /web-inf/classes/applicationContext.xml </param-value> </it-param> <carga-on-startup> 2 </load-on-startup> </servlet> < <Servlet-name> DispatcherServlet </servlet-name> <url-pattern>*. do </sl-pattern> </servlet-mapping> <!-Manejo de problemas confusos chinos que ocurren al pasar chino desde la página en segundo plano-> <filter> <filter-name> codingfilter </filter-name> <filter-class> org.springframework.web.filter.characteriCoDingFilter </filter-class> <it-param> <amamname> codificación </mamname> <amam-value> utf-8 </param-value> </initparam> </filtre> <filter-papping> <filter-name> encodingfilter </filtro> <Url-Pattern>/*</url-Pattern> </filter-mapping> <Welcome-File-List> <Welcome-File> index.jsp </leadde-file-file> </bienvenido-file-list> </beb-app>
Después de configurar un archivo cada vez, se recomienda iniciar el servidor primero para ver si ocurre una excepción, de lo contrario será difícil depurar y encontrar la excepción en la etapa posterior.
Después de configurar Web.xml, necesitamos crear un archivo DB-Config.Properties en el directorio SRC para almacenar nuestra información de configuración de fuente de datos:
El contenido es el siguiente:
db.url = jdbc: mysql: /// springmvcdb? UseUnicode = true & caracterSencoding = utf8db.username = rootdb.password = rootdb.dirverclass = com.mysql.jdbc.driver
Después de configurar DB-Config.Properties, comience a configurar el archivo ApplicationContext.xml:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" "" "" xsi: schemalocation = "http://www.springframework.org/schema/beansshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-Define un control de control predeterminado-> <reman/> <!-Get Configuration File-<seT <SP name = "ubicaciones"> <list> <value> classpath: db-config.properties </value> </list> </propiets> </bean> <!-obtenga fuente de datos-> <bean id = "dataSource"> <Property name = "conductorClassname"> <alon> $ {db.dirverclass} </value> </propers> <propers name = "Url"> <alon> $ {db.dirverClass} </value> </propers> <sperty name = "Url"> <value> $ {db.url} </value> </property> <Property name = "username"> <value> $ {db.username} </value> </propine> <propiedad name = "contraseña"> <value> $ {db.password} </valor> </propiedad> </e bean> <!- El url de la urdlina a la URL a la lista de mapeo de procesador se puede configurar con múltiples mapas de mappes con múltiples mapas de mappes con múltiple direcciones, y el valor es el nombre del frijol del procesador. La dirección del archivo del programa de URL puede adoptar un patrón de coincidencia de ruta, como: com/mvc/t? St.jsp: coincidir com/mvc/test.jsp, com/mvc/tast.jsp, etc. com/mvc /*.jsp: coincidir con todas las urls con jsp suffix en com/mvc // **/test.jsp: coincidir todo test.jsp com/mvc /**/*.jsp: coincida con todas las URL con sufijos .jsp en la ruta com/mvc o en la ruta descendiente cn/**/web/bla.jsp: solicitudes de coincidencia para cn/option/web/dog.jsp cn/opción/test/web/dog.jsp cn/dog.jsp cn/dog.jsp -> <<product name> "name>" oval> "oval>" oval> "oval>" oval. user.do=userAction </value> </property> </bean> <!--Definition view is used through internalResourceView to indicate that Servlet/jsp technology is used--> <bean id="viewResolver" > <property name="viewClass"> <value>org.springframework.web.servlet.view.InternalResourceView </value> </property> <!-- directory stored in JSP-> <Property Name = "Prefix"> <value>/jsp/</value> </sperty> <!-Definición del sufijo del sufijo-> <propiedad name = "sufix"> <value> .jsp </value> </property> </bean> <bean id = "userdao"> <name de propiedad = "dataSource" ref = "dataSource"> </propiedad> <</bean> <efinition de la definición de-<s de propiedad de propiedad = "dataSource" datasource "> </property> </bean> <s, la definición de control de la propiedad de la propiedad =" dataSource "> </spertity> </bean> <! <bean id = "userAction"> <Property name = "dao"> <ref bean = "userDao"/> </property> <Property name = "CommandClass"> <value> com.yjde.springmvc.userdao </value> </sperties> <Property name = "ViewPage"> <Neal> UserInfo </value> </spersper> </behans>Después de configurar el archivo ApplicationContext.xml, comenzamos a escribir clases de Java específicas. Necesitamos una clase DAO, una clase de controlador y un PO
Creamos una tabla Usermbo en MySQL, que tiene tres campos de usuario de usuario, nombre de usuario, usuario
Clase de usuarios de usuarios:
paquete com.yjde.springmvc; import java.sql.resultset; import java.sql.sqlexception; import java.util.collection; import java.util.list; importar org.springframework.jdbc.core.rowmapper; importar org.springframework.jdbc.core.support.jdbcdaosupport; @SupessWarnings ("All") Public Class UserDao extiende JDBCDAOSUPPORT {String privado msg; public String getMsg () {return msg; } public void setmsg (string msg) {this.msg = msg; } // Este método consulta los campos correspondientes a la tabla useMBO y los coloca en userpo en secuencia colección publicitaria <sereurpo> doquery () {String sql = "Seleccione T.Userid, T.Username, T.Userage de USERMBO T"; return super.getjdbctemplate (). Query (SQL, new RowMapper () {public Object MapRow (resultSet RS, int num) lanza SQLException {userpo user = new UserPo (); user.setUserId (rs.getInt ("userid")); user.setusername (rs.getstring ("username"););;; user.setUserage (rs.getInt ("userage"); }}JDBCTemplate es la clase central del paquete central. Hace la creación y liberación de recursos para nosotros, simplificando así nuestro uso de JDBC. También puede ayudarnos a evitar errores comunes, como olvidar cerrar la conexión de la base de datos. Para más detalles, consulte la API
Clase del controlador:
paquete com.yjde.springmvc; import java.io.printwriter; import java.util.arrayList; import java.util.collection; import java.util.hashmap; import java.util.list; import java.util.map; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; importar org.springframework.validation.bindexception; importar org.springframework.web.servlet.modelandview; importar org.springframework.web.servlet.mvc.simpleformController; @SupessWarnings ("All") // SimpleFormController es un controlador de formulario proporcionado por Spring. Establece el nombre del elemento en el formulario en la página a la misma que en el frijol. Cuando se pasa, Spring agarrará automáticamente el valor del elemento del mismo que el nombre del frijol en el formulario y lo convertirá en un frijol, para que los desarrolladores puedan usarlo muy convenientemente. Public Class UserController extiende SimpleFormController {private String ViewPage; usuarios privados Dao; public String getViewPage () {return ViewPage; } public void setViewPage (String ViewPage) {this.ViewPage = ViewPage; } @Override ModelAndView OnSubMit (HttpServletRequest Solicitud, respuesta httpServletResponse, comando de objeto, errores de bindException) lanza la excepción {userdao tmp = (userDao) comando; Colección <sererpo> list = dao.doquery (); List <SererPo> users = new ArrayList <Unsempo> (); Usuario de usuario; for (userpo userpo: list) {user = new UserPo (); user.setUserID (userpo.getUserID ()); user.setUsername (userpo.getUsername ()); user.setUserage (userpo.getUserage ()); ussers.add (usuario); } Map mp = new HashMap (); mp.put ("List", usuarios); devolver nuevo ModelAndView (getViewPage (), MP); } public void setDao (userdao dao) {this.dao = dao; }} paquete com.yjde.springmvc; Public Class Userpo {private entero userId; nombre de usuario de cadena privada; usuarios enteros privados; public integer getUserID () {return userId; } public void setUserID (Integer UserId) {this.userID = userId; } public String getUsername () {return UserName; } public void setUsername (String UserName) {this.Username = username; } public integer getUserage () {return userage; } public void setUserage (Integer Userage) {this.userage = userage; }} </pre> <br> <p align = "izquierda"> <span style = "color: teal"> Después de que se complete la creación de clase, escribiremos dos </span> <span style = "color: teal"> jsp </span> <span style = "color: teal"> test: </span> </p> <p align = "izquierda"> <span style = "color: teal"> Índice.jss <p align = "izquierda"> <span style = "color:#bf5f3f"> </span> </p> <preame = "código"> <%@ page lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%string path = request.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+ruta+"/"; %> <! DocType html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = " http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "palabras clave" content = "keyword1, weyword 2, keyword3"> <meta http-oquiv = "descripción" Content = "esto es mi página" << type = "text/css" href = "styles.css"> -> </head> <body> <form de action = "user.do" método = "post"> por favor ingrese <input name = "msg" type = "text"/> <input type = "s," value = "enviar"> </form> </body> </ html> </pre> <p align ">" de la izquierda " style = "Color: Teal"> </span> </p> <p Align = "Left"> <span style = "color: teal"> Resultado de ejecución final: </span> </p> <p align = "izquierda"> <span style = "color: verde azulado"> <img src = "http://my.csdn.net/uploads/201204/24/1333352377733_4732.png"> </span> </p> <p align = "izquierda"> <span style = "color: teal"> Declaración de creación de la mesa de la base de datos: </span> </p> <p Align "izquierda" style = "Color:#008080"> </span> </p> <preame = "código">/* Navicat MySQL Transferencia de datos Servidor de origen: Servidor de origen MySQL Versión: 50145 Host de origen: local: 3306 Base de datos de origen: SpringMVCDB Tipo de servidor de destino: Versión de servidor de destino MySQL: 50145 Falling: 65001 Fecha: 2012-10-10440440 */ Set extranjero_key_checks = 0; ------------------------ Crear tabla `usermbo` (` userId` int (11) no nulo predeterminado '0', `username` varchar (50) predeterminado nulo,` userage` int (11) predeterminado nulo, clave primaria (`userId`)) Engine = innodb DefaultCharset = UTF8; ------------------------------Records of Usermbo------------------------------ Insertar en valores `usermbo` ('2', '柳梦璃', '27'); Inserte en valores `usermbo` ('3', '韩菱纱', '26'); </ pre> Descargar Ejemplo: Demo
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.