没有注释的SpringMVC3.1?
我正在用Spring3.1启动一个新项目,并且已经深入阅读了所有关于如何使用@Controller注释的文档和论坛意见 我个人不喜欢为MVC使用注释;我更喜欢使用SimpleUrlHandlerMapping将Web应用程序的所有URL放在一个地方 另外,从以前使用Spring2.x的工作来看,我非常习惯BaseCommandController继承权 我一直很喜欢春天,因为它赋予我力量而不受限制。现在,我发现Spring MVC迫使我将URL放入java源代码中,这意味着(a)我无法将一个控制器映射到多个URL,(b)为了发现webapp中使用的URL,我必须扫描不同的java源文件,这是不切实际的 请问,将@Controller与SimpleUrlHandlerMapping相结合的推荐方法是什么没有注释的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)我无法将一个控制
更新: 嗨,戴夫,你是说你可以像这样映射多个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";
}
}