期望的结果是 /xxx.do?service=login 登录, /xxx.do?service=register 注册, 就是前半截都是一致的 后半截不同 根据传参不通进入不同的控制器 请问这样能实现吗 能的话如何实现
期望的结果是 /xxx.do?service=login 登录, /xxx.do?service=register 注册, 就是前半截都是一致的 后半截不同 根据传参不通进入不同的控制器 请问这样能实现吗 能的话如何实现
|
shoalyOct 24, 2016
1
这个 url 好丑.... 为什么不直接是
/login /register 因为前面既然都完全一样了... 就可以省去 |
|
murmurOct 24, 2016
3
/xxx/login
/xxx/register 写在 2 个方法上 注解就好了 |
|
ipeonyOct 24, 2016
4
比较笨的方法。。用 @pathvariable
|
|
5
@Controller
@RequestMapping("/XXX") ...class ...{ @RequestMapping(params="service=register") ...fun(){ } } |
|
7
这个方法 只能作用于一个控制器里面 , 控制器的映射名不能重复 ,所以想另寻解决方案
|
|
hellommdOct 24, 2016
8
简单点就是一个接口一个类,模块化,入口处根据接口名称利用 IoC 进行注入。
|
|
varrilyOct 24, 2016
9
.do?method=xxx 这用法是 Struts 的用法, SpringMVC 更倾向于 RESTful 设计风格,至于截图的 api ,也有类似的 JSON-RPC
|
|
zhouzmOct 24, 2016
10
SpringMVC 默认的 URL 映射不支持通过 param 定位到不同的 controller ,只能先用 URL 定位 controller ,然后再用 param 窄化到具体的方法。
如果仅仅是为了调用者使用的话,编程的时候依然用 /login /register 写不同 controller ,然后用拦截器 Redirect url : /xxx.do?service=login => /login /xxx.do?service=register => /register 参考: http://docs.spring.io/spring/docs/3.2.17.RELEASE/spring-framework-reference/html/mvc.html#mvc-handlermapping-interceptor |
|
novaeyeOct 24, 2016
11
urlrewrite 可以用来解决这个需求吧
请看这里: http://stackoverflow.com/questions/27392785/springmvc-url-rewrite-with-tuckey-urlrewritefilter |
|
sherlocktheplantOct 24, 2016
13
|
|
rails3Oct 24, 2016
15
nginx
|
|
16
@sherlocktheplant @novaeye 请教一下 urlrewrite 怎么匹配 问号后面的参数 , 试了半天- -
|
|
17
<urlrewrite use-query-string ="true">
<rule> <from>/gateway.sv\?service=(\w+)$</from> <to>/$1.do</to> </rule> </urlrewrite> 这样写 多一个参数都进不去.. |
|
hcymk2Oct 24, 2016
19
|
|
novaeyeOct 24, 2016
21
试试这样写:
<urlrewrite use-query-string ="true"> <rule> <from>^/gateway.sv\?service=(.+?)&method=(.+?)&(.*)</from> <to>/$1/$2.do?$3</to> </rule> </urlrewrite> from: /gateway.sv?service=account&method=getUser&ooo=xxx&aaa=bbb to: /account/getUser.do?ooo=xxx&aaa=bbb |