0.前言
上面几篇中我们已经在把springMVC项目搭建完毕了,但是平常使用过程中还会遇到这样的情况。比如我们的参数可能会比较复杂,像下面这样:
1 |
https://baike.baidu.com/tashuo/browse/content?id=3442
|
或者说我们做登录验证的时候也要通过这种方式传递参数交个后台验证。
1.视图层向控制器传单个参数
通过@RequestParam 注解,我们的Controller改成下面的样子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package com.cat.controller;
import com.cat.domain.Person;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping(produces="text/html;charset=UTF-8")
public class IndexController {
//传递参数
@RequestMapping(value = "/hello3" )
public String hello3(@RequestParam String username ){
System.out.println("前台传递的参数是:" + username);
return "hello";
}
}
|
我们通过浏览器访问以下网址就能在控制台看到信息了
http://localhost:8080/hello3?username=张三
当然,这样做还是有一定的问题,比如,我们请求
http://localhost:8080/hello3
会直接报错,原因就是username在请求过程中是必填项,不填就会报错。
那么我们修改几个参数
@RequestMapping(value = "/hello3" )
public String hello3(@RequestParam(value = "username", required = false) String username ){
System.out.println("前台传递的参数是:" + username);
return "hello";
}
required表示这个参数是不是必填项,false表示不是必填,这样的话我们省略username时就不会报错了。
2.视图层向控制器传对象
除了可以传递单个参数外,还可以传递一个对象,比如我们上一节中的Person,这样做的好处就是比如我们操作数据库更新的时候,把整个对象传过来,数据库可以一下更新很多数据。
http://localhost:8080/hello4?name=王敏&sex=女&age=18