6. 处理器

2019-10-25  本文已影响0人  月影追猎者

映射请求

@Controller
@RequestMapping("请求映射信息,可选")
public class Controller类 {
    @RequestMapping("细节映射信息")
    public ModelAndView 方法() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("key", value);
        modelAndView.setViewName("请求转发目标位置");
        return modelAndView;
    }
}

Controller方法参数类型:

  1. HttpServletRequest
    通过request对象获取请求信息
  2. HttpSession
    通过Session获取对象
  3. Model或ModelMap
    ModelMap是Model接口的实现类,将model数据填充到request域,向页面传递数据

Controller方法返回值类型:

  1. ModelAndView
    定义ModelAndView类对象并返回,对象可添加model数据,指定view视图。
  2. String
    可返回逻辑视图名、redirect重定向、forward请求转发
    重定向 return "redirect:重定向url";
    请求转发 return "forward:转发url";
  3. 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注解表示该方法返回数据而非跳转。对于复合对象或集合,在处理器方法中返回。

上一篇 下一篇

猜你喜欢

热点阅读