美文网首页
6. 处理器

6. 处理器

作者: 月影追猎者 | 来源:发表于2019-10-25 16:55 被阅读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注解表示该方法返回数据而非跳转。对于复合对象或集合,在处理器方法中返回。

    相关文章

      网友评论

          本文标题:6. 处理器

          本文链接:https://www.haomeiwen.com/subject/cbvsvctx.html