Loading

SpringMVC-成功通过param传递参数

继续学习SpringMVC,JSON和Param是两种常用的传值的方法,其中JSON是用的最为普遍的,而现在我们来学习一下另一种方法就是param

最终结果:

 由图可见我们成功访问到了所输的数值,换一个数字照样行得通

 简要实现:

package com.aurora.param;

import com.aurora.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@RequestMapping("param")
public class ParamController {

    //  直接接收
    //  /param/data?name=root&age=18
    //  形参列表,填写对应名称的参数即可,请求参数名 = 形参参数名即可
    // 1.名称相同,可以不传递,不报错
    @RequestMapping("data")
    @ResponseBody
    public String data(String name,int age){

        System.out.println("name = " + name + ", age = " + age);
        return "name = " + name + ", age = " + age;
    }
    //注解指定
    //指定任意的请求参数名,要求必须传递,要求不必须传递 给以一个默认值

    //    /param/data1?account=root&page=1
    //   account必须传递  page可以不必须传递  如果不传递默认值就是1

    /**
     * @RequestParam ->形参列表 指定请求参数名 或者是否必须传递 或者 非必须传递设置默认值
     * @RequestParam ( value= "account" 指定请求参数名 如果形参名和请求参数名可以省略 ,
     * required = false  前端是否必须传此参数,默认是必须,不传报400异常,
     * defaultValue = "1" 当非必须传递时设置默认值 )
     */
    @GetMapping("data1")
    @ResponseBody
    public String data1(@RequestParam(value = "account") String account,
                        @RequestParam(required = false,defaultValue = "1") int page){
        System.out.println("account = " + account + ", page = " + page);

        return "account = " + account + ", page = " + page;
    }
    //特殊值
    //一名多值 key=1&key=2 直接使用 集合接值即可
    // param/data2?hbs=吃&hbs=玩&hbs=学习
    // 不加注解 @RequestParam 将hbs对应的一个字符串直接赋值给集合 类型异常
    //  加了注解,经理就会将集合 add加入对应的 字符串
    @GetMapping("data2")
    @ResponseBody
    public String data2(@RequestParam List<String> hbs){
        System.out.println("hbs = " + hbs);
        return "ok";
    }
    //使用实体对象接值   用户注册 (用户信息)  ->  对应的实体类 -> 插入到数据库表
    // param/data3?name=二狗&age=18 -> 准备一个对应属性和get/set方法的实体类即可 -> 形参列表声明对象参数即可
    @RequestMapping("data3")
    @ResponseBody
    public String data3(User user){
        System.out.println("user = " + user);
        return user.toString();
    }
}
package com.aurora.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class SpringMVCInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{MvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{ "/" };
    }
}
package com.aurora.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

@Configuration
@ComponentScan("com.aurora.param")
public class MvcConfig {

    @Bean
    public RequestMappingHandlerMapping handlerMapping(){
        return new RequestMappingHandlerMapping();
    }
    @Bean
    public RequestMappingHandlerAdapter handlerAdapter(){
        return new RequestMappingHandlerAdapter();
    }
}

 

posted @ 2023-10-25 17:30  冰稀饭Aurora  阅读(69)  评论(0编辑  收藏  举报