Essa é a terceira parte da série de artigos sobre o
Nosso objetivo
Nosso objetivo é criar uma aplicação básica de Gerenciamento de Contatos. Essa aplicação terá um formulário para obter os detalhes do contato. Nesse momento, iremos apenas imprimir os detalhes em arquivos de log. Aprenderemos com capturar os dados do formulário usando o Spring 3 MVC.
Começando
Vamos adicionar o formulário de contato a nossa aplicação Hello World baseada no Spring 3 MVC Hello World application. Abra o arquivo index.jsp e altere-o para o seguinte:
Arquivo: WebContent/index.jsp
< jsp:forward page = "contacts.html" ></ jsp:forward > |
O código acima apenas redireciona o usuário para a página contacts.html.
Criando o arquivo contact.jsp
Crie um arquivo JSP que exibirá o formulário Contact aos usuários.
Arquivo: /WebContent/WEB-INF/jsp/contact.jsp
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> < html > < head > < title >Spring 3 MVC Series - Contact Manager</ title > </ head > < body > < h2 >Contact Manager</ h2 > < form:form method = "post" action = "addContact.html" > < table > < tr > < td >< form:label path = "firstname" >First Name</ form:label ></ td > < td >< form:input path = "firstname" /></ td > </ tr > < tr > < td >< form:label path = "lastname" >Last Name</ form:label ></ td > < td >< form:input path = "lastname" /></ td > </ tr > < tr > < td >< form:label path = "lastname" >Email</ form:label ></ td > < td >< form:input path = "email" /></ td > </ tr > < tr > < td >< form:label path = "lastname" >Telephone</ form:label ></ td > < td >< form:input path = "telephone" /></ td > </ tr > < tr > < td colspan = "2" > < input type = "submit" value = "Add Contact" /> </ td > </ tr > </ table > </ form:form > </ body > </ html > |
Aqui, no JSP acima, apenas exibimos um formulário. Observe que o formulário é submetido para a página addContact.html.
Adicionando o Formulário e o Controller no Spring 3
Iremos adicionar a lógica no Spring 3 para exibir o formulário e capturar os valores inseridos nele. Para isso criaremos dois arquivos Java. O primeiro é Contact.java
que não é nada mais do que a forma de exibir/recuperar dados da tela e o segundo é o ContactController.java
que é a classe controller do Spring.
Arquivo: net.viralpatel.spring3.form.Contact
package net.viralpatel.spring3.form; public class Contact { private String firstname; private String lastname; private String email; private String telephone; //.. getter and setter for all above fields. } |
O arquivo acima é a forma pela qual os dados são “capturados” da tela. Observe que não foram mostrados os métodos getter e setter. Você pode gerar esses método pressionando a combinação de teclas Alt + Shift + S, R.
Arquivo: net.viralpatel.spring3.controller.ContactController
package net.viralpatel.spring3.controller; import net.viralpatel.spring3.form.Contact; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; @Controller @SessionAttributes public class ContactController { @RequestMapping (value = "/addContact" , method = RequestMethod.POST) public String addContact( @ModelAttribute ( "contact" ) Contact contact, BindingResult result) { System.out.println( "First Name:" + contact.getFirstname() + "Last Name:" + contact.getLastname()); return "redirect:contacts.html" ; } @RequestMapping ( "/contacts" ) public ModelAndView showContacts() { return new ModelAndView( "contact" , "command" , new Contact()); } } |
Na classe do controller observe que criamos dois métodos com Request Mapping /contacts e /addContact. O método showContacts()
será chamado quando o usuário solicita a URL contacts.html. Esse método renderiza um modelo com nome “contact”. Observe que no objeto ModelAndView
passamos um objeto Contact em branco com o nome “command”. O framework Spring espera um objeto com esse nome se estiver usando <form:form>
em seu arquivo JSP.
Note também que no método addContact()
temos a anotação RequestMapping
e passamos um atributo method=”RequestMethod.POST”. Dessa forma o método será chamado apenas quando o usuário gera uma requisição POST para a URL /addContact.html. Também associamos a anotação @ModelAttribute
para o argumento Contact. Isso ligará os dados da requisição ao objeto Contact. Nesse método nós apenas exibimos os valores de Firstname e Lastname e redirecionamos o view para o arquivo contacts.html.
Isso é tudo pessoal
O formulário está completo agora. Apenas rode a aplicação no Eclipse pelo pressionamento da combinação de teclas Alt + Shift + X, R. Será mostrado o formulário de contatos. Apenas informe os valores e pressione o botão Add. Após pressionar esse botão, será imprsso os valores de firstname e lastname no sysout logs.
Baixar o código fonte
Clique aqui para baixar o código fonte desse artigo