一·重定向和转发:
添加视图解析器,return的字符串,经过解析,跳转视图默认是转发。
@RequestMapping("/h1")
public String test(Model model){
model.addAttribute("msg","h1");
//默认是转发
return "hello";
}
实现重定向:
在字符串前面加上redirect即可:
@RequestMapping("/h2")
public String test2(Model model){
model.addAttribute("msg","h2");
//重定向
//不加/ 表示当前类的映射路径下的h1,相当于/c3/h1
return "redirect:h1";
}
等价于:
此类的地址映射是/c3
@RequestMapping("/h3")
public String test3(Model model){
model.addAttribute("msg","h3");
//重定向
return "redirect:/c3/h1";
}
二· 接受前端参数
//形式参数的名称与前端传递的参数名称相同,可以不写@RequestParam,但是建议写上,表示这是由前端传来的数据,且如果没有接受到参数会报错
@RequestMapping("/h1")
public String test(@RequestParam("name") String name){
System.out.println("从前端接收到的数据为"+name);
return "hello";
}
名称不相同:
@RequestMapping("/h2")
//前端的参数名称必须为username
public String test2(@RequestParam("username") String name){
System.out.println("从前端接收到的数据为"+name);
return "hello";
}
建议不管名称想不想同,都应该写上@RequestParam("username")这种注解,注明这个参数是从前端接受来的!
前端传递对象,如:/h3?name=hzk&age=19,只有名称与后段接受对象的属性名称相同,才会被取到!否则,后端未取到的字段为null值!
@RequestMapping("/h3")
//前端传递对象,必须前端传递的字段与对象中的属性名一一对应。
public String test3(User user){
System.out.println("从前端接收到的数据为"+user);
return "hello";
}
三·乱码问题解决
spring也已经为我们写好了一个过滤器,直接在web.xml中配置即可:
注意要初始化参数!
<!-- 处理乱码-->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>