簡體   English   中英

如何使用@RequestMapping標頭?

[英]How to use @RequestMapping headers?

我正在學習springmvc。 當我使用@RequestMapping(value="/helloWorld", headers = "content-type=text/*")並連接到http://localhost:8080/SpringMVC_10100/helloWorld ,控制台中會輸出以下內容:

WARN org.springframework.web.servlet.PageNotFound - 沒有為servlet請求找到匹配的處理程序方法:path '/helloWorld' ,方法'GET' ,參數map[[empty]]

我的代碼是:

@Controller
public class HelloWordController {
    private Logger logger = LoggerFactory.getLogger(HelloWordController.class);

    @RequestMapping(value="/helloWorld", headers = "content-type=text/*")
    public ModelAndView helloWorld() {
        logger.debug("jin ru le");
        logger.info("The helloWorld() method is use");
        ModelAndView view = new ModelAndView();
        view.setViewName("/helloworld");
        return view;
    }
}

web.xml是

<servlet>
    <description>This is Spring MVC DispatcherServlet</description>
    <servlet-name>SpringMVC DispatchServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <description>SpringContext</description>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>SpringMVC DispatchServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

為什么?

最有可能的情況是/ helloworld不在為調度程序servlet配置的路徑中

例如,如果我有一個像這樣配置的servlet:

  <servlet>
    <servlet-name>BMA</servlet-name>
    <servlet-class>
       org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>BMA</servlet-name>
    <url-pattern>/bma/*</url-pattern>
  </servlet-mapping>

我有一個像這樣配置的控制器:

@RequestMapping(value = "/planner/plan/{planId}/delete", method = RequestMethod.GET)
public ModelAndView deletePlanConfirm(HttpServletRequest request,  
       @PathVariable("planId")   Long planId)   {}

那么browsder中的請求將是:

http://localhost:8080/bma/planner/plan/1223/delete

編輯: 此外,如果您的處理程序中的內容類型標題縮小,請確保在您的請求中發送內容類型的haeder。

在下面的注釋中刪除標題:

@RequestMapping(value="/helloWorld", headers = "content-type=text/*")

至:

@RequestMapping(value="/helloWorld",  method = RequestMethod.GET)

或者:

@RequestMapping(value="/helloWorld")

應該讓它發揮作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM