spring - springmvc - 传递参数

时间:2019-10-19
本文章向大家介绍spring - springmvc - 传递参数,主要包括spring - springmvc - 传递参数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

https://www.cnblogs.com/clamp7724/p/11693572.html

在这个例子的基础上修改

1.前台向后台传参

1.1:超链接传递参数

在index.jsp页面添加超链接

<a href="hello/helloparams?name='yzha'&password='123456'">Hello params</a> 
<!--
据说有的浏览器hello/helloparams不行,谷歌是可以的,别的不知道...-->

修改controller ---  HelloWorldController

package hello_word;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.lang.annotation.Annotation;

@Controller   //注解表示这是一个controller
//@RequestMapping(path = "/hello")   这里也可以加RequestMapping注解,如果加在类上则表示一级路径,那样跳转路径就变成了hello/helloworld,
@RequestMapping(path = "/hello")
//RequestMapping中有
// path:路径,在注释在类上方表示1级路径,在方法上方表示二级路径
// value:(和path作用一样),
// method:method的参数是一个enum类对象(枚举),使用时用类名RequestMethod + .属性,可以规定接受请求的种类: GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;
// params: 用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样。
// 例如: params = {"accountName"},表示请求参数必须有accountName params = {"moeny!100"},表示请求参数中money不能是100。
//也就是请求地址必须传参: /helloworld?accountName = 'aaa'
//headers:一个字符串数组,表示包含的请求头,比如GET,HOST,connection,Accept这一类的,前台给后台发的请求
public class HelloWorldController {
    @RequestMapping(path = "/helloworld")   //说明地址以/helloworld结尾的请求,由这个方法处理
    public String helloWorldPath(){

        System.out.println("hello world");
        return "success";  //表示跳转的页面为 success.jsp
    }

    @RequestMapping(path = "/helloparams", params = {"name","password"}) //表示有两个参数
    public String helloParams(String name, String password){

        System.out.println("name = " + name);
        System.out.println("password = " + password);
        return "success";  //表示跳转的页面为 success.jsp
    }
}

其实主要就是添加了新的controller方法来处理index.jsp新加的的请求

    @RequestMapping(path = "/helloparams", params = {"name","password"}) //表示有两个参数
    public String helloParams(String name, String password){//springmvc 中使用方法参数的方式接收参数,可以接受基本类型,string,甚至是对象(javaBean)
        System.out.println("name = " + name);
        System.out.println("password = " + password);
        return "success";  //表示跳转的页面为 success.jsp
    }

点下面的链接,后台输出了前台传递过来的信息(为了清楚可以在启动服务后先clean一下后台的output)

2. form表单传递对象参数  (工作中一般是用这个)

为了正式点先修改一下左边的列表,在hello_world文件夹下建2个package,一个叫controller存放各种controller,一个叫domain,用来存放存放数据的class类

把之前的HelloWorldController放到Controller  package中,在domain package里创建新的class,起名Account,用来接收前台传递过来的对象(两个属性name,password要和前台表单中name一致,添加对应的get,set方法)

这里我重写了toString方法,用来显示结果。 toString是java中object类自带的方法,System.out.print(object对象)的时候,默认调用的就是这个方法。

Account类的代码:

package hello_word.domain;

public class Account {
    String name;
    String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "Account{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

修改controller ---  HelloWorldController

添加一个新的方法处理这个form请求。

    @RequestMapping(path = "/helloobject")
    public String helloParams(Account account){//表示有一个Account对象作为参数,因为两个类不在同一个package里需要import这个class
        System.out.println(account);//因为重写了Account的toString方法,这里可以直接用print显示内容
        return "success";  //表示跳转的页面为 success.jsp
    }

原文地址:https://www.cnblogs.com/clamp7724/p/11703406.html