通常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>