【问题标题】:How Spring MVC Form handling works?Spring MVC 表单处理如何工作?
【发布时间】:2012-06-17 23:45:16
【问题描述】:

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

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

在大多数情况下,这对我来说似乎没问题。但是,表单处理是不同的。在<form:form> 标记中,您定义了映射到它的对象和属性。但是在上面提到的逻辑中,它实际上永远不会被调用。我的意思是,用户请求带有表单的页面。所以控制器渲染它。比用户发送表单,调度程序调用一些保存方法。但是,如果传入的属性是在未调用的 JSPX 中描述的,那么 Spring 如何知道如何映射传入的属性?

另外,如果您知道 Spring MVC 背景上的任何好的(最好是 Web)资源,请发布链接。谢谢。

【问题讨论】:

  • 什么意思,没有被调用的 JSPX?您认为 HTML 是如何生成的?
  • 是的,当表单呈现给用户时。但是当用户发回数据时,它是另一个请求。
  • 是的;这与JSP有什么关系?在任何情况下,表单值都带有名称。这些名称用于映射模型对象/等。类型转换在表单和模型类型的字符串之间进行转换。

标签: java forms spring model-view-controller


【解决方案1】:

嗯,所有 Spring 引用之王在

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

关于 MVC 以及如何使用 Spring 标记构建页面的部分很长。

问题是,告诉你阅读这就像告诉你从消防水龙带喝一杯。随着我对 Spring 的使用越来越好,我了解到知道如何在 Spring 中做好一件事就意味着知道如何在 Spring 中做好其他事情。

这一切都值得学习,随着您对 Spring 的深入了解,Spring 的真正优势就会显现出来。

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

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

【讨论】:

  • 谢谢,但我阅读了很多关于如何使用它的教程。我可以使用它:) 我对它在后台的工作方式很感兴趣...
  • 哦,哇。我还没有看到任何关于内部的东西(不是我问过的!)但我想你会去源代码。
【解决方案2】:

从你描述问题的方式来看,我猜你知道 HTTP 的概念。但是,您似乎还不够深入,无法区分HTTP参数和请求属性及其生命周期。

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

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 2012-03-08
    • 2011-05-03
    • 2015-10-16
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    相关资源
    最近更新 更多