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对象 。
推荐阅读
- 手机内存不足别乱删,学会这5个技巧,让手机释放大量空间
- 小米11操作小技巧:可开启全局120Hz
- 华为EMUI系统隐藏的12个技巧,难怪别人都说华为手机好用
- 小米11发布 首发高通骁龙888还有顶级屏幕售价3999起
- 最强做工配顶级散热!iGame RTX 3090 Vulcan OC评测
- 你真的会用iPhone吗?14个iOS实用技巧,你未必都知道
- 小米11烟紫色开箱图赏:首发骁龙888 最顶级2K手机屏
- 能背着走的顶级生产力!戴尔Precision 7750移动工作站评测
- 一张图看懂小米11 首发高通骁龙888配备行业顶级屏幕
- 小米11顶级屏——康宁新一代大猩猩玻璃Victus
