spring MVC
SpringMVC是一种基于Java的MVC(Model-View-Controller)Web开发框架,通过将业务逻辑、数据和界面分离,使得开发人员能够更高效地管理和维护代码,提高应用的可扩展性和可维护性。
SpringMVC核心概念
- Controller:Controller是SpringMVC的核心,负责接收和处理用户请求。Controller通过解析请求并将处理结果传递给相应的View来响应用户操作。
- Model:Model代表应用程序的数据和业务逻辑,是应用程序的核心。在SpringMVC中,Model通常由JavaBean或POJO(Plain Old Java Object)实现。
- View:View负责呈现用户界面,通常是HTML页面。在SpringMVC中,View可以通过JSP(Java Server Pages)、Thymeleaf等模板引擎来实现。
spring MVC常用注解
以下是一些常用的Spring MVC注解:
- @Controller:用于标记一个类作为Spring MVC控制器。该类负责处理用户请求并返回视图。
- @RequestMapping:用于映射Web请求到特定的控制器方法。它可以用于类级别和方法级别。
- @GetMapping、@PostMapping、@PutMapping、@DeleteMapping:这些注解用于映射HTTP请求方法到特定的控制器方法。它们是@RequestMapping的快捷方式。
- @PathVariable:用于绑定URL路径变量到控制器方法的参数。
- @RequestParam:用于绑定请求参数(query parameters或form data)到控制器方法的参数。
- @RequestBody:用于绑定请求体(POST或PUT请求的数据)到控制器方法的参数。
- @ResponseBody:用于指示控制器方法返回的数据应直接写入HTTP响应体中,而不是通过视图进行渲染。
- @ModelAttribute:用于将表单提交的数据绑定到Java对象,或者将额外的数据添加到模型中。
- @SessionAttributes:用于将模型数据存储到HTTP会话中,以便在不同的请求之间保持状态。
- @RequestHeader:用于绑定HTTP请求头到控制器方法的参数。
- @CookieValue:用于绑定Cookie到控制器方法的参数。
- @InitBinder:用于自定义数据绑定的方法,例如自定义日期格式化。
- @ExceptionHandler:用于处理控制器方法抛出的异常,并返回相应的视图或响应。
- @Autowired、@Resource、@Qualifier:这些注解用于在控制器中注入依赖项,例如数据访问对象(DAO)或其他服务类。
这些是常用的Spring MVC注解,但还有其他注解可用于处理更高级的功能,如拦截器、参数校验、文件上传等。
注解举例
@Controller
public class UserController { // controller methods and logic here
}
@Controller
@RequestMapping("/users")
public class UserController { @RequestMapping("/list") public String listUsers(Model model) { // handle logic for user list return "users/list"; }
}
@Controller
public class UserController { @GetMapping("/users") public String listUsers(Model model) { // handle logic for GET request return "users/list"; }
}
@Controller
@RequestMapping("/users/{userId}")
public class UserController { @GetMapping public String getUser(@PathVariable("userId") Long userId, Model model) { // handle logic for specific user return "users/detail"; }
}
@Controller
@RequestMapping("/users")
public class UserController { @PostMapping("/update") public String updateUser(@RequestParam("name") String name, @RequestParam("email") String email, Model model) { // handle logic for updating user information return "users/update"; }
}
@Controller
@RequestMapping("/users")
public class UserController { @PostMapping("/create") public String createUser(@RequestBody User user, Model model) { // handle logic for creating a new user return "users/create"; }
}
@Controller
public class UserController { @GetMapping("/users/{userId}") @ResponseBody public User getUser(@PathVariable("userId") Long userId) { // handle logic for specific user return user; }
}
@Controller
public class UserController { @ModelAttribute("user") public User createUser(@RequestParam String name, @RequestParam String email) { // create user object and set properties User user = new User(); user.setName(name); user.setEmail(email); return user; }
}
@Controller
public class UserController { @GetMapping("/login") public String login(Model model) { // handle login logic and set user data in session HttpSession session = request.getSession(); session.setAttribute("user", userData); return "login"; }
}
@Controller
public class UserController { @GetMapping("/users") public String getUsers(@RequestHeader("Authorization") String authorizationHeader, Model model) { // handle logic for getting users based on authorization header return "users/list"; }
}
@Controller
public class UserController { @GetMapping("/logout") public String logout(@CookieValue("USER_TOKEN") String token) { // handle logic for logout based on user token cookie return "logout"; }
}
@Controller
public class UserController { @InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); }
}
@Controller
public class UserController { @ExceptionHandler(UserNotFoundException.class) public String handleUserNotFoundException(UserNotFoundException e, Model model) { // handle logic for handling user not found exception and set error message in model model.addAttribute("errorMessage", "User not found."); return "error"; }
}
@Controller
public class UserController { @Autowired private UserDao userDao; // or @Resource(name = "userDao") private UserDao userDao; // or @Qualifier("userDao") private UserDao userDao;
}