Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有注释的SpringMVC3.1?_Spring_Spring Mvc_Annotations_Spring Annotations - Fatal编程技术网

没有注释的SpringMVC3.1?

没有注释的SpringMVC3.1?,spring,spring-mvc,annotations,spring-annotations,Spring,Spring Mvc,Annotations,Spring Annotations,我正在用Spring3.1启动一个新项目,并且已经深入阅读了所有关于如何使用@Controller注释的文档和论坛意见 我个人不喜欢为MVC使用注释;我更喜欢使用SimpleUrlHandlerMapping将Web应用程序的所有URL放在一个地方 另外,从以前使用Spring2.x的工作来看,我非常习惯BaseCommandController继承权 我一直很喜欢春天,因为它赋予我力量而不受限制。现在,我发现Spring MVC迫使我将URL放入java源代码中,这意味着(a)我无法将一个控制

我正在用Spring3.1启动一个新项目,并且已经深入阅读了所有关于如何使用@Controller注释的文档和论坛意见

我个人不喜欢为MVC使用注释;我更喜欢使用SimpleUrlHandlerMapping将Web应用程序的所有URL放在一个地方

另外,从以前使用Spring2.x的工作来看,我非常习惯BaseCommandController继承权

我一直很喜欢春天,因为它赋予我力量而不受限制。现在,我发现Spring MVC迫使我将URL放入java源代码中,这意味着(a)我无法将一个控制器映射到多个URL,(b)为了发现webapp中使用的URL,我必须扫描不同的java源文件,这是不切实际的

请问,将@Controller与SimpleUrlHandlerMapping相结合的推荐方法是什么


更新:

嗨,戴夫,你是说你可以像这样映射多个URL(从petclini.web.ClinicController修改而来)

如果这有效,那就好了

不过,我的问题仍然存在: 如果我不想在java源代码中使用URL,那么如何最好地将它们映射到@Controller类


关于,

这里是一个支持注释和非注释控制器的简单设置

调度程序servlet配置xml

<mvc:annotation-driven/>
<bean id="testController" class="com.test.web.TestController"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
      <value>
      /test=testController
      </value>
  </property>
  <property name="order" value="0"/>
</bean>
mvc注释配置的控制器

@Controller
@RequestMapping("/home")
public class HomeController {

    @RequestMapping(method = RequestMethod.GET)
    @ResponseBody
    public String dashboard(Model model, HttpServletRequest request) {
        return "home";
    }
}

如果您想为@Controller注释使用自己的处理程序。您可能可以查看
ClassPathBeanDefinitionScanner
DefaultAnnotationHandlerMapping.DeterminuteUrlSforHandlerMethods

我不知道您不能再映射多个URL了,您有文档引用吗?使用@(用户名)回复评论作为评论——如果你问某人一个嵌入在你原始问题中的问题,他们可能永远看不到。我在问您是否更改了,如果更改了,请提供一个文档链接。就我个人而言,我会使用类似于路由的东西;我自己滚了,但显然其他人也滚了。@Dave Newton:谢谢你的链接,我会调查的。(顺便说一句:我回答了这个问题,所以我可以格式化代码)我理解格式化的必要性,但是如果没有人看到它,它的格式有多好并不重要:)此外,对于这么短的东西,
@RequestMapping({/url1“,“/url2”})
可能就足够了。我现在已经很好地使用了这个库。起初我认为这是一个很好的主意,我想提醒您将其作为一个格式答案,但不幸的是,它似乎没有正确处理方法级别@modeldattribute,因此我的引用数据没有得到填充。羞耻。这看起来是正确的,我想这是一种方法,但我特别问的是带有SimpleRhHandlerMapping的@Controller,而不是控制器接口——尤其是这个接口的许多实现现在都被弃用了。听起来像是一个子类化的计划:也许这就是springmvc路由器想要做的?
public class TestController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        PrintWriter responseWriter = response.getWriter();
        responseWriter.write("test");
        responseWriter.flush();
        responseWriter.close();
        return null;
    }
}
@Controller
@RequestMapping("/home")
public class HomeController {

    @RequestMapping(method = RequestMethod.GET)
    @ResponseBody
    public String dashboard(Model model, HttpServletRequest request) {
        return "home";
    }
}