14 个 SpringMVC顶级技巧,随时用随时爽( 三 )

Spring将方法参数用户名和密码绑定到具有相同名称的HTTP请求参数 。 这意味着您可以按以下方式调用URL(如果请求方法是GET):
http:// localhost:8080 / spring / login?username = scott&password = tiger类型转换也是自动完成的 。 例如 , 如果您声明integer 如下类型的参数 :
@RequestParam int securityNumber然后 , Spring将在处理程序方法中自动将请求参数(字符串)的值转换为指定的类型(整数) 。
如果参数名称与变量名称不同 , 则可以如下指定参数的实际名称:
@RequestParam("SSN") int securityNumber该@RequestParam 注解也有两个额外的属性 , 这可能是在某些情况下是有用的 。 该属性指定参数是否为必需 。 例如:required
@RequestParam(required = false) String country这意味着该参数 country 是可选的;因此 , 它可能会从请求中丢失 。 在上面的示例中 , country 如果请求中不存在此类参数 , 则变量 将为null 。
另一个属性是 defaultValue , 可以在请求参数为空时用作后备值 。 例如:
@RequestParam(defaultValue = "http://kandian.youth.cn/index/18") int ageMap 如果方法参数是type , Spring还允许我们将所有参数作为对象 访问 Map 。 例如:
doLogin(@RequestParam Map params)然后 , 映射参数包含键-值对形式的所有请求参数 。 有关使用@RequestParam 注释的更多信息 , 请参见 @RequestParam注解 。
7.返回模型和视图处理完业务逻辑后 , 处理程序方法应返回一个视图 , 然后由Spring的调度程序servlet对其进行解析 。 Spring允许我们ModelAndView 从handler 方法中返回String或 对象。
在以下示例中 , 该 handler 方法返回一个String并表示一个名为的视图 LoginForm:
@RequestMapping(value = "http://kandian.youth.cn/login", method = RequestMethod.GET)public String viewLogin() {return "LoginForm";}这是返回视图名称的最简单方法 。 但是 , 如果要将其他数据发送到视图 , 则必须返回一个 ModelAndView 对象 。 考虑以下处理程序方法:
@RequestMapping("/listUsers")public ModelAndView listUsers() {List listUser = new ArrayList<>();// 从DAO获取用户列表…ModelAndView modelView = new ModelAndView("UserList");modelView.addObject("listUser", listUser);return modelView;}如您所见 , 此处理程序方法返回一个 ModelAndView 保存视图名称 UserList 的User 对象和一个可在视图中使用的对象集合。 Spring 面试 7 大问题 , 推荐看下 。
Spring也非常灵活 , 因为您可以将ModelAndView 对象声明 为处理程序方法的参数 , 而不用创建一个新的对象 。 因此 , 以上示例可以重写如下:
@RequestMapping("/listUsers")public ModelAndView listUsers(ModelAndView modelView) {List listUser = new ArrayList<>();//从DAO获取用户列表…modelView.setViewName("UserList");modelView.addObject("listUser", listUser);return modelView;}了解有关该类的更多信息 , 请参见:ModelAndView class 。
8.将对象放入模型在遵循MVC架构的应用程序中 , 控制器(C)应该将数据传递到模型(M)中 , 然后在视图(V)中使用该模型 。 正如我们在前面的示例中看到的那样 ,该类的addObject() 方法 ModelAndView是以名称-值对的形式将对象放入模型中:
modelView.addObject("listUser", listUser);modelView.addObject("siteName", new String("CodeJava.net"));modelView.addObject("users", 1200000);


推荐阅读