字符编码过滤器
1.在 web.xml 中配置 Filter
<!-- 字符编码过滤器 -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param> </filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
传参
- 把内容写到方法(HandlerMethod)参数中,SpringMVC 只要有这个内容,注入内容
- 基本数据类型参数
默认保证参数名称和请求中传递的参数名相同
@Controller
public class DemoController {
@RequestMapping("demo")
public String demo(String name,int age){
System.out.println("执行 demo"+" "+name+" "+age);
return "main.jsp";
}
}
如果请求参数名和方法参数名不对应,使用@RequestParam()赋值
@RequestMapping("demo")
public String demo(@RequestParam(value="name1") String name
,@RequestParam(value="age1")int age){
System.out.println("执行 demo"+" "+name+" "+age);
return "main.jsp";
}
如果方法参数是基本数据类型(不是封装类)可以通过@RequestParam 设置默认值
注:防止没有参数时 500
@RequestMapping("page")
public String page(@RequestParam(defaultValue="2") int pageSize,
@RequestParam(defaultValue="1") int pageNumber){
System.out.println(pageSize+" "+pageNumber);
return "main.jsp";
}
如果强制要求必须有某个参数
@RequestMapping("demo2")
public String demo2(@RequestParam(required=true) String name){
System.out.println("name 是 SQL 的查询条件,必须要传 递 name 参数"+name);
return "main.jsp";
}
- HandlerMethod 中参数是对象类型
请求参数名和对象中属性名对应(get/set 方法)
@RequestMapping("demo4")
public String demo4(People peo){
return "main.jsp";
}
复杂参数
- 请求参数中包含多个同名参数的获取方式
复选框传递的参数就是多个同名参数
@RequestMapping("demo5")
public String demo5(String name,int age
,@RequestParam("hover")List<String> abc){
System.out.println(name+" "+age+" "+abc);
return "main.jsp";
}
- 请求参数中对象.属性格式
①jsp 中代码
<input type="text" name="peo.name"/>
<input type="text" name="peo.age"/>
②新建一个类
对象名和参数中点前面名称对应,生成get和set方法,toString方法
public class Demo { private People peo;}
③控制器
@RequestMapping("demo6")
public String demo6(Demo demo){
System.out.println(demo); return "main.jsp";
}
- 在请求参数中传递集合对象类型参数
①jsp 中格式
<input type="text" name="peo[0].name"/>
<input type="text" name="peo[0].age"/>
<input type="text" name="peo[1].name"/>
<input type="text" name="peo[1].age"/>
②新建类
public class Demo {
private List<People> peo;
}
③控制器
@RequestMapping("demo6")
public String demo6(Demo demo){
System.out.println(demo);
return "main.jsp";
}
restful 传值方式
- 作用:简化 jsp 中参数编写格式
原本在index.jsp中进行如下写法
<a herf="demo7?id=123&name=abc">跳转</a>
- 在 jsp 中设定特定的格式
<a href="demo8/123/abc">跳转</a>
- 在控制器中
①在@RequestMapping 中一定要和请求格式对应
注:{名称} 中名称自定义名称
②新加注解@PathVariable 获取@RequestMapping 中内容,默认按照方法参数名称去寻找
@RequestMapping("demo8/{id1}/{name}")
public String demo8(@PathVariable String name,
@PathVariable("id1") int age){
System.out.println(name +" "+age);
return "/main.jsp";
}