Nota: Nao sou eu tocando, ate porque eu nao tenho meu audio desse som gravado ainda. Capitulo 2. Desenvolver e configurar os modos de exibicao (View) e o controlador (Controller).Esta e a segunda parte do tutorial sobre como desenvolver uma aplicacao web a partir do zero usando Spring Framework. Na parte 1 configuramos o ambiente e criamos uma aplicacao basica.Veja o que implementamos ate o momento: Pagina de introducao, 'index.jsp', A pagina de boas-vindas da aplicacao. Ela foi utilizada para testar se nossa configuracao esta correta. Vamos mudar isto mais tarde para realmente fornecer um link para nossa aplicacao. O DispatcherServlet (front controller) com o correspondente arquivo de configuracao 'springapp-servlet.xml'. Um controlador de pagina, HelloController, com funcionalidade limitada ele somente retorna um ModelAndView. Atualmente temos um modelo vazio, iremos fornecer um modelo completo mais tarde. A classe de teste unitario do controlador de pagina, HelloControllerTests, para verificar se o nome da view e o que esperamos. Uma view, 'hello.jsp', Que e extremamente basica. A boa noticia e que fizemos todas configuracoes e agora estamos prontos para adionar mais funcionalidades.2.1. Configure JSTL e adicione o arquivo de cabecalho JSPUtilizaremos o JSP Standard Tag Library (JSTL), entao vamos comecar copiando os arquivos JSTL que precisamos para nossa pasta "WEB-INF/lib". Copie o arquivo jstl.jar da pasta 'spring-framework-2.5/lib/j2ee' e o arquivo standard.jar da pasta 'spring-framework-2.5/lib/jakarta-taglibs' para a pasta 'springapp/war/WEB-INF/lib'.Vamos criar um arquivo de 'header' que sera incluido em cada pagina JSP que vamos escrever. Assim garantimos que as mesmas definicoes estao incluidas em todos nossos JSPs. Vamos colocar todos JSPs em uma pasta chamada "jsp" dentro de 'WEB-INF'. Isso ira garantir que serao acessados apenas atrave do controller, uma vez que nao sera possivel acessar estas paginas diretamente atraves de uma URL. Caso nao funcione em seu servidor de aplicacao, mova a pasta um nivel acima, ficando em 'springapp/war/jsp' (se este for o teu caso, o caminho a ser utilizado em todos os exemplos e este).Primeiro vamos criar o arquivo de header que sera incluido em todos nossos JSPs.'springapp/war/WEB-INF/jsp/include.jsp':<%@ page session="false"%><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>Agora atualize o 'index.jsp' para utilizar este arquivo e ja que estamos usando JSTL, voce pode usar a tag <c:redirect/> para direcionar para o Controller. Isto significa que todos pedidos para 'index.jsp' irao passar pelo framework da aplicacao. Substitua o conteudo do 'index.jsp' por este:'springapp/war/index.jsp':<%@ include file="/WEB-INF/jsp/include.jsp" %><%-- Redirected because we can't set the welcome page to a virtual URL. --%><c:redirect url="/hello.htm"/>Mova o arquivo 'hello.jsp' para a pasta 'WEB-INF/jsp'. Adicione a diretiva de inclusao no arquivo 'index.jsp' para 'hello.jsp'. Tambem adicionaremos a data e hora como saida recuperada do modelo e passada a view processado usando a tag JSTL <c:out/>.'springapp/war/WEB-INF/jsp/hello.jsp':<%@ include file="/WEB-INF/jsp/include.jsp" %><html> <head><title>Hello :: Spring Application</title></head> <body> <h1>Hello - Spring Application</h1> <p>Greetings, it is now <c:out value="${now}"/></p> </body></html>2.2. Melhorando o controllerAntes de atualizar a localizacao do JSP no controller, atualize sua classe de teste unitario antes. Sabemos que precisamos atualizar os recursos das views referente a nova localizacao 'WEB-INF/jsp/hello.jsp'. Sabemos tambem que deve haver um objeto no modelo mapeado para a chave "now".'springapp/test/springapp/web/HelloControllerTests.java':package springapp.web;import org.springframework.web.servlet.ModelAndView;import springapp.web.HelloController;import junit.framework.TestCase;public