isaquebressy

January 8, 2016

[Aprendendo Spring MVC] Controllers

O controller no Spring MVC deve ser anotado com @Controller e as actions (métodos dos controllers que são mapeados para o front-controller redirecionar) devem ser anotadas com @RequestMapping, passando o caminho a qual ela responderá.

Após processar as regras de negócio, a action deve retornar uma String com o nome da view (página que será retornada para apresentação no cliente) sem a extensão.

@Controller
public class HelloController {
  @RequestMapping("/hello")
  public String myHello() {
    System.out.println("Hello World.");
    return "hello";
  }
}

A view que será chamada deve estar no caminho declarado no arquivo /WEB-INF/spring-context.xml. Geralmente, as views ficam na pasta /WEB-INF/views.

Ao invés de retornar uma JSP, o controller pode também redirecionar para outra action, sendo possível fazer esse redirecionamento no cliente ou no servidor. Para fazê-lo no cliente, deve-se passar o termo "redirect:" na string de retorno da action e, logo depois, o nome que foi mapeado para a mesma.

@Controller
public class HelloController {
  @RequestMapping("/hello")
  public String myHello() {
    System.out.println("Hello World.");
   return "redirect:hello2";
  }
  @RequestMapping("/hello2")
  public String anotherHello() {
    //Code…
  }
}

Caso haja a necessidade de ser feito um redirecionamento no servidor (forward), é possível utilizar o termo "forward:" dentro da string de retorno, passando uma action (caminho mapeado como @RequestMapping) do controller, ao invés do nome da JSP. Assim, a URL mostrada no browser continuará a mesma.

@Controller
public class HelloController {
  @RequestMapping("/hello")
  public String myHello() {
    System.out.println("Hello World.");
    return "forward:hello2";
  }
  @RequestMapping("/hello2")
  public String anotherHello() {
    //Code…
  }
}

Através de um formulário, é possível passar os dados para o controller apenas nomeando os campos com os valores de um objeto e recebendo como parâmetro da action o objeto. O Spring trata de verificar quais os campos equivalem e já os popular.

@Controller
public class HelloController {
  @RequestMapping("/hello")
  public String sayHello(User user) {
    System.out.println("Hello, " + user.getNome());

    return "hello";
  }
}


Category: java learning spring-mvc

Tags: framework java mvc


# Back