# Spring Cheatsheet ## Unique Features - Java-based web framework - Inversion of Control (IoC) container - Model-View-Controller (MVC) architecture - Spring Boot auto-configuration - Spring Data JPA - Spring Security ## Controllers ```java // Define a controller @Controller public class ControllerName { @GetMapping("/url") public String functionName(Model model) { // Controller body return "template"; } } ``` ## Views ```html
``` ## Forms ```html
@PostMapping("/url") public String functionName(@ModelAttribute ModelName model) { // Form handling code return "success"; } ``` ## Database ```java // Connect to a database spring.datasource.url=jdbc:mysql://localhost:3306/db_name spring.datasource.username=username spring.datasource.password=password // Define a model @Entity public class ModelName { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String field_name; } // Create a migration spring.jpa.hibernate.ddl-auto=create ``` ## Authentication ```java // User registration @PostMapping("/register") public String registerUser(@ModelAttribute("user") User user) { userService.save(user); return "redirect:/login"; } // User login @GetMapping("/login") public String login(Model model) { model.addAttribute("user", new User()); return "login"; } @PostMapping("/login") public String loginUser(@ModelAttribute("user") User user) { if (userService.authenticate(user)) { return "redirect:/home"; } else { return "redirect:/login"; } } // User logout @GetMapping("/logout") public String logout(HttpSession session) { session.invalidate(); return "redirect:/login"; } ``` ## Resources - [Spring Documentation](https://spring.io/docs) - [Spring Boot Tutorial](https://spring.io/guides/gs/spring-boot/) - [Spring Data JPA Tutorial](https://spring.io/guides/gs/accessing-data-jpa/) - [Spring Security Tutorial](https://spring.io/guides/gs/securing-web/)