SpringMVC参数传递(包含字符编码过滤器设置)

web.xml


	
		encoding
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			utf-8
		
	
	
		encoding
		/*
	

传参

把内容写到方法(HandlerMethod)参数中,SpringMVC只要有这个内容,就会注入内容。
基本数据类型
controller

@RequestMapping("demo")
	public String demo(String name, int age) {
		System.out.println("执行demo" + name() +age());	
		return "main.jsp";
	}

jsp

name age

@RequestParam

设置别名
controller类中的方法中的属性名要与前端页面属性的name名称相同。当不匹配时(例如前端的name名分别叫name1和age1),可以用以下方法。

public String demo(@RequestParam(value="name1") String name,@RequestParam("age1")int age) {
//value为默认值,可以不写

设置默认值(例如我们分页显示的时候)
方法参数为基本数据类型(不是封装类)

@RequestMapping("page")
	public String page(@RequestParam(defaultValue="1")int pageNum, @RequestParam(defaultValue="2")int pageSize) {
		return "main.jsp";
	}

设置必须强制传参数,否则400

@RequestMapping("demo3")
	public String demo3(@RequestParam(required=true)String name) {		
		return "main.jsp";
	}

HandlerMethod中参数时对象类型

请求参数名与对象中的属性名对应(调用set、get方法)
@RequestMapping(“demo”)
public String demo(People peo, HttpServletRequest req) {
System.out.println(“执行demo” + peo.getName() + peo.getAge());
req.setAttribute(“test”, “ceshi”);
return “main.jsp”;
}

请求参数中包含多个同名参数的获取方式

例如复选框就是多个同名参数

  @RequestMapping("demo4")
    	public String demo4(String name, int age, @RequestParam(value="hobby")List hobby123) {
    		System.out.println(name + "  " + age + "  " + hobby123);
    		return "main.jsp";
    		
    	}
name age 看书 LOL DNF

输出

123  123  [看书, LOL, DNF]

接收带点的参数

带点的参数表示某个对象的属性。点前面的名字要与类的对象名一致,点后面的名字要与对象名的属性名一致
jsp

peo.name peo.age

controller

@RequestMapping("demo5")
	public String demo5(Demo demo) {
		System.out.println(demo);
		return "main.jsp";
		
	}

Demo类(含有一个People类型的对象peo)

public class Demo {
	private People peo;

同样也可以传递集合类型参数

peo.name peo.age peo.name peo.age

Demo类

public class Demo {
	private List peo;

controller

@RequestMapping("demo5")
	public String demo5(Demo demo) {
		System.out.println(demo.toString());
		return "main.jsp";		
	}

输出

Demo [peo=[People [age=2, name=1], People [age=4, name=3]]]

restful传值方式

正常方式

跳转1

restful方式

跳转2

controller

@RequestMapping("demo7/{para1}/{para2}")//这里大括号里的内容可以随便写
	public String demo7(@PathVariable int para1, @PathVariable("para2") String para) {//这里的参数要与上面大括号里的相同,若不同的话需要多一步操作(例如第二个参数)。
		System.out.println(para1 + para);
		return "/main.jsp";		
	}

但是这里@RequestMapping(“demo7/{para1}/{para2}”)更改了文件路径,在return的时候要用绝对路径,要不会出错。

你可能感兴趣的:(SpringMVC)