各种传参形式

一、QueryString

前端请求:http://localhost:8080/test/user/find?id=26&name=zhangsan

后端接收:

1.参数接收:

@RequestMapping("/find")
public void find(String id,String name){
 ...
}


2.对象接收:

@RequestMapping("/find")
public void find(User user){
 ...
}

自定义对象:

@Data
public class User{
  private String id;
  private String name;
}

二、路径传参

前端请求:http://localhost:8080/test/user/find/26/zhangsan

后端接收:

@RequestMapping("/find/{id}/{name}")
public void find(@PathVariable("id")String id,@PathVariable("name")String name){
 ...
}

三、form表单传递参数

前端form表单提交字符串请求:

<form action="http://localhost:8080/test/user/find">

	username:<input type="text" name="id" /><br>
	
	password:<input type="text" name="name" /> <br>
	
	<input type="submit" value=">

</form>

后端接收:

1.参数接收

@RequestMapping("/find")
public void find(String id,String name){
 ...
}

2.对象接收:

@RequestMapping("/find")
public void find(User user){
 ...
}


2、form表单提交文件请求:

<form action="http://localhost:8080/test/user/find" method= "post" enctype = "multipart/form-data">

    头像:<input type="file" name="photo" /><br>
    
    <input type="submit" value=">

</form>


接口:

@RequestMapping("/find",method = RequestMethod.POST)
public void find(MultipartFile photo){
 ...
}

四、ajax传递json字符串

ajax传递json字符串:

$.ajax({
        // 请求方式
        type:"post",
        // contentType 
        contentType:"application/json",
        // dataType
        dataType:"json",
        // url
        url:"http://localhost:8080/test/user/find",
        // 把JS的对象或数组序列化一个json 字符串
        data:{'id':1,'name':张三,'age':26,...},
        // result 为请求的返回结果对象
        success:function (result) {
            if (200 == result.code){
                alert("成功");
            }else{
                alert("失败");
            }
        }
    });


接口:

@RequestMapping("/find",method = RequestMethod.POST)
public void find(@RequestBody User user){
 ...
}

@Data
public class User{
  private int id;
  private String name;
  private int age;
}

@RequestBody:将请求中json字符串自动转化为java中的对象。

@ResponseBody: 将控制器方法返回值转为json格式字符串,并相应请求。

### Matlab 中自定义函数的参数传递方式 在Matlab中,自定义函数可以通过多种方式进行参数传递。主要的方式包括直接传值、通过函数句柄传递以及利用全局变量等方式。 #### 直接传值 当一个函数被调用时,实际参数会被复制并作为形参传递给该函数[^3]。这意味着即使函数内部修改了这些参数,在调用者环境中对应的原始数据不会受到影响。这种方式确保了程序的安全性和稳定性,避免不必要的副作用。 例如: ```matlab function result = addNumbers(a, b) a = a + 1; % 修改a的值只会影响本地副本 result = a + b; end ``` 在这个例子中,`addNumbers` 函数接收两个数值类型的参数 `a` 和 `b` 并返回它们相加的结果。如果尝试改变其中一个输入参数(如上面的例子),这种变化仅限于当前作用域内,并不影响外部环境下的同名变量。 对于更复杂的数据结构,像矩阵或数组这样的对象也是按照相同的原则处理;即整个对象会创建一个新的实例供函数内部操作使用。 #### 利用函数句柄传递回调功能 除了基本的数据类型外,还可以将其他函数作为一个整体打包成函数句柄来传递给另一个函数执行特定的任务。这允许更高层次上的抽象编程模式,使得代码更加灵活多变[^4]。 考虑这样一个场景:有一个通用优化算法需要根据不同情况调整目标函数的形式,则可以设计如下接口形式: ```matlab % 定义一个接受函数句柄和其他必要配置项的目标求解器 function optimalPoint = findOptimal(funHandle, initialGuess) for iter = 1:maxIterations currentVal = funHandle(currentX); ... end ... end ``` 这里的关键在于 `findOptimal` 接收了一个名为 `funHandle` 的函数句柄作为其第一个参数,这样就可以动态决定每次迭代过程中应该应用哪一个具体的实现版本来进行评估计算。 #### 对数组元素逐个处理的方法 针对提问提到的具体案例,关于如何在一个函数体内遍历访问输入向量/矩阵中的各个成员,通常有两种常见做法: - **隐式矢量化运算**:尽可能采用内置支持批量处理的操作符和方法完成任务,因为这类方案往往具有更高的效率。 ```matlab function y = processVector(v) threshold = pi / 2; mask = v > threshold; v(mask) = sin(v(mask)); y = sum(v .* exp(-v.^2)); % 这里假设最终目的是得到某种聚合统计特征 end ``` - **显示循环控制语句**:当确实有必要逐一考察每一个位置的情况时,则可借助传统的 `for` 或 `while` 循环语法构建逻辑流程。 ```matlab function processedData = applyFunctionToArray(z) nElements = length(z); for idx = 1:nElements if z(idx) >= someConditionValue z(idx) = customOperation(z(idx)); end end processedData = z; end ``` 上述两种策略各有优劣之处,具体选用哪一种取决于应用场景的需求特点和个人偏好等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值