SpringMVC处理器方法的参数

package com.kkb.controller;

import com.kkb.VO.QueryVO;
import com.kkb.pojo.Team;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Controller
@RequestMapping("param")
public class ParamController {
    /*
    Day1026测试:处理器方法的参数-1
    直接使用方法的参数逐个接收
    知识点:
    1.在处理器方法中加入的参数要跟前端界面传回的名称相同,否则无法接受相应参数
    */
    @RequestMapping("add.do")
    public ModelAndView add(Integer teamId,String teamName,String teamLocation){
        System.out.println(teamId);
        System.out.println(teamName);
        System.out.println(teamLocation);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("ok");
        return modelAndView;

    }

    /*
    Day1026测试:处理器方法的参数-2
    使用对象接收参数
    知识点:
    1.前端界面传入的参数名称必须与对象的各个参数名称相同,否则无法接受相应参数
    */
    @RequestMapping("add02.do")
    public ModelAndView add02(Team team){
        System.out.println(team);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("ok");
        return modelAndView;

    }

    /*
    Day1026测试:处理器方法的参数-3
    请求参数和方法名称的参数不一致
    知识点:
    1.前端界面传入的参数名称必须与@RequestParam中的value值相同,否则无法接受相应参数,并且会报错400,如若配置required=false,
    将会在找不到对应参数是赋值为null,与前两种相似.required默认为true
    */
    @RequestMapping("add03.do")
    public ModelAndView add03(@RequestParam(value = "teamId",required = false) Integer teamId,
                              @RequestParam("teamName") String teamName,
                              @RequestParam("location") String teamLocation){
        System.out.println(teamId);
        System.out.println(teamName);
        System.out.println(teamLocation);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("ok");
        return modelAndView;

    }

    /*
    Day1026测试:处理器方法的参数-4
    使用HttpServletRequest 对象获取参数
    知识点:
    1.与JavaWeb使用HttpServletRequest方法相同
    */
    @RequestMapping("add04.do")
    public ModelAndView add04(HttpServletRequest request){
        System.out.println("add04--------");
        System.out.println(request.getParameter("teamId"));
        System.out.println(request.getParameter("teamName"));
        System.out.println(request.getParameter("location"));
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("ok");
        return modelAndView;

    }

    /*
    Day1026测试:处理器方法的参数-5
    直接使用URL地址传参,例如http://localhost:8088/param/123/testName/testLocation/add05.do
    知识点:
    1.@PathVariable中的value值必须与RequestMapping中的参数名称相同
    */
    @RequestMapping("{id}/{name}/{location}/add05.do")
    public ModelAndView add05(@PathVariable("id") Integer teamId,
                              @PathVariable("name") String teamName,
                              @PathVariable("location") String teamLocation){
        System.out.println("add05--------");
        System.out.println(teamId);
        System.out.println(teamName);
        System.out.println(teamLocation);
        return new ModelAndView("ok");

    }

    /*
   Day1026测试:处理器方法的参数-6
   获取日期类型的参数
   知识点:
   1.因为从前端获取到的值是字符串类型,无法转换成Date类型,需要在Team类中的createTime中加上注解@DateTimeFormat(pattern = "yyyy-MM-dd")
   */
    @RequestMapping("add06.do")
    public ModelAndView add06(Team team){
        System.out.println(team);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("ok");
        return modelAndView;

    }

    /*
  Day1026测试:处理器方法的参数-7
  获取数组类型的参数
  知识点:
  1.若需要从前端获取相同名称的数组,只用将数组类型的参数输入即可,与逐个接收参数的方式相似
  2.也可从HttpServletRequest中用getParameterValues()的方法来获取数组
  */
    @RequestMapping("add07.do")
    public ModelAndView add07(String[] teamName,HttpServletRequest request){
        //方式一:
        System.out.println("test1-------------");
        for (String s : teamName) {
            System.out.println(s);
        }
        //方式二:
        String[] teamNames = request.getParameterValues("teamName");
        System.out.println("test2-------------");
        for (String name : teamNames) {
            System.out.println(name);
        }
        /*ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("ok");*/
        return new ModelAndView("ok");

    }

    /*
   Day1026测试:处理器方法的参数-8
   获取集合类型的参数
   知识点:
   1.对于简单集合只需要添加注解@RequestParam即可完成对集合的接收
   */
    @RequestMapping("add08.do")
    public ModelAndView add08(@RequestParam("teamName") List<String> teamName){
        for (String s : teamName) {
            System.out.println(s);
        }
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("ok");
        return modelAndView;

    }

    /*
   Day1026测试:处理器方法的参数-9
   获取集合类型的参数2
   知识点:
   1.对于对象类型的参数,目前Spring还不支持直接接收,需要通过封装类的形式来间接完成参数的接收,以此通过对其属性的赋值来完成对象的建立
   */
    @RequestMapping("add09.do")
    public ModelAndView add09(QueryVO ov){
        List<Team> teamList = ov.getTeamList();
        for (Team team : teamList) {
            System.out.println(team);
        }
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("ok");
        return modelAndView;

    }

}

猜你喜欢

转载自blog.csdn.net/qq152521766/article/details/120985035