通常get方式参数传递,我们使用的是?后面接参数名和参数值,现在Restful可以简化参数格式。。。。
get方式:
<a href="Test?uid=111&uname=aaa">走你</a>
Restful:
<a href="Test/111/aaa">走你</a>
后台接收:
原先:
@RequestMapping("Test") public String Test(int uid,String uname){ System.ou,println(uid+" "+uname); return "test.html"; }
Restful(使用@PathVariable):
@RequestMapping("Test/{uid}/{uname}") public String Test(@PathVariable("uid") int id,@PathVariable String uname){
System.ou,println(id+" "+uname);
return "/test.html";
}
@RequestMapping中的格式必须和前端请求发送的数据格式一致,至于{}中的键名则自定义即可,@PathVariable是获取@RequestMapping中的内容,如果你在@PathVariable后面的()不指定键值,那么@PathVariable默认到@RequestMapping中找
补充:使用Restful风格进行传参的话,返回视图的路径必须加上“/”,如果在项目中大量使用Restful风格,那么可以在springmvc的配置文件中配置视图解析器,这样可以省略“/”。
<!-- 配置视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/" /> <property name="suffix" value=".html" /> </bean>
/*4、Restful风格参数*/ @RequestMapping("demo4/{qname}/{qpass}") public String demo4(@PathVariable("qname") String name,@PathVariable("qpass") int pass) { System.out.println("执行控制器中的demo4"); System.out.println(name+" "+pass); return "test"; }
想要解析html必须放行静态资源
<!-- 放行静态资源 --> <mvc:resources location="/" mapping="/index.html"></mvc:resources>