任何人都可以帮助我理解Spring 4在这个例子中是如何工作的吗?

时间:2014-05-09 15:24:24

标签: java spring spring-mvc

我正在尝试学习springFramwork 4,所以我下载了一个测试项目,我安装了sts(弹簧工具),但我没有承担。 看一下servlet-context.xml 我剪了它以查看确切的部分

 <beans:beanclass="
      org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

<context:component-scan base-package="com.journaldev.spring" /> 

   </beans:beans>

之后有一个HomeController,我找不到任何与此控制器相关的映射,所以如何使用它来请求

   @RequestMapping(value = "/login", method = RequestMethod.GET)
public String loginPage(Locale locale, Model model) {
    return "login";
}

这是一个请求示例,如果我们调用login.jsp

,它将起作用

所以请任何人向我解释这些事情是如何运作的,或者给我一个教程。感谢

2 个答案:

答案 0 :(得分:1)

启动应用程序时,此行

<context:component-scan base-package="com.journaldev.spring" /> 

告诉spring扫描这个包(com.journaldev.spring)是否有注释类(在你的例子中是@Controller)。在那个春天之后,“解析”@RequestMapping注释来伪造映射到这个方法和类的url。

答案 1 :(得分:0)

为此包中的所有类提供<context:component-scan base-package="com.journaldev.spring" />弹簧扫描,并为使用@Controller注释的类提供子包并注册它。

with @RequestMapping匹配请求将路由到此控制器和适当的方法。

当你执行返回String时,它实际上通过视图解析器映射到视图。由于您已配置了视图InternalResourceViewResolver,因此它将使用sting登录,前缀和后缀以及配置的值,并尝试找到该页面。在您的示例中

"/WEB-INF/views/" + "login" + ".jsp" 

导致查找

/WEB-INF/views/login.jsp

你可以通过谷歌搜索来获得大量的教程。一些简单的是

http://www.mkyong.com/tutorials/spring-mvc-tutorials/

http://docs.spring.io/docs/Spring-MVC-step-by-step/