1.将请求参数映射到处理程序方法上
使用@RequestParam
注解将请求参数作为处理程序方法的常规参数进行检索。这是将控制器HttpServletRequest
与Servlet API 的接口分离的好方法。
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String doLogin(@RequestParam String username,
@RequestParam String password) {
}
Spring将方法参数用户名和密码绑定到具有相同名称的HTTP请求参数。这意味着您可以按以下方式调用URL(如果请求方法是GET):
http:// localhost:8080 / spring / login?username = scott&password = tiger
如果参数名称与变量名称不同,则可以如下指定参数的实际名称:
@RequestParam("SSN") int securityNumber
该@RequestParam
注解也有两个额外的属性,这可能是在某些情况下是有用的。该属性指定参数是否为必需。例如: required
@RequestParam(required = false) String country
这意味着该参数 country
是可选的;因此,它可能会从请求中丢失。在上面的示例中,country
如果请求中不存在此类参数,则变量 将为null。
另一个属性是 defaultValue
,可以在请求参数为空时用作后备值。例如:
@RequestParam(defaultValue = "18") int age
2.处理程序方法中的重定向
如果你希望在满足条件的情况下将用户重定向到另一个URL,请redirect:/
在URL之前追加。以下代码段给出了一个示例:
// 检查登录状态....
if (!isLogin) {
return new ModelAndView("redirect:/login");
}
// 返回用户列表
3.处理表格提交和表格验证
通过提供@ModelAttribute
用于将表单字段绑定到表单支持对象的注解以及BindingResult
用于验证表单字段的界面,Spring使处理表单提交变得容易。
@Controller
public class RegistrationController {
@RequestMapping(value = "/doRegister", method = RequestMethod.POST)
public String doRegister(
@ModelAttribute("userForm") User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
// 表单验证错误
} else {
// 表单输入没问题
}
// 注册过程……
return "Success";
}
}
4.处理文件上传
通过自动将上传数据绑定到CommonsMultipartFile
对象数组,Spring还使在处理程序方法中处理文件上传变得容易。Spring使用Apache Commons FileUpload作为基础的多部分解析器。
@RequestMapping(value = "/uploadFiles", method = RequestMethod.POST)
public String handleFileUpload(
@RequestParam CommonsMultipartFile[] fileUpload) throws Exception {
for (CommonsMultipartFile aFile : fileUpload){
// 存储上传的文件
aFile.transferTo(new File(aFile.getOriginalFilename()));
}
return "Success";
}