Apresentação Java Web Si Ufc Quixadá - MVC

Post on 23-Dec-2014

2.205 views 1 download

description

Uma rápida noção de MVC!

Transcript of Apresentação Java Web Si Ufc Quixadá - MVC

JAVAWEBIntrodução a Java volta para web!

Zarathon Maia – zarathon@ufc.br

MVC – MODEL, VIEW, CONTROLLER

Model: As classes que representam suas entidades, e as que te ajudam a armazenar e buscar os dados, são chamadas de Modelo.

View: Generalizando o modelo acima, podemos dar nomes a cada uma das partes dessa nossa arquitetura. Quem é responsável por apresentar os resultados na página web é chamado de Apresentação.

Controller: A servlet (e auxiliares) que faz os dispatchs para quem deve executar determinada tarefa é chamada de Controladora.

MVC – MODEL, VIEW, CONTROLLER Esses três formam um padrão arquitetural

chamado de MVC, ou Model View Controller. Ele pode sofrer variações de diversas maneiras. O que o MVC garante é a separação de tarefas, facilitando assim a reescrita de alguma parte, e a manutenção do código.

O famoso Struts ajuda você a implementar o MVC, pois tem uma controladora já pronta, com uma série de ferramentas para te auxiliar. O Hibernate pode ser usado como Model, por exemplo. E como View você não precisa usar só JSP, pode usar a ferramenta Velocity, por exemplo.

MVC – MODEL, VIEW, CONTROLLER

MVC – MODEL, VIEW, CONTROLLER Request Dispatcher:

Poderíamos melhorar a nossa aplicação se trabalhássemos com o código java na servlet e depois o código html em uma página jsp.

A api da servlet nos permite fazer tal redirecionamento. Basta conhecermos a url que queremos acessar e podemos usar o que fora chamado de RequestDispatcher para acessar outro recurso web, seja esse recurso uma página jsp ou uma servlet:

RequestDispatcher rd = request.getRequestDispatcher(“/contatoadicionado.jsp”); rd.forward(request,response);

Agora podemos facilmente executar a lógica de nossa aplicação web em uma servlet e então redirecionar para uma página jsp, onde você possui seu código html.

CRIANDO NOSSA FRAMEWORK MVC

Primeiramente iremos criar uma interface que terá que ser assinada por todas as nossas lógicas de negócio.

public interface LogicaDeNegocio {

void execute(HttpServletRequest req, HttpServletResponse res) throws Exception;

}

Agora vamos precisar criar uma lógica qualquer, no caso a seguir vou criar uma lógica que irá receber um nome e vai passá-lo para uma página que exibira a mensagem de MVC-OK e o nome passado na primeira página.

CRIANDO NOSSA FRAMEWORK MVC

public class TestaMVC implements LogicaDeNegocio {

public void execute(HttpServletRequest req, HttpServletResponse res) throws Exception {

System.out.println(“Executando a logica e redirecionando...”);

RequestDispatcher rd = req.getRequestDispatcher("/mvc-ok.jsp");

rd.forward(req, res);}

}

CRIANDO NOSSA FRAMEWORK MVC

Bom, já criamos nossa interface que deverá ser assinada por todas nossas classes de lógica e criamos uma classe que assina esse método e redireciona nossa aplicação para a página “mvc-ok.jsp”.

Vamos então criar o nosso controlador de requisições. O nosso controlador de requisições, nada mais é do que um servlet que executa determinada classe lógica de acordo com uma varíavel que será passada para ele. Segue abaixo o código comentado do nosso Servlet Controlador!

CRIANDO NOSSA FRAMEWORK MVCtry {

/*Definindo String que receberá o nome da minha lógica a ser chamada

*Detalhe: O negocio será passado pelo jsp, através do parâmetro "negocio" */

String negocio = request.getParameter("negocio");

/*Definindo String que conterá o caminho físico da minha lógica

*O caminho físico é definido pelo nome.do.pacote.Classe */

String nomeDaClasseDeNegocio = "br.com.biloto.servlets." + negocio;

/*Criando um objeto do tipo Class, que gerá uma classe momentânea

*essa classe criada é uma cópia da classe estabelecia pela String anterior*/

Class classeLogicaMomentanea = Class.forName(nomeDaClasseDeNegocio);

//Verificando se a classe momentânea assina a interface LogicaDeNegocio

if (!LogicaDeNegocio.class.isAssignableFrom(classeLogicaMomentanea)) {

throw new Exception("A classe não assina a interface LogicaDeNegocio.");

}

//Criando um objeto da classe momentânea criada

LogicaDeNegocio objeto = (LogicaDeNegocio) classeLogicaMomentanea.newInstance();

//Executando a lógica da classe

objeto.execute(request, response);

} catch (Exception e) {

System.out.println("Ocorreu um erro na execução!");

}

CRIANDO NOSSA FRAMEWORK MVC

Pronto! Criamos nossa controladora, agora é só criar as nossas classes lógicas e não esquecer de no jsp o parâmetro “negocio” com seu respectivo valor, valor este que terá que ser o nome da classe lógica.

Vamos ao nosso teste! Iremos criar antes de tudo um arquivo jsp

chamado de mvc-ok, que contera a mensagem de ok e um campo que irá espera o parâmetro “nome” que virá de outro canto. Ver código no proximo slide.

CRIANDO NOSSA FRAMEWORK MVC<%@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>MVC-OK -- ${param.nome}</title> </head> <body> <h2>Minha MVC está funcionando!</h2> <h3>Valeu mesmo, ${param.nome}!!!</h3> </body></html>

//Detalhe - ${param.nome} = é onde o parâmetro “nome” será impresso

CRIANDO NOSSA FRAMEWORK MVC

Bom... Muito bom até agora... O que fazer agora!? Humm... Deixe ver... ¬¬....Ah.. Vamos criar um jsp que chamará nosso controlador, passando pra ele o nosso parâmetro “negocio”, que dirá qual a nossa classe lógica será executada, no nosso caso aqui de teste será TestaMVC.

Também terei o parâmetro nome, pois passarei o nome para a página “mvc-ok.jsp”.

Mão a obra!

CRIANDO NOSSA FRAMEWORK MVC<%@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>Testando...</title>

</head>

<body>

<h2>Coloque seu nome!</h2>

<form name="formTeste" action="mvc" method="POST">

<input type="hidden" name="negocio" value="TestaMVC" />

Nome: <input type="text" name="nome" value="" size="15" />

<input type="submit" value="Envar" name="btEnviar" />

<input type="reset" value="Limpar" name="btLimpar" />

</form>

</body>

</html>

//Detalhes: A nossa action vai acessar a minha servlet controladora, no caso aqui “mvc” através do método post

//Detalhes: Note que o nosso parâmetro “negocio” possui o valor com o nome da classe lógica e um tipo “hidden”, esse tipo esconde a visualização do parâmetro.

CRIANDO NOSSA FRAMEWORK MVC

Tcharaaammmmmmm!!!! Teste essa jsp e reze pra dar certo! =]~

Espero ter ajudado um pouco, crie outras aplicações, faça o fatorial: crie a classe lógica, e redirecione para uma página de resultados!

Bom... Boa sorte!Dúvidas e sugestões: zarathon@ufc.br

BIBLIOGRAFIA

www.caelum.com.br – apostila FJ21 www.guj.com.br www.javafree.org