Java Spring 4.01自动映射

时间:2016-12-11 15:42:47

标签: java spring netbeans-8 glassfish-4

我刚刚开始学习Java,这是我关于Stack Overflow的第一个问题,所以请不要过于严厉地评判我。

我使用Netbeans 8.02,GlassFish 4.0,JavaEE7,Spring 4.01。 (没有Maven。没有Hibernate。) (新项目 - > Java Web-> Web应用程序)

我在URL localhost中创建了“source packages / XController.java”:8080 / MyProject / x / y.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!");
}

如果网址为http://localhost:8080/MyProject/a/b/hello,则相应的方法如下所示:

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

如果未找到Controller或操作或视图,或者操作具有不正确的参数,则只需例外,无需进一步解析。

所以问题是 - 使用现代Spring功能实现它的正确方法是什么,但如果不可能,那么使用普通的Java?

可以手动执行,例如将所有内容重定向到同一地址,然后解析URL,并运行相应的Controller.Method(),但这看起来不太好)

1 个答案:

答案 0 :(得分: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;
}