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

15
JAVAWEB Introdução a Java volta para web! Zarathon Maia – [email protected]

description

Uma rápida noção de MVC!

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

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

JAVAWEBIntrodução a Java volta para web!

Zarathon Maia – [email protected]

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

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.

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

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.

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

MVC – MODEL, VIEW, CONTROLLER

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

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.

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

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.

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

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

}

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

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!

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

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

}

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

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.

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

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

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

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!

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

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.

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

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: [email protected]

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

BIBLIOGRAFIA

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