![](/img/trans.png)
[英]How can I convert this Apache Rewrite rule into a Tuckey UrlRewriteFilter Rule?
[英]SpringMVC url rewrite with 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,请添加依赖项
<dependency>
<groupId>org.tuckey</groupId>
<artifactId>urlrewritefilter</artifactId>
<version>4.0.3</version>
</dependency>
在web.xml中启用过滤器
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
将以下规则添加到WEB-INF / urlrewrite.xml
<urlrewrite>
<rule>
<from>^/demo/api.do?method=getUser&uid=(.*)$</from>
<to>/demo/api/user/$1</to>
</rule>
</urlrewrite>
您是否真的需要使用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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.