SpringMVC控制器Controller

本文详细介绍了SpringMVC中的控制器使用,包括注解@Controller和@RequestMapping的含义,参数绑定如@RequestParam和@ModelAttribute的应用,以及日期类型、数组和集合类型的绑定。同时,讲解了RestFul风格的URL处理和Controller方法的返回值处理,如ModelAndView、void、String及对象返回的情况。此外,还涉及了视图解析和转发、重定向、JSON响应等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringMVC

控制器Controller

  • 注解形式的Controller
    • @Controller声明一个类是控制器
    • @RequestMapping("")映射访问路径

入参绑定

  1. 简单类型
    当请求中的参数名和处理器中的形参名保持一致,这时会将请求参数和形参进行绑定。,表示从request请求中获取数据并绑定数据
    推荐使用包装类型,接受null值

    如果需要将不同名的参数进行绑定,可以使用如下注解
    @RequestParam(value=”请求中的参数名”)
    还有两个属性
    required:是否是必要的
    defaultValue:设置默认值,没有同名参数时,添加的默认值

@Controller
public class RequestParamController {
    @RequestMapping("/RP/t1")
    public String test1(@RequestParam(value = "name" ,defaultValue="Tom")String name, @RequestParam(value = "age",required)int age, Model model){
        String result = name + age;
        model.addAttribute("msg","name+age="+result);
        return "test";
    }
}
  1. 绑定pojo类型(bean)
    方法参数可以是pojo类型,在传递参数时要求请求中参数名和bean对象的属性名保持一致,这时可以自动映射。
    如果需要给传递回前端的对象修改名字,可以使用如下注解@ModelAttribute(“loginUser”) User user

  2. 绑定日期类型
    没有默认转换器,需要自定义转换类,并将转换器放入注解驱动中
    转换器接口
    Converter 重写convert()

  3. 数组和集合类型
    (1)数组
    简单类型 可以直接写成入参
    Javabean类型 不可以直接写成入参形式
    (2)集合
    简单类型
    Bean类型
    无论是简单类型还是bean类型,都不能直接定义成入参
    解决方式:
    将list定义在类中作为属性进行赋值

RestFul风格

访问形式:
http://localhost:9090/springmvc_01_controller_war_exploded//R/1/2

 @Controller
public class RestFulController {
    //@GetMapping("/t1")= @RequestMapping(value="/test1",method=RequestMethod.GET)
    //约束请求类型
    @RequestMapping("/R/{a}/{b}")
    //使用  @PathVariable 注解,让方法参数的值对应绑定到一个URI模板变量上。
    public String test1(@PathVariable int a, @PathVariable int b, Model model){
        int result = a + b;
        model.addAttribute("msg","a+b="+result);
        return "test";
    }
}

Controller方法返回值

  1. 返回ModelAndView
    默认使用mv对象返回,可以指定model数据模型和指定view
public class ControllerTest01 implements Controller {
   public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
       ModelAndView mv = new ModelAndView();
       mv.addObject("msg","返回ModelAndView");
       mv.setViewName("test");
       return mv;
  }
}
  1. 返回void(不需要视图解析器)
    特殊返回值类型,比如转发

    • 转发
      使用HttpServletRequestHttpServletResponse两个默认入参来实现转发
    • 重定向
      使用reponse对象实现
    • json
      直接写出到reponse的响应输出流中
    • 图片
      将图片写出到reponse的响应字节输出流中
  2. 返回String

    • 逻辑视图名,相当于执行转发操作
    • 转发(不需要视图解析器)
      在返回字符串前添加前缀:forward:
      此时,不会经过视图解析器进行跳转,直接转发,需要写上物理路径
    • 转发(需要视图解析器)
      直接return string
    • 重定向
      在跳转路径前添加前缀redirect:
      还有一种方式可以实现重定向:定义一个重定向视图RedirectView对象将其放入modelandview中返回
  3. 返回对象bean(json)
    默认情况下,springmvc无论返回什么类型,都会默认被当成逻辑视图名来处理。如果返回类型为bean,不知道view的视图名时,默认用当前controller的访问路径来作为逻辑视图名返回如果需要直接作为reponse中的数据返回,那么需要添加注解:@ResponseBody

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丶李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值