标签: request-mapping

@RequestMapping如何在Spring Boot中内部工作?

@RestController
@RequestMapping("/employee")
public class Employee {
  @RequestMapping("/save")
  public void saveEmployee() {
    // saving employee
  }
}
Run Code Online (Sandbox Code Playgroud)

@RequestMapping内部如何将请求映射到saveEmployee方法?

spring spring-boot spring-restcontroller request-mapping

3
推荐指数
1
解决办法
1801
查看次数

如何通过 REST 控制器使用 Spring(Boot)重写 URL?

假设我有以下控制器及其父类:

@RestController
public class BusinessController extends RootController {

    @GetMapping(value = "users", produces = {"application/json"})
    @ResponseBody
    public String users() {
        return "{ \"users\": [] }"
    }

    @GetMapping(value = "companies", produces = {"application/json"})
    @ResponseBody
    public String companies() {
        return "{ \"companies\": [] }"
    }

}

@RestController
@RequestMapping(path = "api")
public class RootController {

}
Run Code Online (Sandbox Code Playgroud)

通过调用以下 URL 来检索数据:

http://app.company.com/api/users
http://app.company.com/api/companies
Run Code Online (Sandbox Code Playgroud)

现在假设我想重命名/api路径,但通过在新 URI 旁边/rest返回 HTTP 状态代码来保持其“可用”301

例如客户请求:

GET /api/users HTTP/1.1
Host: app.company.com
Run Code Online (Sandbox Code Playgroud)

服务器请求:

HTTP/1.1 301 Moved Permanently
Location: http://app.company.com/rest/users …
Run Code Online (Sandbox Code Playgroud)

spring url-rewriting http-status-code-301 spring-boot request-mapping

3
推荐指数
1
解决办法
4573
查看次数

Spring @RequestMapping“不包含”正则表达式

我有这个请求映射:

@RequestMapping(value = "/route/to-{destination}-from-{departure}.html", method = {RequestMethod.GET, RequestMethod.HEAD})
Run Code Online (Sandbox Code Playgroud)

我想添加 RequestMapping:

@RequestMapping(value = "/route/to-{destination}.html", method = {RequestMethod.GET, RequestMethod.HEAD})
Run Code Online (Sandbox Code Playgroud)

因此它可以服务所有“不出发”的航线。然而,这会产生冲突,因为“/route/to-destination-from-departure”url实际上也匹配第二个RequestMapping...很公平,所以我的解决方案是指定一个正则表达式:

@RequestMapping(value = "/route/to-{destination:^((?!-from-).)+}.html", method = {RequestMethod.GET, RequestMethod.HEAD})
Run Code Online (Sandbox Code Playgroud)

因此,如果“destination”包含“-from-”,RequestMapping 将不匹配。

而且……这不起作用!第一个 RequestMapping 成功提供了 url“/route/to-barcelona-from-paris.html”,但根本没有提供 url“/route/to-barcelona.html”...我缺少什么?

注意:我不想使用java解决方案,例如有一个“/route/to-{destination}”RequestMapping,然后检查“destination”是否包含“-from-”..:)另外,我不能改变这些路线是因为 SEO...

java regex spring request-mapping

2
推荐指数
1
解决办法
2689
查看次数

Spring MVC RequestMapping 不适用于 RestController

我想要一个带有基本映射“/user”的 RestController 类(因此不同的函数将具有“/user/add”、“/user/remove”等路径或使用 POST/GET 等)

这是我不明白并且无法开始工作的部分:

@RestController
public class UserController {

  @GetMapping("/user")
  public Response login(Principal principal){
    //some output
  }
}
Run Code Online (Sandbox Code Playgroud)

这种情况下的预期行为是我可以在“/user”下访问我的输出。这按预期工作。现在,如果我将其修改为以下内容(因为此控制器中的所有功能都应该有一个以“/user”开头的路径,这会更清晰)

@RestController
@RequestMapping("/user")
public class UserController {

  @GetMapping("/")
  public Response login(Principal principal){
    //some output
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到一个 404-Error 页面并且无法再访问“/user”我发现的所有示例都使用相同的语法(或者有时@RequestMapping(path="/user") 但它不起作用)并且我不知道为什么它不起作用。有人能告诉我我的错误在哪里吗?

java spring-mvc spring-restcontroller request-mapping

2
推荐指数
1
解决办法
1322
查看次数

Spring REST请求映射

我想配置Spring将所有请求重定向到特定的Controller,而不管URL(长度和参数).我应该如何在RequestMapping注释中提供URL模式/正则表达式.我尝试使用下面的代码,但它无法正常工作.在这方面的任何帮助深表感谢.

    @Controller
    @RequestMapping("/*")
    public class ServiceController {
        @RequestMapping( method = RequestMethod.GET, value = "*" )
        public void getProjectList(HttpServletRequest httpServletRequest,Model model){

        }
    }
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc restful-url spring-restcontroller request-mapping

1
推荐指数
1
解决办法
2226
查看次数

在Spring Controller上$ .ajax POST后收到错误的请求错误(400)

你好StackOverFlow(s)

我正在运行这个问题,因为现在超过2个小时这很简单

我正在尝试使用$ .ajax POST调用将JSON对象发送到Spring Controller

我正在使用AngularJS,但这一点很有用

这是服务器和客户端的代码以及弹簧配置

提前致谢

JQuery:

    $scope.push = function() {
    $.ajax({
        type: "PUT",
        url:"rest/todo/greeting/",
        data : {id:"1",title:"ajax",description:"ajax"},
        dataType: "json",
        contentType : "application/json",
        success : function(data) {
            $log.info(data)
        }
    })
}
Run Code Online (Sandbox Code Playgroud)

弹簧控制器:

@Controller
@RequestMapping("/todo")
public class TodoController {
@RequestMapping(value = "/greeting", method = RequestMethod.PUT,consumes="application/json",produces="text/html")
public @ResponseBody String push(@RequestBody Todo todo) {
    System.out.println(todo.getTitle());
    return "test";
}
Run Code Online (Sandbox Code Playgroud)

}

弹簧配置:

<mvc:annotation-driven />
<context:component-scan base-package="org.lab.todo.controller" />
<bean id="defaultViews" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
Run Code Online (Sandbox Code Playgroud)

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<listener> …
Run Code Online (Sandbox Code Playgroud)

java ajax jquery spring request-mapping

0
推荐指数
1
解决办法
2万
查看次数

两个@RequestMapping注释之间的差异

我是Spring MVC的新手,我有以下疑问.

在控制器中,我有一个以这种方式注释的方法:

@Controller
@RequestMapping(value = "/users")
public class UserController {

    @RequestMapping(params = "register")
    public String createForm(Model model) {
        model.addAttribute("user", new Customer());
        return "user/register";
    } 

}
Run Code Online (Sandbox Code Playgroud)

所以这个方法处理HTTP请求到URL / users?寄存器,其中register是一个参数(因为整个类处理对/ users资源的请求).

如果使用params ="register"我使用以下的syntaxt 是同样的事情:

@Controller
public class UserController {

    @RequestMapping("/users/{register}")
    public String createForm(Model model) {
        model.addAttribute("user", new Customer());
        return "user/register";
    } 

}
Run Code Online (Sandbox Code Playgroud)

我已经删除了类级别的映射,并使用了@RequestMapping("/ users/{register}").

它与第一个例子的含义相同吗?

java spring annotations spring-mvc request-mapping

0
推荐指数
1
解决办法
2225
查看次数

@RequestParam和@RequestMapping之间的差异

线路1:

public ModelAndView viewCustomerDetails(@RequestParam("custId") Integer customerId, @RequestParam("categoryName") String categoryName, HttpServletRequest request) throws BusinessException{
Run Code Online (Sandbox Code Playgroud)

线路2:

public ModelAndView viewCustomerDetails(@RequestMapping("custId") Integer customerId, @RequestMapping("categoryName") String categoryName, HttpServletRequest request) throws BusinessException{
Run Code Online (Sandbox Code Playgroud)

我要去深入我的项目代码,并具有一定的混乱@RequestParam@RequestMapping一些时间,我发现@RequestParam有的时候@RequestMapping.在我的理解中,两者都将分配custIdcustomerId数据成员的值.

我的jsp文件的一部分:

<form:input mandatory="true" id="CustNameTxt" path="custName" cssClass="txtfield controlWidth" readonly="false" />
Run Code Online (Sandbox Code Playgroud)

为了更好地理解我的问题,我已经在Line2中进行了编辑

java spring spring-mvc request-mapping

-1
推荐指数
1
解决办法
1352
查看次数