quarta-feira, 30 de outubro de 2013

Primeiro Exemplo de Aplicação Spring Web MVC com o NetBeans IDE - 2

Após a análise anterior, focando a estrutura de projeto Spring Web MVC criada pelo NetBeans, e uma explicação sucinta sobre o modo de funcionamento da infraestrutura Spring Framework, vamos, neste artigo, criar um primeiro exemplo de controller e view.

Assim, vamos começar por criar uma classe Controller (OlaController) a qual irá devolver dados do Model (string "Olá Mundo!!!") e uma View (ola.jsp) que servirá para renderizar os dados do Model num Browser.

O resultado não será muito diferente do obtido no artigo anterior, mas o objetivo aqui é criar um Controller que instancia dados e os passa a uma View.

No próximo artigo, iremos avançar com o preenchimento de dados de Model oriundos de uma base de dados...

Assim, vamos criar um novo package (exemplo) no qual iremos colocar o Controller OlaController.java.
No NetBeans, podemos clicar sobre o package exemplo com o botão direito do rato e selecionar

                  New --> Other --> Categories: SpringFramework  / File Types: AbstractController
                                                         (damos à nova classe o nome OlaController)









E, completamos o conteúdo do método handleRequestInternal de modo a que a classe OlaController.java fique como se segue:

package exemplo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

/**
 *
 */
public class OlaController extends AbstractController {
    
    public OlaController() {
    }
    
    protected ModelAndView handleRequestInternal(
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        
        String modelInstance = "Olá Mundo!!!";
        return new ModelAndView("ola", "modelName", modelInstance);
    }
}


Depois, podemos criar a nova View (ola.jsp) na pasta WEB-INF/jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>${modelName}</h1>
    </body>
</html>


Temos então um controller que instancia uma string, referenciada na view ola.jsp, e depois retorna ambos para que a view seja renderizada com os dados instanciados.

Para que tudo corra bem, falta conferir as configurações no ficheiro web.xml (ver artigo anterior), e efetuar as necessárias alterações no ficheiro dispatcher-servlet.xml (ver artigo anterior para melhor entender o porquê da necessidade de isto):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
 ...
 ... >

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
        </property>
    </bean>

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />

    <!--
    The index controller.
    -->
    <bean name="indexController"
          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />

    <bean name="olaController" class="exemplo.OlaController">
    </bean>

</beans>


Por fim, vamos acrescentar no ficheiro index.jsp um link para que o nosso controller seja chamado:

<%@page contentType="text/html" 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>Welcome to Spring Web MVC project</title>
    </head>

    <body>
        <p>Hello! This is the default welcome page for a Spring Web MVC project.</p>
        <p><i>To display a different welcome page for this project, modify</i>
            <tt>index.jsp</tt> <i>, or create your own welcome page then change
                the redirection in</i> <tt>redirect.jsp</tt> <i>to point to the new
                welcome page and also update the welcome-file setting in</i>
            <tt>web.xml</tt>.</p>
        <p>
            <a href="ola.htm">Call Ola Controller</a>
        </p>
        
    </body>
</html>


O resultado da execução de este pequeno exemplo é uma página index.jsp, a qual quando renderizada num browser nos apresenta um link com nome "Call Ola Controller". Quando clicamos nesse link, o pedido http ao recurso ola.htm é encaminhado para o OlaController, o qual instancia dados do Model, modelInstance,

String modelInstance = "Olá Mundo!!!";

e os passa, com nome modelName, à View ola.jsp,

return new ModelAndView("ola", "modelName", modelInstance);

a qual envia para o browser HTML formatado, onde no lugar de   ${modelName} colocou o valor correspondente "Olá Mundo!!!".



Referências:


Outros artigos relacionados:


Sem comentários:

Enviar um comentário