2012-06-14 49 views
2

我已经学会了如何使用Spring MVC 3,但我对它的背景很感兴趣。对我来说最有趣的事情之一就是表单处理。Spring MVC表单处理如何工作?

到目前为止,我知道每个由调度器处理的http请求映射到适当的控制器。控件使一些工作落后,并选择要加载的JSPX页面,并向其发送属性。在容器(Tomcat等)编译的JSPX到另一个servlet。比网页发回http响应。

在大多数情况下,这对我来说似乎是正确的。但是,表单处理是不同的。在<form:form>标记中,您定义了映射到它的对象和属性。但是在上面提到的逻辑中,它实际上从来不会被调用。我的意思是,用户请求带有表单的页面。所以控制器呈现它。比用户发送表单,并且一些保存方法由调度员调用。但是,Spring如何知道如何映射包含属性的属性,如果它们在未被调用的JSPX中描述?另外,如果您知道Spring MVC背景上的任何优秀的,最好是web的资源,请发布一个链接。谢谢。

+0

你是什么意思,没有被调用的JSPX?你如何看待HTML生成? –

+0

是的,当呈现给用户的表单。但是,当用户发布数据时,它的另一个请求。 –

+0

是的;这与JSP有什么关系?无论如何,表单值都带有名称。这些名称用于映射模型对象/等。类型转换在表单和模型类型的字符串之间进行转换。 –

回答

4

好了,所有的Spring参考之王是在

http://static.springsource.org/spring/docs/current/

上有MVC中长款,并就如何建立使用Spring标签页。

问题是,告诉你阅读,就像告诉你从消防水管喝一杯。由于我在使用Spring方面做得更好,我已经了解到知道如何在Spring中做好一件事意味着知道如何在Spring中做好其他事情。

这一切都值得学习,而且当你了解更多关于Spring的真正优势时,你会发现自己的实力。

谷歌搜索“example spring form”可以找到像http://www.mkyong.com/spring-mvc/spring-mvc-form-handling-example/这样的有用的例子。但是这种学习方法的问题在于Spring在不断发展。我发现,从网上随机的例子中学习很复杂,有些人在Spring 3可用之前发布了他们的例子,或者befor注释可用,等等。

对我来说,随着我继续学习Spring,还没有一个参考。它一直是主要参考,网络上有很多例子,并在这里阅读大量问题,并发表了一些。

+0

谢谢,但我阅读了很多关于如何使用它的教程。我可以使用它:)我感兴趣的是它如何在后台工作... –

+0

哦,哇。我没有看到有关内部的任何信息(不是我问过的),但我想你会去看源代码。 – Marvo

1

从你描述问题的方式来看,我猜你知道HTTP的概念。但是,您似乎并不了解HTTP参数和请求属性以及它们的生命周期。

当用户请求一个页面时,调用Controller中的一个方法,将返回View以显示请求属性以及从Controller设置的请求属性。该视图然后以HTML格式呈现。在这个HTML中,有一个表单被渲染。此表单的操作可能会或可能不会指向相同的URL。当请求被发回时,URL又被映射到Controller的方法(可以是具有不同方法的相同Controller或完全不同的Controller)。与第二个请求一起,表单中的这些参数将被发送到相应的Controller的方法,并且与第一个请求相同的循环再次发生。