Академический Документы
Профессиональный Документы
Культура Документы
SPRING MVC
Tecsup
Spring MVC
Equipos, Materiales, Programas y Recursos: PC con Sistema Operativo con soporte a Java. IDE para Java Navegador Web (recomendable Firefox) Contenedor de Servlets (recomendable Tomcat) Spring Framework
Introduccin: En la presente sesin, se detalla el framework Spring MVC para la implementacin de la capa de presentacin. Preparacin: El alumno debe haber revisado las presentaciones dadas en la clase de teora. Procedimiento y Resultados:
Spring MVC Crear un proyecto Dynamic Web Project que utilice el Tomcat 7. Copiar las libreras entregadas por el profesor.
Pg. 1
Tecsup
Spring MVC
Crear el archivo /WebContent/WEB-INF/web.xml : web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app 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/web-app_3_0.xsd" version="3.0"> <display-name>Spring3</display-name> <servlet> <servlet-name>despachador</servlet-name> <servletclass>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>despachador</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/applicationContext.xml</param-value> </context-param> <listener> <listenerclass>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <welcome-file-list> <welcome-file>/redirect.jsp</welcome-file> </welcome-file-list> </web-app>
Pg. 2
Tecsup
Spring MVC
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" > <context:component-scan base-package="trastienda.web" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
Pg. 3
Tecsup
Spring MVC
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
</beans>
package trastienda.web; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @Controller public class IndexController { @RequestMapping(value = "/index", method = RequestMethod.GET) protected ModelAndView inicio(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("logeo"); } }
Pg. 4
Tecsup
Spring MVC
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Sistema de Trastienda</title> </head> <body> <form action="login.html" method="post"> Usuario: <input type="text" name="idUsuario" value=""/> <br/> Clave: <input type="password" name="clave" value=""/><br/> <input type="submit" value="Iniciar sesin"/> </form> </body> </html>
Pg. 5
Tecsup
Spring MVC
Ejercicio con Spring MVC Escribir una calculadora que permita realizar las operaciones de suma, resta, multiplicacin y divisin.
Pg. 6
Tecsup
Spring MVC
Spring Bean Container MODELO DE DOMINIO Usuario.java package trastienda.modelo; import java.util.ArrayList; import java.util.Collection; public class Usuario { private String idUsuario; private String clave; private String nombres; private String paterno; private String materno; private String correo; private String direccion; private String telefono; private String estado; private Collection<Rol> roles = new ArrayList<Rol>();
// 1. Escribir constructor vaco // 2. Generar constructor con campos // 3. Generar getters y setters
} Rol.java package trastienda.modelo; import java.util.ArrayList; import java.util.Collection; public class Rol { private String rolNombre; private String descripcion; private Collection<Usuario> usuarios = new ArrayList<Usuario>();
// 1. Escribir constructor vaco // 2. Generar constructor con campos // 3. Generar getters y setters
Pg. 7
Tecsup
Spring MVC
EXCEPCIONES DAOExcepcion.java
package trastienda.excepcion; public class DAOExcepcion extends Exception { /** * */ private static final long serialVersionUID = 1L; public DAOExcepcion() { super(); // TODO Auto-generated constructor stub } public DAOExcepcion(String arg0, Throwable arg1) { super(arg0, arg1); // TODO Auto-generated constructor stub } public DAOExcepcion(String arg0) { super(arg0); // TODO Auto-generated constructor stub } public DAOExcepcion(Throwable arg0) { super(arg0); // TODO Auto-generated constructor stub } }
Pg. 8
Tecsup
Spring MVC
LoginExcepcion.java
package trastienda.excepcion; public class LoginExcepcion extends Exception { /** * */ private static final long serialVersionUID = 3332421583748907236L; public LoginExcepcion() { super(); // TODO Auto-generated constructor stub } public LoginExcepcion(String message, Throwable cause) { super(message, cause); // TODO Auto-generated constructor stub } public LoginExcepcion(String message) { super(message); // TODO Auto-generated constructor stub } public LoginExcepcion(Throwable cause) { super(cause); // TODO Auto-generated constructor stub } }
Pg. 9
Tecsup
Spring MVC
CAPA DE SERVICIO (NEGOCIO) SeguridadService.java package trastienda.service; import trastienda.excepcion.DAOExcepcion; import trastienda.excepcion.LoginExcepcion; import trastienda.modelo.Usuario; public interface SeguridadService { public Usuario validar(String idUsuario, String clave) throws DAOExcepcion, LoginExcepcion; } SeguridadServiceImpl.java package trastienda.service; import org.springframework.beans.factory.annotation.Autowired; import proyecto.dao.UsuarioDAO; import proyecto.excepcion.DAOExcepcion; import proyecto.excepcion.LoginExcepcion; import proyecto.modelo.Usuario; @Service public class SeguridadServiceImpl implements SeguridadService { @Autowired private UsuarioDAO usuarioDAO; public void setUsuarioDAO(UsuarioDAO usuarioDAO) { this.usuarioDAO = usuarioDAO; } public Usuario validar(String idUsuario, String clave) throws DAOExcepcion, LoginExcepcion { return usuarioDAO.validar(idUsuario, clave); } }
Pg. 10
Tecsup
Spring MVC
CAPA DE PERSISTENCIA UsuarioDAO.java package trastienda.dao; import proyecto.excepcion.DAOExcepcion; import proyecto.excepcion.LoginExcepcion; import proyecto.modelo.Usuario; public interface UsuarioDAO { public Usuario validar(String idUsuario, String clave) throws DAOExcepcion, LoginExcepcion; } UsuarioDAOImpl.java package trastienda.dao; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; import proyecto.excepcion.DAOExcepcion; import proyecto.excepcion.LoginExcepcion; import proyecto.modelo.Usuario; @Repository public class UsuarioDAOImpl implements UsuarioDAO { @Autowired private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public Usuario validar(String idUsuario, String clave) throws LoginExcepcion, DAOExcepcion { System.out.println("UsuarioDAOImpl: validar(): " + idUsuario + ", clave: " + clave); String query = id_usuario,clave,nombres,paterno,materno,correo,direccion,telefono,estado where id_usuario=? and clave=?"; ParameterizedRowMapper<Usuario> ParameterizedRowMapper<Usuario>() { mapper from = "select usuario new
Pg. 11
Tecsup
Spring MVC
public SQLException {
Usuario
mapRow(ResultSet
rs,
int
rowNum)
throws
Usuario vo = new Usuario(); vo.setIdUsuario(rs.getString("id_usuario")); vo.setClave(rs.getString("clave")); vo.setNombres(rs.getString("nombres")); vo.setPaterno(rs.getString("paterno")); vo.setMaterno(rs.getString("materno")); vo.setCorreo(rs.getString("correo")); vo.setDireccion(rs.getString("direccion")); vo.setTelefono(rs.getString("telefono")); vo.setEstado(rs.getString("estado")); return vo; } }; try { return (Usuario) jdbcTemplate.queryForObject(query, new Object[] { idUsuario, clave }, mapper); } catch (EmptyResultDataAccessException e) { System.out.println("Usuario y/o clave incorrecto"); throw new LoginExcepcion(); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); throw new DAOExcepcion(e.getMessage()); } } }
Pg. 12
Tecsup
Spring MVC
Agregar al applicationContext.xml:
<context:component-scan base-package="trastienda.dao, trastienda.service" /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" > <property name="url"> <value>jdbc:mysql://localhost:3306/tienda? autoReconnect=true</value> </property> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value></value> </property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" > <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <!-- Transacciones --> <tx:annotation-driven transaction-manager="miGestorTransaccional" /> <bean id="miGestorTransaccional" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" > <property name="dataSource" ref="dataSource"/> </bean>
Pg. 13
Tecsup
Spring MVC
CAPA DE PRESENTACIN LoginController.java package trastienda.web; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import trastienda.excepcion.LoginExcepcion; import trastienda.service.SeguridadService; @Controller public class LoginController { @Autowired private SeguridadService seguridadService; public void setSeguridadService(SeguridadService seguridadService) { this.seguridadService = seguridadService; } @RequestMapping(value = "/login", method = RequestMethod.POST) protected ModelAndView logeo(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("Dentro de LoginController"); ModelAndView mv = null; String u = request.getParameter("idUsuario"); String p = request.getParameter("clave"); System.out.println(u); System.out.println(p); try { seguridadService.validar(u, p); mv = new ModelAndView("redirect:portada.html"); } catch (LoginExcepcion e) { mv = new ModelAndView("error", "mensaje", "Usuario y/o clave incorrectos"); } return mv; } }
Pg. 14
Tecsup
Spring MVC
Pg. 15
Tecsup
Spring MVC
PortadaController.java package proyecto.web; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class PortadaController { @RequestMapping(value = "/portada") protected ModelAndView inicio(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("portada"); } }
Pg. 16
Tecsup
Spring MVC
Pg. 17
Tecsup
Spring MVC
Conclusiones: En la presente sesin, se detall el framework Spring MVC que permite implementar la capa de presentacin de una aplicacin. Adems, vimos la configuracin en capas del Framework Spring.
Pg. 18