如何处理包含正斜杠(/)的请求?

我需要按以下方式处理请求:

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

回到顶部