SpringMVC url用tuckey UrlRewriteFilter重写
如何使用tuckey的UrlRewriteFilter重写SpringMVC中的url,如下所示:
从
http://localhost:8080/demo/api.do?method=getUser&uid=1001
至
http://localhost:8080/demo/api/user/1001
控制器片段:
@Controller @RequestMapping("/api.do") public class APIController { @RequestMapping(params = "method=getUser") public String methodName(HttpServletRequest request) { //CODE BLOCK } }
如果您正在使用maven,请添加依赖项
org.tuckey urlrewritefilter 4.0.3
在web.xml中启用filter
UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter UrlRewriteFilter /* REQUEST FORWARD
将以下规则添加到WEB-INF / urlrewrite.xml
^/demo/api.do?method=getUser&uid=(.*)$ /demo/api/user/$1
你真的需要使用URL重写文件管理器吗? 为什么不为两种类型的URL定义两种方法,并路由到单一方法来处理处理
@RequestMapping(value = "/demo/api.do?"....) public void method1(){ //... handler(); } @RequestMapping(value = "/demo/api/user/{user-id}"....) public void method1(){ //... handler(); } private void handler(){ //This method will have all the controller logic }
在SpringMVC中,您可以简单地完成
@Controller @RequestMapping("/api") public class APIController { @RequestMapping("/user") public ModelAndView methodName(HttpServletRequest request) { //CODE BLOCK // to redirect other view new ModelAndView("...your view page"); } @RequestMapping("/user/{user_id}") @ResponseBody public String methodName(HttpServletRequest request) { //CODE BLOCK } }
@ResponseBody
如果只发送对象值
你也可以发送user_id
作为参数
public String methodName(@RequestParam("user_id") String userid, Model model)
重要的是你为视图解析器添加了Bean
,这里是基于注释的示例
@Bean public UrlBasedViewResolver setupViewResolver() { UrlBasedViewResolver resolver = new UrlBasedViewResolver(); resolver.setPrefix("/WEB-INF/pages/"); resolver.setSuffix(".jsp"); // what you used resolver.setViewClass(JstlView.class); return resolver; }