以下是问题的简单解释:
我有一个控制器 RedirectController,所以我想处理http://mydomain/之类的所有内容**
但是,我仍然需要将http://mydomain/重定向到索引控制器(或 index.jspx 任何东西),并且很可能我需要在将来排除 /help /about URL。
目前的方法是我没有改变Spring Roo生成的urlrewrite.xml。这里是。代码:
<urlrewrite default-match-type="wildcard">
<rule>
<from>/resources/**</from>
<to last="true">/resources/$1</to>
</rule>
<rule>
<from>/static/WEB-INF/**</from>
<set type="status">403</set>
<to last="true">/static/WEB-INF/$1</to>
</rule>
<rule>
<from>/static/**</from>
<to last="true">/$1</to>
</rule>
<rule>
<from>/</from>
<to last="true">/app/index</to>
</rule>
<rule>
<from>/app/**</from>
<to last="true">/app/$1</to>
</rule>
<rule>
<from>/**</from>
<to>/app/$1</to>
</rule>
<outbound-rule>
<from>/app/**</from>
<to>/$1</to>
</outbound-rule>
</urlrewrite>
然后我在我的 RedirectController 中使用了映射注释。
@RequestMapping("/**")
@Controller
public class RedirectController {
....
@RequestMapping(method = RequestMethod.GET, value = "/{value}")
public String get(@PathVariable String value, ModelMap modelMap, HttpServletRequest request, HttpServletResponse response) {
...
这样当请求http://mydomain/xxx时,这个 get() 方法将使用 xxx 值。但是,当我使用这样的方案时,在http://mydomain/请求上,索引作为 {value} 传递(例如 xxx)。(这是我不想要的。)
根据上面 xml 文件中的映射规则,任何 /** 请求都会被重定向到 web.xml 文件中的 DispatcherServlet,以便基于注解的映射处理程序查看 RedirectController 的注解并简单地包含我们要排除的所有 URL...
有什么想法可以解决这个问题吗?