gpt4 book ai didi

Spring MVC 3.1 没有注释?

转载 作者:行者123 更新时间:2023-12-02 06:53:03 25 4
gpt4 key购买 nike

我正在使用 Spring 3.1 启动一个新项目,并且一直在密切关注有关如何使用 @Controller 注释的所有文档和论坛意见。

我个人不喜欢在 MVC 中使用注解;我更喜欢使用 SimpleUrlHandlerMapping 将 Web 应用程序的所有 URL 集中在一处。

此外,根据之前使用 Spring 2.x 的工作,我非常习惯 BaseCommandController 层次结构。

我一直很喜欢 Spring,因为它赋予力量而不受到限制。现在我发现 Spring MVC 强制我将 URL 放入 java 源代码中,这意味着 (a) 我无法将一个 Controller 映射到多个 URL,并且 (b) 要发现 Web 应用程序中正在使用哪些 URL,我必须扫描通过不同的java源文件,我觉得这是不切实际的。

请问将 @Controller 与 SimpleUrlHandlerMapping 结合的推荐方式是什么?

<小时/>

更新:

嗨,Dave,您是说您可以像这样映射多个 URL(从 petclini.web.ClinicController 更改)?

@RequestMapping({"/vets", "/another"})
public ModelMap vetsHandler() {

如果这有效那就太好了。

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

问候,

最佳答案

这是一个支持注释和非注释 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>

一个简单的 URL 映射 Controller

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

mvc 注解配置的 Controller

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

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

如果您想使用自己的处理程序进行 @Controller 注释。您可能可以查看ClassPathBeanDefinitionScannerDefaultAnnotationHandlerMapping.defineUrlsForHandlerMethods

关于Spring MVC 3.1 没有注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com