springMVC中controller的传参的几种方法


首先我们要有一个名为test1的jsp文件

使用原生的Servlet API 作为Controller 方法的参数

@Controller
@RequestMapping("test")//一般在最开始加上这句话,若加上,在访问某个页面时则需要在url上加上test/某个页面;若不加,在访问某个页面时直接访问就行;
public class TestControl{
@RequestMapping("index")
    public String index(HttpServletRequest request){
        String account = request.getParameter("account");
        request.setAttribute("msg","笨蛋");
        return "test1";
    }
}

使用model传值向前台传值

注意只写model是无法取出前台的参数的
利用model的addAttribute()方法即可将服务器的值传递到jsp页面中

@Controller
@RequestMapping("test")
public class TestControl{
@RequestMapping("index1")
    public String index1(Model model){
        model.addAttribute("msg","ZHAO");
        return "test1";
    }
}

使用@RequestParam 绑定请求参数参数值

@RequestMapping("index2")
public String index2(Model model, @RequestParam(value = "account") String account,@RequestParam(value = "pwd",required = false) String pwd){//参数这么写,后面的String名称不要求和前台form表单里的name相同
        //加上required = false,那么参数可以不传值,若不写,就必须传值否则就会报错
    System.out.println(account);
    System.out.println(pwd);
    model.addAttribute("account",account);
    model.addAttribute("pwd",pwd);
    return "test1";
}

直接将请求参数名作为Controller中方法的形参

@RequestMapping("index3")
public String index3(Model model,String account,String pwd){//参数这么写,要求参数名字和前台form表单里的name值是一样的
    System.out.println(account);
    System.out.println(pwd);
    model.addAttribute("account",account);
    model.addAttribute("pwd",pwd);
    return "test1";
}

利用类和model绑定请求参数参数值

在这里我们需要创建一个LoginModel类
如下:
注意类里的get,set方法一定要写,要不然后台无法拿到数据,后台也无法将数据返回到前台

public class LoginModel {
    private String account;
    private String pwd;

    @Override
    public String toString() {
        return "LoginModel{" +
                "account='" + account + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getAccount() {
        return account;
    }

    public String getPwd() {
        return pwd;
    }
}

接下来就可以正式传参了

@RequestMapping("index4")
public String index4(Model model, LoginModel loginModel){//类的属性名字要和form表单里的name一样才能绑定数据
    System.out.println(loginModel.getAccount());
    System.out.println(loginModel.getPwd());
    model.addAttribute("account",loginModel.getAccount());
    model.addAttribute("pwd",loginModel.getPwd());
    return "test1";
}

使用Pojo对象(就是封装的类,类中封装的字段作为参数)绑定请求参数值,原理是利用Set的页面反射机制找到LoginModel对象中的属性

这里我们使用上一个方法的LoginModel类

@ResponseBody//不加它就是实现的页面跳转,加上它就是返回数据
@RequestMapping("index5")
public LoginModel index5(LoginModel loginModel){//类的属性名字要和form表单里的name一样才能绑定数据
    System.out.println(loginModel.getAccount());
    System.out.println(loginModel.getPwd());
    return loginModel;//返回的是json字符串,注意要写类里的toString()方法,这样才能成功返回json字符串
}
发布了8 篇原创文章 · 获赞 0 · 访问量 80

猜你喜欢

转载自blog.csdn.net/qq_43677686/article/details/104046096
今日推荐