映射请求
@Controller
@RequestMapping("请求映射信息,可选")
public class Controller类 {
@RequestMapping("细节映射信息")
public ModelAndView 方法() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("key", value);
modelAndView.setViewName("请求转发目标位置");
return modelAndView;
}
}
Controller方法参数类型:
- HttpServletRequest
通过request对象获取请求信息 - HttpSession
通过Session获取对象 - Model或ModelMap
ModelMap是Model接口的实现类,将model数据填充到request域,向页面传递数据
Controller方法返回值类型:
- ModelAndView
定义ModelAndView类对象并返回,对象可添加model数据,指定view视图。 - String
可返回逻辑视图名、redirect重定向、forward请求转发
重定向 return "redirect:重定向url";
请求转发 return "forward:转发url"; - void
可以在形参列表中定义request与response并指定响应结果。
request.getRequestDispatcher("url").forward(request, response);
response.sendRedirect("url");
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json字符串");
参数绑定
从客户端请求key / value数据,经过参数绑定,将数据绑定至controller方法的形参。
默认支持类型:HttpServletRequest、HttpServletResponse、HttpSession、Model或ModelMap
简单类型绑定:支持整型、字符串、浮点数(单精度/双精度)、布尔型,当请求参数与处理器形参一致时,请求参数与处理器形参将进行绑定。
// 处理器方法:
public String editItem(Model model, Integer id) {}
// 请求url?id=ID值
或通过@RequestParam对简单类型参数进行绑定。
public String editItem(Model model, @RequestParam(value="id", defaultValue="默认值") Integer id) {}
简单POJO绑定:POJO对象属性与传入参数对应
public String editItem(Item item) {}
集合类型绑定:支持数组、List、Map
// 批量删除
public String delItems(Integer[] items) {}
跳转与传值
通过处理器方法的返回值实现跳转
// 无返回值,需要配合HttpServletResponse使用,否则404错误
public void handler() {}
// 返回String类型,请求转发
public String handler() {
return "forward:/跳转视图名";
}
// 返回String类型,重定向
public String handler() {
return "redirect:/跳转视图名";
}
// 返回ModelAndView类型,请求转发,可携带数据
public ModelAndView handler() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("attr", Object); // 相当于request.setAttribute("attr", Object);
modelAndView.setViewName("视图名");
return modelAndView;
}
处理Ajax请求
Ajax请求在服务器端不需要跳转,只需要返回数据,即将需要返回的数据作为处理器方法的返回值,使用@ResponseBody注解表示该方法返回数据而非跳转。对于复合对象或集合,在处理器方法中返回。
网友评论