这两个问题的示例代码:
```Java
@At("/get/?/?/?")
@Ok("json")
public void get(String host,String startTime,String endTime) {
}
```
访问:http://localhost:8080/nutztest/get/www.denghuafeng.com/2016-07-04/2016-07-05 这种链接,会报404,没法访问到以上方法。
```Java
@At("/url")
@Ok("json")
public void url(String url) {
System.out.println(url);
}
```
访问:http://localhost:8080/nutztest/url?url=http://www.denghuafeng.com?id=123&name=dhf
输出结果是:http://www.denghuafeng.com?id=123
即从http://www.denghuafeng.com?id=123开始“&”以后的参数都获取不到,以上是name=dhf获取不到。
预期效果是:http://www.denghuafeng.com?id=123&name=dhf
2 回复
第一种,我测试了一下, 没有木有问题
12:05:36.822 DEBUG (UrlMappingImpl.java:92) get - Found mapping for [GET] path=/demo/get/www.abc.com/abc/abz : DemoModule.get(DemoModule.java:71)
12:05:36.823 DEBUG (LogTimeProcessor.java:24) process - [GET ]URI=/nutzbook/demo/get/www.abc.com/abc/abz 200 1ms
至于第二种,那是因为URL的传参是需要urlencode一下的。截断是容器的缘故,Http标准的缘故.
http://$uri?参数1=abc&参数2=def
// http://localhost:8080/nutztest/url?url=http://www.denghuafeng.com?id=123&name=dhf
按Http协议解析,结果就是
URI = /nutztest/url
参数url=http://www.denghuafeng.com?id=123
参数name=dhf
@wendal
第一种,问题找着了,是因为web.xml配置了
<filter>
<filter-name>nutztest</filter-name>
<filter-class>org.nutz.mvc.NutFilter</filter-class>
<init-param>
<param-name>modules</param-name>
<param-value>com.denghuafeng.MainModule</param-value>
</init-param>
<init-param>
<param-name>exclusions</param-name>
<param-value>*[.].*</param-value>
</init-param>
</filter>
本意是想限制后缀访问,不想任何带后缀的链接都能访问后台,看来好好想想这个排除的正则表达式,去除exclusions的设置就好了。
第二种 只能通过Ur后面传的参数换成其他的字符,在后台再还原成“&”来解决了。
比如:http://localhost:8080/nutztest/url?url=http://www.denghuafeng.com?id=123@name=dhf
后台就能接到:http://www.denghuafeng.com?id=123@name=dhf
再还原成&,达到预期效果:http://www.denghuafeng.com?id=123&name=dhf
添加回复
请先登陆