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
设置别名
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";
}
请求参数名与对象中的属性名对应(调用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";
}
输出
123 123 [看书, LOL, DNF]
带点的参数表示某个对象的属性。点前面的名字要与类的对象名一致,点后面的名字要与对象名的属性名一致
jsp
controller
@RequestMapping("demo5")
public String demo5(Demo demo) {
System.out.println(demo);
return "main.jsp";
}
Demo类(含有一个People类型的对象peo)
public class Demo {
private People peo;
同样也可以传递集合类型参数
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]]]
正常方式
跳转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的时候要用绝对路径,要不会出错。