当前位置: 首页 > news >正文

spring:详解spring MVC

spring MVC

SpringMVC是一种基于Java的MVC(Model-View-Controller)Web开发框架,通过将业务逻辑、数据和界面分离,使得开发人员能够更高效地管理和维护代码,提高应用的可扩展性和可维护性。

SpringMVC核心概念

  1. Controller:Controller是SpringMVC的核心,负责接收和处理用户请求。Controller通过解析请求并将处理结果传递给相应的View来响应用户操作。
  2. Model:Model代表应用程序的数据和业务逻辑,是应用程序的核心。在SpringMVC中,Model通常由JavaBean或POJO(Plain Old Java Object)实现。
  3. View:View负责呈现用户界面,通常是HTML页面。在SpringMVC中,View可以通过JSP(Java Server Pages)、Thymeleaf等模板引擎来实现。

spring MVC常用注解

以下是一些常用的Spring MVC注解:

  1. @Controller:用于标记一个类作为Spring MVC控制器。该类负责处理用户请求并返回视图。
  2. @RequestMapping:用于映射Web请求到特定的控制器方法。它可以用于类级别和方法级别。
  3. @GetMapping、@PostMapping、@PutMapping、@DeleteMapping:这些注解用于映射HTTP请求方法到特定的控制器方法。它们是@RequestMapping的快捷方式。
  4. @PathVariable:用于绑定URL路径变量到控制器方法的参数。
  5. @RequestParam:用于绑定请求参数(query parameters或form data)到控制器方法的参数。
  6. @RequestBody:用于绑定请求体(POST或PUT请求的数据)到控制器方法的参数。
  7. @ResponseBody:用于指示控制器方法返回的数据应直接写入HTTP响应体中,而不是通过视图进行渲染。
  8. @ModelAttribute:用于将表单提交的数据绑定到Java对象,或者将额外的数据添加到模型中。
  9. @SessionAttributes:用于将模型数据存储到HTTP会话中,以便在不同的请求之间保持状态。
  10. @RequestHeader:用于绑定HTTP请求头到控制器方法的参数。
  11. @CookieValue:用于绑定Cookie到控制器方法的参数。
  12. @InitBinder:用于自定义数据绑定的方法,例如自定义日期格式化。
  13. @ExceptionHandler:用于处理控制器方法抛出的异常,并返回相应的视图或响应。
  14. @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;  
}
http://www.lryc.cn/news/191466.html

相关文章:

  • 【Leetcode】207.课程表
  • Ubuntu18.04中QT安装下载安装pcl和vtk以及使用过程中踩过的坑
  • C++学习——对象数组、成员对象与封闭类
  • 解锁机器学习-梯度下降:从技术到实战的全面指南
  • day62:ARMday9,I2c总线通信
  • 【Python学习笔记】类型/运算/变量/注释
  • 国内常用源开发环境换源(flutter换源,python换源,Linux换源,npm换源)
  • 关于一篇什么是JWT的原理与实际应用
  • 【Method】把 arXiv论文 转换为 HTML5 网页
  • 每日一题AC
  • 后端:推荐 2 个 .NET 操作的 Redis 客户端类库
  • 华泰证券:京东营收增长或短期承压
  • Java从resources文件下载文档,文档没有后缀名
  • 【动手学深度学习-Pytorch版】BERT预测系列——BERTModel
  • Python之元组、字典和集合练习
  • 【数据结构】归并排序和计数排序(排序的总结)
  • 某医疗机构:建立S-SDLC安全开发流程,保障医疗前沿科技应用高质量发展
  • 验证二叉搜索树的后序遍历序列
  • 第三章 内存管理 一、内存的基础知识
  • 【Java学习之道】Java常用集合框架
  • logicFlow 流程图编辑工具使用及开源地址
  • ATF(TF-A)/OPTEE之动态代码分析汇总
  • 10-11 周三 shell xargs tr curl 做大事情
  • 1.1 向量与线性组合
  • django: You may need to add ‘localhost‘ to ALLOWED_HOSTS
  • 网络安全(黑客技术)—自学手册
  • 【Vue】之Vuex的入门使用,取值,修改值,同异步请求处理---保姆级别教学
  • ubuntu20.04 nerf Instant-ngp (下) 复现,自建数据集,导出mesh
  • 【常见错误】SVN提交项目时,出现了这样的提示:“XXX“ is scheduled for addition, but is missing。
  • 深度学习基础知识 给模型的不同层 设置不同学习率