java技术--Controller接收参数的几种常用方式

1.在SpringMVC后台控制层获取参数的方式主要有两种

(1)一种是request.getParameter("name")
(2)另外一种是用注解@RequestParam直接获取
       <1>@RequestParam(value="collectorId") String collectorId
       <2>value可以省略:@RequestParam("collectorId") String collectorId

2.@PathVariable、@RequestParam 、@RequestBody的区别

(1)@PathVariable也可以获取参数
     <1>在url中已经预留了变量的占位符时,需要使用@PathVariable
     <2>是路径(path)上的变量(variable),例如:
         @RequestMapping(value="/springmvc/{param1}", method = RequestMethod.GET)
         public String getDetails (
         @PathVariable("param1") String param1) {...}
      <3>实现GET请求的url是:http://localhost:8080/springmvc/param1value
      <4>由于使用@PathVariable需要将参数带在URL后面,不安全,因此一般不用这种方式
(2)@RequestParam获取参数 
      <1>url中没有预留参数的占位符时,需要使用@RequestParam
      <2>是请求(Request)中的参数(Param),提交方式GET、POST
         @RequestMapping(value="/springmvc", method = RequestMethod.GET)
         public String getDetails (
         @RequestParam("param1", required=true) String param1,
         @RequestParam(value="param2", required=false) String param2){...}  
      <3>>实现GET请求的url是:http://localhost:8080/springmvc?param1=10&param2=20  
      <4>value可以省略,并且默认required=true也可以省略
(3)@RequestBody获取参数
      <1>在url中没有预留参数的占位符,且请求中包含结构体对象时,需要使用@RequestBody
      <2>是请求(Request)中的结构体对象(Body)
      <3>应用实例:User为对象
          @RequestMapping(value="/springmvc", method = RequestMethod.GET)
          public String getDetails (@RequestBody User user) {... }     
      <4>实现GET请求的url是:
           $scope.user = {
                          username: "foo",
                          auth: true,
                          password: "bar"};    
           $http.get('http://localhost:8080/springmvc', $scope.user)    

3.ModelAndView、Model、ModelMap的区别与使用

(1)Model 是一个接口
   <1>其实现类为ExtendedModelMap,继承了ModelMap类
   <2>public class ExtendedModelMap extends ModelMap implements Model
(2)ModelMap的声明格式:
   <1>public class ModelMap extends LinkedHashMap<String, Object>
   <2>ModelMap对象主要用于传递控制方法处理数据到结果页面
     2.1.也就是说把结果页面上需要的数据放到ModelMap对象中即可   
     2.2.作用类似于request对象的setAttribute方法的作用
     2.3.用来在一个请求过程中传递处理的数据
   <3>ModelMap或者Model通过addAttribute方法向页面传递参数
     3.1.在页面上可以通过el表达式语言$attributeName标签获取并展示modelmap中的数据    
     3.2.modelmap本身不能设置页面跳转的url地址别名或者物理跳转地址
     3.3.可以通过控制器方法的字符串返回值来设置跳转url地址别名或者物理跳转地址
(3)ModelAndView对象有两个作用: 
   <1>设置转向地址,这也是ModelAndView和ModelMap的主要区别
     1.1.设置方式如下所示:ModelAndView view = new ModelAndView("path:ok");
     1.2.或者通过setViewName方式:public void setViewName(String viewName){...}
   <2>将控制器方法中处理的结果数据传递到结果页面
     2.1.就是把在结果页面上需要的数据放到ModelAndView对象中即可
     2.2.作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据
(4)使用方式如下:
    <1>ModelMap的实例是spirng mvc框架自动创建并作为控制器方法参数传入,用户无需自己创建
    public String xxxxmethod(String someparam,ModelMap model){
     //省略方法处理逻辑若干
     //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型
      model.addAttribute("key",someparam);
         ......
     //返回跳转地址
      return "path:handleok";}
    <2>ModelAndView的实例是由用户手动创建的,这也是和ModelMap的一个区别
    public ModelAndView xxxxmethod(String someparam){
     //省略方法处理逻辑若干
      //构建ModelAndView实例,并设置跳转地址
      ModelAndView view = new ModelAndView("path:handleok");
      //将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型
      view.addObject("key",someparam);
    ......
     //返回ModelAndView对象view
      return view;}

4.使用Map、Model和ModelMap传递数据实例

(1)后台代码示例:
  @RequestMapping("/test")
  public String test(Map<String,Object> map,Model model,ModelMap modelMap){
    map.put("names", Arrays.asList("caoyc","zhh","cjx"));
    model.addAttribute("time", new Date());
    modelMap.addAttribute("city", "ChengDu");
    modelMap.put("gender", "male");
     return "hello";}
(2)前台通过el表达式接受数据
    model方式:time:${requestScope.time}
    map方式:names:${requestScope.names }
    modelMap方式:city:${requestScope.city }
    modelMap方式:gender:${requestScope.gender } 

5.总结

(1)@PathVariable、@RequestParam 、@RequestBody用来获取前台传过来的参数
(2)ModelAndView、Model、ModelMap用来返回提示信息给前台界面
   <1>例如:操作成功后,返回提示信息:界面显示操作成功!
   <2>使用较多的是Model、ModelMap
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中提到了使用Java模块化系统构建MVC应用程序的例子。MVC是一种常见的软件架构模式,用于将应用程序分成三个部分:模型(Model)、视图(View)和控制器(Controller)。 引用中提到了在SpringMVC后台控制层获取参数的两种方式。一种是使用request.getParameter("name")来获取参数,另一种是使用@RequestParam注解来直接获取参数。例如,@RequestParam(value="collectorId") String collectorId可以用来获取名为collectorId的参数。 引用中总结了一些常用的注解和返回提示信息的方式。@PathVariable、@RequestParam、@RequestBody用来获取前台传过来的参数,而ModelAndView、Model、ModelMap用来返回提示信息给前台界面。 综上所述,Java中的Controller是指MVC架构中的控制器部分,负责接收用户请求并处理相关逻辑。在SpringMVC中,可以使用@RequestParam注解或request.getParameter方法来获取前台传过来的参数,同时可以使用ModelAndView、Model、ModelMap来返回提示信息给前台界面。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用Java模块化系统构建MVC应用程序.txt](https://download.csdn.net/download/weixin_44609920/88226704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [java技术--Controller接收参数几种常用方式](https://blog.csdn.net/qq591009234/article/details/103564955)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值