期望的结果是 /xxx.do?service=login 登录, /xxx.do?service=register 注册, 就是前半截都是一致的 后半截不同 根据传参不通进入不同的控制器 请问这样能实现吗 能的话如何实现
1
shoaly 2016-10-24 10:22:20 +08:00
这个 url 好丑.... 为什么不直接是
/login /register 因为前面既然都完全一样了... 就可以省去 |
3
murmur 2016-10-24 10:47:34 +08:00
/xxx/login
/xxx/register 写在 2 个方法上 注解就好了 |
4
ipeony 2016-10-24 10:48:12 +08:00
比较笨的方法。。用 @pathvariable
|
5
PEP4JASON OP @Controller
@RequestMapping("/XXX") ...class ...{ @RequestMapping(params="service=register") ...fun(){ } } |
7
PEP4JASON OP 这个方法 只能作用于一个控制器里面 , 控制器的映射名不能重复 ,所以想另寻解决方案
|
8
hellommd 2016-10-24 11:14:47 +08:00
简单点就是一个接口一个类,模块化,入口处根据接口名称利用 IoC 进行注入。
|
9
varrily 2016-10-24 11:29:16 +08:00
.do?method=xxx 这用法是 Struts 的用法, SpringMVC 更倾向于 RESTful 设计风格,至于截图的 api ,也有类似的 JSON-RPC
|
10
zhouzm 2016-10-24 12:54:10 +08:00
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 |
11
novaeye 2016-10-24 13:50:48 +08:00
urlrewrite 可以用来解决这个需求吧
请看这里: http://stackoverflow.com/questions/27392785/springmvc-url-rewrite-with-tuckey-urlrewritefilter |
13
sherlocktheplant 2016-10-24 14:00:11 +08:00
|
15
rails3 2016-10-24 14:03:12 +08:00
nginx
|
16
PEP4JASON OP @sherlocktheplant @novaeye 请教一下 urlrewrite 怎么匹配 问号后面的参数 , 试了半天- -
|
17
PEP4JASON OP <urlrewrite use-query-string ="true">
<rule> <from>/gateway.sv\?service=(\w+)$</from> <to>/$1.do</to> </rule> </urlrewrite> 这样写 多一个参数都进不去.. |
19
hcymk2 2016-10-24 16:56:59 +08:00
|
21
novaeye 2016-10-24 17:57:47 +08:00
试试这样写:
<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 |