The Controller is where the DispatcherServlet will delegate requests.
Şeklen şöyle. FrontController yani DispatcherServlet istekleri benim Controller koduma yönlendirir.
Açıklaması şöyle.
When you annotate any class with an annotation which extends from @Component annotation (@Controller extends from @Component), Spring will load it to its ApplicationContext if that class falls within the Component Scan ScopeBu sınıfın kardeşi @RestController anotasyonu.
Kulllanım
1. @RequestMapping ile hangi url ile çalışacağı belirtilir. Örneğin url /hellopage olsun. \src\main\webapp\WEB-INF\views\hellopage.jsp olmalıdır.
2. ModelAndView dönülecekse belirtilen safya yine benzer ilk maddedeki benzer yapıda olmalıdır.
Kod Yapısı
Controller kodları şöyledir
src
|    +--com
|            +--mypackage
|                +--config
|                    |--ServletInitializer.java
|                    |--WebConfig.java
|                +--controller
|                    |--HomeController.java
|    +--resources
|    +--webapp
|        +--WEB-INF
|            +--views
|                |--index.jspCevap olarak thymeleaf göndermek için şöyle yaparız.
@Controller
public class HelloController {
  @RequestMapping("/")
  String index() {
    return "index";
  }
}jsp ile kullanmak için şöyle yaparız.
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.ui.ModelMap;
@Controller
public class HomeController {
    @RequestMapping(value = "/" method = RequestMethod.GET)
    public String index(ModelMap model){
        System.out.println("This is a test ================>");
        model.addAttribute("message", "Spring MVC Java Configuration Example");
        return "index";
    }
}<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Spring MVC Java Configuration Example</title>
</head>
<body>
    ${message}
</body>
</html>Elimizde şöyle bir kod olsun
import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.servlet.ModelAndView;  
@Controller 
public class HelloWorldController {  
   @RequestMapping("/hello")  
    public ModelAndView helloWorld() {  
        String message = "HELLO SPRING MVC HOW R U";  
        return new ModelAndView("hellopage", "message", message);  
    }  
}  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
  <title>Hello Page</title>
</head>
<body>
  <%@ page isELIgnored="false" %>
  <P>  ${message}. </P>
</body>
</html>Cevap olarak html göndermek için şöyle yaparız.
@RequestMapping(value="/hello", method = RequestMethod.GET)
public ModelAndView product_save(){
  ModelAndView model = new ModelAndView();
  model.setViewName("hello"); // HTML page name
  return model;
}Başka sayfaya yönlendirmek için şöyle yaparız.
@RequestMapping(value = "/user", method = RequestMethod.POST)
public String user(@Validated User user, Model model,Locale locale) {
  // your code and use return line as follows
  return "redirect:adminHome";
}Başka sayfaya yönlendirmek için şöyle yaparız.
@Controller
public class LoginController {
  @GetMapping("/")
  public String redirectToLogin() {
    ...
    return "redirect:/login";
  }
  @GetMapping("/login")
  public String showLoginForm(Model model,
    @RequestParam(name="error", required=false) String error,
    @RequestParam(name="logout", required=false) String logout) {
    ...
    return "login";
  }
  @PostMapping("/logincheck")
  public String loginCheck(@ModelAttribute(name="userCredentials")
    UserCredential userCredential) {
    ...
    return "redirect:/login?error";
  }
}Elimizde bir controller olsun.
@Controller
public class MyController {
  public String hello() {
    System.out.println("Hello World");
    return "foo";
  }
}ApplicationContext ctx = ...;
MyController controller = (MyController) ctx.getBean("myController");
controller.hello();
 
Hiç yorum yok:
Yorum Gönder