M3_LAB3

download M3_LAB3

of 19

Transcript of M3_LAB3

  • 7/28/2019 M3_LAB3

    1/19

    GUA DE LABORATORIO 3

    SPRING MVC

  • 7/28/2019 M3_LAB3

    2/19

    Tecsup Spring MVC

    LABORATORIO

    Objetivos:

    Implementar la capa de presentacin con 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 lacapa 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.

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 1

  • 7/28/2019 M3_LAB3

    3/19

    Tecsup Spring MVC

    Crear el archivo /WebContent/WEB-INF/web.xml :

    web.xml

    Spring3

    despachadororg.springframework.web.servlet.DispatcherServlet1

    despachador*.html

    contextConfigLocation

    classpath:/applicationContext.xml

    org.springframework.web.context.ContextLoaderListener

    /redirect.jsp

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 2

  • 7/28/2019 M3_LAB3

    4/19

    Tecsup Spring MVC

    Crear el archivo: /WEB-INF/despachador-servlet.xml

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 3

  • 7/28/2019 M3_LAB3

    5/19

    Tecsup Spring MVC

    Crear el archivo applicationContext.xml en src:

    Crearemos el archivo redirect.jsp en WebContent:

    Crear la clase IndexController.java:

    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");

    }

    }

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 4

  • 7/28/2019 M3_LAB3

    6/19

    Tecsup Spring MVC

    Crearemos el archivo logeo.jsp en/WEB-INF/jsp/

    Sistema de Trastienda

    Usuario:
    Clave:

    Acceder al proyecto y probar.

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 5

  • 7/28/2019 M3_LAB3

    7/19

    Tecsup Spring MVC

    Ejercicio con Spring MVC

    Escribir una calculadora que permita realizar las operaciones de suma, resta, multiplicaciny divisin.

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 6

  • 7/28/2019 M3_LAB3

    8/19

    Tecsup Spring MVC

    Spring Bean Container

    MODELO DE DOMINIO

    Usuario.javapackage 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 roles = new ArrayList();

    // 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 usuarios = new ArrayList();

    // 1. Escribir constructor vaco// 2. Generar constructor con campos// 3. Generar getters y setters

    }

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 7

  • 7/28/2019 M3_LAB3

    9/19

    Tecsup Spring MVC

    EXCEPCIONES

    DAOExcepcion.java

    package trastienda.excepcion;

    publicclass DAOExcepcion extends Exception {

    /****/privatestaticfinallongserialVersionUID = 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

    }

    }

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 8

  • 7/28/2019 M3_LAB3

    10/19

    Tecsup Spring MVC

    LoginExcepcion.java

    package trastienda.excepcion;

    publicclass LoginExcepcion extends Exception {

    /****/privatestaticfinallongserialVersionUID = 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

    }

    }

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 9

  • 7/28/2019 M3_LAB3

    11/19

    Tecsup Spring MVC

    CAPA DE SERVICIO (NEGOCIO)

    SeguridadService.javapackage 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.javapackage 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;

    @Servicepublic class SeguridadServiceImpl implements SeguridadService {

    @Autowiredprivate 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);}

    }

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 10

  • 7/28/2019 M3_LAB3

    12/19

    Tecsup Spring MVC

    CAPA DE PERSISTENCIA

    UsuarioDAO.javapackage 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.javapackage 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;

    @Repositorypublic class UsuarioDAOImpl implements UsuarioDAO {

    @Autowiredprivate 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 = "selectid_usuario,clave,nombres,paterno,materno,correo,direccion,telefono,estado from usuariowhere id_usuario=? and clave=?";

    ParameterizedRowMapper mapper = newParameterizedRowMapper() {

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 11

  • 7/28/2019 M3_LAB3

    13/19

    Tecsup Spring MVC

    public Usuario mapRow(ResultSet rs, int rowNum) throwsSQLException {

    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());

    }

    }

    }

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 12

  • 7/28/2019 M3_LAB3

    14/19

    Tecsup Spring MVC

    Agregar al applicationContext.xml:

    jdbc:mysql://localhost:3306/tienda?

    autoReconnect=true

    com.mysql.jdbc.Driver

    root

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 13

  • 7/28/2019 M3_LAB3

    15/19

    Tecsup Spring MVC

    CAPA DE PRESENTACIN

    LoginController.javapackage 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;

    @Controllerpublic class LoginController {

    @Autowiredprivate 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 claveincorrectos");

    }

    return mv;}

    }

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 14

  • 7/28/2019 M3_LAB3

    16/19

  • 7/28/2019 M3_LAB3

    17/19

    Tecsup Spring MVC

    PortadaController.javapackage 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;

    @Controllerpublic class PortadaController {

    @RequestMapping(value = "/portada")protected ModelAndView inicio(HttpServletRequest request,

    HttpServletResponse response) throws Exception {return new ModelAndView("portada");

    }}

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 16

  • 7/28/2019 M3_LAB3

    18/19

    Tecsup Spring MVC

    Crear la siguiente pgina en /WEB-INF/jsp

    portada.jsp

    Sistema de Trastienda

    Trastienda v1


    Mantenimiento de Usuarios
    Mantenimiento de Roles
    Salir

    Dpto. de Informtica David Rodrguez - [email protected] Pg. 17

  • 7/28/2019 M3_LAB3

    19/19

    Tecsup Spring MVC

    Conclusiones:

    En la presente sesin, se detall el framework Spring MVC que permite implementar la capade presentacin de una aplicacin. Adems, vimos la configuracin en capas del FrameworkSpring.