Java 始终映射到根目录的Ajax请求

Java 始终映射到根目录的Ajax请求,java,ajax,spring,spring-mvc,spring-security,Java,Ajax,Spring,Spring Mvc,Spring Security,我的ajax请求始终映射到“/”,即使指定了“/ajax/file/upload”这样的完整路径 在我的控制器中,我有以下两种方法 @RequestMapping(value = "/") public ModelAndView getView() { } @RequestMapping(value = "/ajax/file/upload", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST) @

我的ajax请求始终映射到“/”,即使指定了“/ajax/file/upload”这样的完整路径

在我的控制器中,我有以下两种方法

@RequestMapping(value = "/")
public ModelAndView getView() {
}

@RequestMapping(value = "/ajax/file/upload", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
@ResponseBody
public String readFile(File file) {
}
在客户端,当我实例化像“ajax/file/upload”这样的ajax请求时,请求被重定向到方法“getView”而不是“readFile”

我认为,这是因为请求映射“/”也与模式“ajax/file/upload”匹配,但不确定。如果是这样,如何区分这两个映射

我认为,这是因为请求映射“/”也与 模式“ajax/file/upload”

Spring将始终使用最佳匹配来决定哪个方法应该处理请求

可能会发生一些事情:

  • 如果在客户端发送GET请求而不是POST请求,那么最好的匹配是“/”,因为“/ajax/file/upload”只接受POST请求。您可以在浏览器网络活动中调试它,以检查请求/响应的详细信息
  • 如果实现了安全性,则需要检查ajax请求是否发送了正确的cookie/身份验证令牌
另一件可能值得检查的事情是,如果ajax请求发送头“Accept:application/json”或“Accept:/”

我认为,这是因为请求映射“/”也与 模式“ajax/file/upload”

Spring将始终使用最佳匹配来决定哪个方法应该处理请求

可能会发生一些事情:

  • 如果在客户端发送GET请求而不是POST请求,那么最好的匹配是“/”,因为“/ajax/file/upload”只接受POST请求。您可以在浏览器网络活动中调试它,以检查请求/响应的详细信息
  • 如果实现了安全性,则需要检查ajax请求是否发送了正确的cookie/身份验证令牌

另一件可能值得检查的事情是,如果ajax请求发送头“Accept:application/json”或“Accept:/”

只需创建一个基本路径,如
RequestMapping(value=“/WebServices/GetView”)
RequestMapping(value=“/WebServices/ReadFile”)
所有Web服务的基本路径都是
/webservices
,然后每个路径都以该路径开始,并且在该点之后有一些唯一的路径…我不能像您建议的那样创建基本路径,因为我使用spring security进行登录。身份验证后,它会自动降落在根“/”上。因此,我更愿意保留映射“/”本身。有没有其他方法可以做到这一点?您可以将spring安全性中的defaultSuccessUrl设置为现有视图,即索引或主页?只需创建一个基本路径,如
RequestMapping(value=“/WebServices/GetView”)
RequestMapping(value=“/WebServices/ReadFile”)
所有Web服务的基本路径都是
/webservices
,然后每个路径都以该路径开始,并且在该点之后有一些唯一的路径…我不能像您建议的那样创建基本路径,因为我使用spring security进行登录。身份验证后,它会自动降落在根“/”上。因此,我更愿意保留映射“/”本身。有没有其他方法可以做到这一点?您可以将spring安全性中的defaultSuccessUrl设置为现有视图,即索引或主页?只需创建一个基本路径,如
RequestMapping(value=“/WebServices/GetView”)
RequestMapping(value=“/WebServices/ReadFile”)
所有Web服务的基本路径都是
/webservices
,然后每个路径都以该路径开始,并且在该点之后有一些唯一的路径…我不能像您建议的那样创建基本路径,因为我使用spring security进行登录。身份验证后,它会自动降落在根“/”上。因此,我更愿意保留映射“/”本身。有没有其他方法可以做到这一点?您可以将spring安全性中的defaultSuccessUrl设置为现有视图,即索引或主页?