2017-07-14 116 views
0

我對Spring MVC RequestMapping註解有個疑問。需要你的幫助。Spring @RequestMapping

我已經創建了一個IPSLcontroller,我希望IPSLcontroller處理所有的請求url.i在這個控制器中創建了兩個方法。

1)handleLogoutRequest: - 這個方法應該調用下面的url。

2)handleRequest: - 此方法應該在所有請求url上調用,而不是註銷。

http://localhost:9086/webapp/loginhttp://localhost:9086/webapp/addhttp://localhost:9086/webapp/remove

這裏是我的示例代碼。但它沒有按預期工作。

@Controller 
public class IPSLController { 

    @RequestMapping(value={"/logout/*"},method = RequestMethod.POST) 
    protected void handleLogoutRequest(HttpServletRequest request, 
      HttpServletResponse response) throws Exception { 
     System.out 
       .println("........................IPSLController logout request......................................."); 

    } 


    @RequestMapping(method = RequestMethod.POST,value={"/*"}) 
    protected void handleRequest(HttpServletRequest request, 
      HttpServletResponse response) throws Exception { 
     System.out 
       .println("........................IPSLController all request Post......................................."); 

    } 
    } 
+1

而你的問題是什麼? –

+0

「不按預期工作」是什麼意思? –

+0

我正在尋找正確的映射值。上面的代碼沒有按預期工作。註銷請求也來到handleRequest方法。 – Ankur

回答

0

那麼這是它的工作方式,它應該。你有一個/*/logout/*的映射。因此,當您發佈到/logout時,它會調用/*的方法。我懷疑如果你發佈到/logout/something它會調用你的註銷處理程序。

如果你想讓它工作,你不能有第二種方法的通配符映射。至少使用/something/*以便春天可以對映射做出正確的決定。

+0

@Nester:這不是JAXRS。 –

+0

@RossiRobinsion抱歉,我的不好) –

0

您應該爲每個使用的控制器使用一個通用前綴,因此您可以更好地區分它們。你也不需要任何「/」這樣的電話。

@Controller 
@RequestMapping("ispl") 
public class IPSLController { 

@RequestMapping(value={"logout"},method = RequestMethod.POST) 
protected void handleLogoutRequest(HttpServletRequest request, 
     HttpServletResponse response) throws Exception { 
    System.out 
      .println("........................IPSLController logout request......................................."); 

} 


@RequestMapping(method = RequestMethod.POST,value={"hello"}) 
protected void handleRequest(HttpServletRequest request, 
     HttpServletResponse response) throws Exception { 
    System.out 
      .println("........................IPSLController all request Post......................................."); 

} 
} 

如果你現在想打電話給他們過一個ServletRequest或用restService或類似的東西,你應該申報他們這樣

@GET 
@Path("ispl/logout") 
public void Method (HttpServletResponse ...)