14 个 SpringMVC顶级技巧,随时用随时爽( 四 )
同样 , Spring非常灵活 。 你可以Map 在处理程序方法中声明类型的参数。 Spring使用此映射存储模型的对象 。 让我们看另一个例子:
@RequestMapping(method = RequestMethod.GET)public String viewStats(Map model) {model.put("siteName", "CodeJava.net");model.put("pageviews", 320000);return "Stats";}
这比使用ModelAndView 对象还要简单。 根据你的喜好 , 可以使用Map 或 使用 ModelAndView 对象 。 在这里要感谢Spring的灵活性 。
9.处理程序方法中的重定向如果你希望在满足条件的情况下将用户重定向到另一个URL , 请redirect:/ 在URL之前追加 。 以下代码段给出了一个示例:
// 检查登录状态....if (!isLogin) {return new ModelAndView("redirect:/login");}// 返回用户列表
在上面的代码中 , /login 如果未登录 , 用户将被重定向到该 URL 。
10.处理表格提交和表格验证通过提供@ModelAttribute 用于将表单字段绑定到表单支持对象的注解以及BindingResult 用于验证表单字段的界面 , Spring使处理表单提交变得容易 。 下面的代码片段显示了一种典型的处理程序方法 , 该方法负责处理和验证表单数据:
@Controllerpublic class RegistrationController {@RequestMapping(value = "http://kandian.youth.cn/doRegister", method = RequestMethod.POST)public String doRegister(@ModelAttribute("userForm") User user, BindingResult bindingResult) {if (bindingResult.hasErrors()) {// 表单验证错误} else {// 表单输入没问题}// 注册过程……return "Success";}}
从Spring的官方文档中了解有关@ModelAttribute 注释和BindingResult 接口的更多信息:
- 在方法参数上使用@ModelAttribute
- 在方法上使用@ModelAttribute
- 接口绑定结果
以下代码段显示了从客户端上传文件有多么容易
@RequestMapping(value = "http://kandian.youth.cn/uploadFiles", method = RequestMethod.POST)public String handleFileUpload(@RequestParam CommonsMultipartFile[] fileUpload) throws Exception {for (CommonsMultipartFile aFile : fileUpload){// 存储上传的文件aFile.transferTo(new File(aFile.getOriginalFilename()));}return "Success";}
12.在控制器中自动装配业务类【14 个 SpringMVC顶级技巧,随时用随时爽】控制器应将业务逻辑的处理委托给相关的业务类 。 为此 , 您可以使用@Autowired 注解让Spring自动将业务类的实际实现注入控制器 。考虑以下控制器类的代码段:
@Controllerpublic class UserController {@Autowiredprivate UserDAO userDAO;public String listUser() {// 列出所有用户的处理方法userDAO.list();}public String saveUser(User user) {// 保存/更新用户的处理方法userDAO.save(user);}public String deleteUser(User user) {// 删除用户的处理方法userDAO.delete(user);}public String getUser(int userId) {// 获取用户的处理方法userDAO.get(userId);}}
在此 , 与用户管理有关的所有业务逻辑都由该UserDAO 接口的实现提供。 例如:interface UserDAO {List list();void save(User user);void checkLogin(User user);}
有关@Autowired 注解的更多信息 , 请参见 注释类型自动装配 。13.访问HttpServletRequest和HttpServletResponse在某些情况下 , 您需要直接 在处理程序方法中访问 HttpServletRequest 或 HttpServletResponse对象 。
- Python高级技巧:用一行代码减少一半内存占用
- S20屏幕分辨率更改技巧
- 系统小技巧:恢复Windows纯色极简登录
- 信也科技再攀科研高峰:复杂网络研究成果登上国际顶级期刊IEEE TKDE
- RX 6950?AMD还有顶级大招?
- 追求顶级性能体验,你怎能错过RTX 3090?
- 苹果手机相机除了拍照,还有6大办公技巧,可惜很多人不会用
- 出门儿在外不求人问路——手机导航的最重要技巧
- 10 个 VS Code 使用技巧
- 带你了解MySQL数据库小技巧