2016-12-11 59 views
0

我剛開始學習Java,這是我對堆棧溢出的第一個問題,所以請不要對我做出判斷過於嚴厲)Java的春天4.01自動映射

我使用NetBeans 8.02,GlassFish的4.0,JavaEE7,春天4.01。 (沒有Maven,沒有休眠) (新項目 - > Java Web-> Web應用程序)

我在URL localhost:8080/MyProject/x/y中創建了「source packages/XController.java」。 HTM我得到這個工作:

@Controller 
public class XController { 
    @RequestMapping("/x/y.htm") 
    public String yAction(ModelMap modelMap) { 
     modelMap.put("printme", "Hello World!"); 
     return "x/y"; 
    } 
} 

是否有可能擺脫註釋,因爲它們都具有相同的規則:如果URL是http://localhost:8080/MyProject/a/b它會自動使用AController.BAction(),並自動設置視圖是WEB-INF/jsp/a/b.jsp?

理想的動作代碼會是這個樣子:

public Void yAction() { 
    this.modelMap.put("printme", "Hello World!"); 
} 

,如果URL是http://localhost:8080/MyProject/a/b/hello相應的方法是這樣的:

public Void yAction(String msg) { 
    this.modelMap.put("printme", msg); 
} 

如果View沒有找到控制器或行動或,或者動作有不正確的參數,那麼只是例外,不需要進一步解決。

所以問題是 - 使用現代Spring功能實現它的正確方法是什麼,但如果它不可能,那麼用普通的Java?

它可以做手工,例如,所有重定向到同一個地址,然後解析URL,並運行相應的Controller.Method(),但不會好看)

回答

0

你在找什麼是@PathVariable

@RequestMapping("/{var1}/{var2}") 
    public String action1(ModelMap modelMap, @PathVariable String var1, @PathVariable String var2, @PathVariable String var3) { 
     modelMap.put("printme", "Hello World!"); 
     return var1+"/"+var2; 
} 

@RequestMapping("/{var1}/{var2}/{var3}") 
    public String action2(ModelMap modelMap, @PathVariable String var1, @PathVariable String var2, @PathVariable String var3) { 
     modelMap.put("printme", var3); 
     return var1+"/"+var2; 
}