如何处理包含正斜杠(/)的请求?
我需要按以下方式处理请求:
www.example.com/show/abcd/efg?name=alex&family=moore (does not work)www.example.com/show/abcdefg?name=alex&family=moore (works)
www.example.com/show/abcd-efg?name=alex&family=moore (works)
它应该接受介于www.example.com/show/
和之间的值中的任何类型的字符?。请注意,将位于的值将是一个值,而不是操作的名称。
例如:/show/abcd/efg,/show/lkikf?name=Jack
其中第一个请求应将用户重定向到页面abcd/efg
(因为那是名称),第二个请求应将用户lkikf连同参数名称的值一起重定向到页面。
我有下面的控制器来处理它,但是问题是当我的地址中有/时,控制器无法处理它。
@RequestMapping(value = "/{mystring:.*}", method = RequestMethod.GET)public String handleReqShow(
@PathVariable String mystring,
@RequestParam(required = false) String name,
@RequestParam(required = false) String family, Model model) {
我用下面的正则表达式不起作用。
/^[ A-Za-z0-9_@./#&+-]*$/
回答:
你必须创建两个方法,然后一个具有@RequestMapping(value = { "/{string:.+}" })
注释,另一个具有注释,@RequestMapping(value = { "/{string:.+}", "/{string:.+}/{mystring:.+}" })
然后在每个方法中采取相应的措施,因为你不能拥有可选的路径变量。
import org.springframework.stereotype.Controller;import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequestMapping("/show")
public class HelloController {
@RequestMapping(value = { "/{string:.+}" })
public String handleReqShow(@PathVariable String string,
@RequestParam(required = false) String name,
@RequestParam(required = false) String family, Model model) {
System.out.println(string);
model.addAttribute("message", "I am called!");
return "hello";
}
@RequestMapping(value = { "/{string:.+}", "/{string:.+}/{mystring:.+}" })
public String whatever(@PathVariable String string,
@PathVariable String mystring,
@RequestParam(required = false) String name,
@RequestParam(required = false) String family, Model model) {
System.out.println(string);
System.out.println(mystring);
model.addAttribute("message", "I am called!");
return "hello";
}
}
以上是 如何处理包含正斜杠(/)的请求? 的全部内容, 来源链接: utcz.com/qa/422134.html