弹簧。将post方法请求绑定到基本URL而不使用尾部斜杠

时间:2012-11-28 15:26:20

标签: spring model-view-controller controller request

我有问题哪个解决方案可能很明显。

我想将post和get方法绑定到应用程序基础url。我正在使用带注释的控制器,其中一种方法如下:

@RequestMapping(value = { "/*" }, method = { RequestMethod.GET, RequestMethod.POST })
public void init(HttpServletRequest request) {
     logger.info("Method: " + request.getMethod());
}

在我发送get或post请求的两种情况下,我总是得到结果“Method:GET”。我怎么解决这个问题?

似乎应用程序中的某处有重定向但是找不到任何内容。

提前致谢!

1 个答案:

答案 0 :(得分:0)

问题在于你如何测试程序,你只是在浏览器窗口中输入url来使用GET方法来测试POST 您可以使用

等内容创建简单的html页面
<form action="http://localhost:8080/yourapp/yourEntryPoint" method="post">
  <input type="text" name="data" value="mydata" />
  <input type="submit" />
</form>

并在浏览器中打开

或使用插件到您选择的浏览器(谷歌)&#34; REST服务测试&#34;

有关Spring MVC的更多信息 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/#mvc-ann-requestmapping

为了将其映射到该控制器的基本URL,您不需要将value =放在方法上

    @Controller
    @RequestMapping("/yourEntryPoint")
    public class YourClass {

        @RequestMapping(method =  {RequestMethod.GET, RequestMethod.POST })
         public void get() {
            logger.info("Method: " + request.getMethod());
        }

       @RequestMapping(value="/new", method = RequestMethod.GET)
        public void getNewForm() {
        logger.info("NewForm" );
    }

    }

这会将请求POST和GET映射到url

http://host:port/yourapp/yourEntryPoint

这将映射到GET

http://host:port/yourapp/yourEntryPoint/new