【问题标题】:Java Spring 4.01 automatic mappingJava Spring 4.01 自动映射
【发布时间】:2016-12-11 15:42:46
【问题描述】:

我刚开始学习Java,这是我在Stack Overflow上的第一个问题,所以请不要对我评价太苛刻)

我使用 Netbeans 8.02、GlassFish 4.0、JavaEE7、Spring 4.01。 (没有 Maven。没有休眠。) (新建项目->Java Web->Web 应用)

我在 URL localhost:8080/MyProject/x/y.htm 中创建了“源包/XController.java”,我得到了这个工作:

@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);
}

如果找不到控制器、动作或视图,或者动作的参数不正确,则只是异常,无需进一步解析。

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

也可以手动进行,例如重定向到同一个地址,然后解析 URL,然后运行相应的 Controller.Method() ,但看起来不太好)

【问题讨论】:

    标签: java spring netbeans-8 glassfish-4


    【解决方案1】:

    你要找的是@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;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-17
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 2011-01-18
      • 2018-04-26
      • 2010-10-28
      • 1970-01-01
      相关资源
      最近更新 更多