1. 请求参数接收处理
Spring MVC提供多种方式来接收请求参数,包括:
@RequestParam
注解:用于接收请求参数,可以设置参数的名称、是否必需、默认值等。
@GetMapping("/user")
public String getUser(@RequestParam("id") Long userId) {
// 处理请求参数
return "user";
}
@PathVariable
注解:用于接收路径变量,可以在路径中直接使用变量。
@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") Long userId) {
// 处理路径变量
return "user";
}
- 对象绑定:可以将请求参数直接绑定到对象上。
@PostMapping("/user")
public String addUser(User user) {
// 处理请求参数绑定到对象上
return "user";
}
2. 响应
Spring MVC支持多种方式返回响应结果,包括:
- 返回视图名称:Spring MVC会根据视图名称找到对应的视图模板进行渲染。
@GetMapping("/user")
public String getUser(ModelMap model) {
User user = userService.getUser();
model.addAttribute("user", user);
return "user";
}
- 返回JSON数据:可以使用
@ResponseBody
注解将返回结果直接封装成JSON格式进行响应。
@GetMapping("/user")
@ResponseBody
public User getUser() {
return userService.getUser();
}
- 返回自定义响应:可以使用
ResponseEntity
对象封装自定义的响应。
@GetMapping("/user")
public ResponseEntity<User> getUser() {
User user = userService.getUser();
return new ResponseEntity<>(user, HttpStatus.OK);
}
3. 拦截器
拦截器在请求处理过程中起到拦截、处理、转发请求的作用。Spring MVC提供了HandlerInterceptor
接口来实现拦截器。
public class AuthInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理前拦截并处理请求
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 在请求处理后拦截并处理请求
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在请求完成后拦截并处理请求
}
}
配置拦截器:
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Autowired
private AuthInterceptor authInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(authInterceptor)
.addPathPatterns("/api/**")
.excludePathPatterns("/api/login");
}
}
4. 上传文件
Spring MVC提供了文件上传的功能,可以通过@RequestParam
注解来接收上传的文件。
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
// 处理上传的文件
return "upload";
}
配置文件上传的临时目录和大小限制:
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/uploads/**")
.addResourceLocations("file:/path/to/uploads/");
}
@Override
public void configureMaxUploadSize(MaxUploadSizeConfigurer configurer) {
configurer.setMaxUploadSize(10485760); // 10MB
configurer.setMaxUploadSizePerFile(1048576); // 1MB
configurer.setMaxInMemorySize(4096); // 4KB
}
}
5. 异常处理
Spring MVC提供了统一的异常处理机制,可以通过@ExceptionHandler
注解来处理指定的异常。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
// 处理异常
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
结语
Spring MVC是一个功能强大的MVC框架,提供了丰富的功能和组件来简化Web开发。本文对Spring MVC的请求参数接收处理、响应、拦截器、上传文件、异常处理进行了基础整理。希望对你的学习和实践有所帮助。
参考链接:
本文来自极简博客,作者:深海里的光,转载请注明原文链接:Spring MVC基础整理