我刚刚开始学习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(),但这看起来不太好)
答案 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;
}