Spring mvc (一)

2014-11-24 11:57:17 · 作者: · 浏览: 102
话说我们讲到spring mvc 四 的时候,是不是已经感觉spring mvc 已经搞的差不多了?一个类多个方法提供外面请求,看上去好像真的已经可以了,已经到了使用的跟struts 的效
果了是吧?其实不然,我们还有一个重要的需求还没有实现呢,那是什么?
答案是表单提交,对头了,这是一个非常重要的需求呢。
呵呵,当然了,如果您是提交几个简单的字段,完全使用 request.getParameter("fieldName") 就万事大吉了。不过我们回头想想,如果大批量的数据提交或者修改的时候,您都
是request.getParameter("fieldName")接收数据,您是不是感觉回到了servlet时代了(当然,其实spring父亲就是servlet)?那我们还用spring干嘛?可能有的童鞋说,我用他一
个类提供多个方法嘛。那您就错了,其实我们Spring mvc 四 里面讲解的配置是不能使用来提交表单的,因为请求是:/abc.htm method=方法 这样的请求,这种请求应该是不能在提交数据时候用的。现在您是不是感觉到非常失望了?没有关系,接下来我们学习下,既可以提交表单,又不用request.getParameter("fieldName")。
开始吧...... 从那里开始呢..........
1、可能有了解spring mvc 的童鞋认为,这个提交表单很简单啊,用 SimpleFormController 就可以了。对了,这个是一直关注spring 3.0之前的用法,没有错,您确实没有看错,但是,当您升级到3.0之后,您会发现关于 BaseCommandController下面所有的子类都已经被Spring 声明不建议使用了 即 :@Deprecated ,好,废话少说,贴张图上来,有图有真相:
是吧,没有错吧,如果 您不信,还可以查询他下面的子类的哦。当然并不是说明 声明不建议就不能用,你要是坚持用,我也咬不了您的,您爱用就用呗。
好了,废话不多说了,我们现在要说明的是SimpleFormController ,行吧,我们先看看对Spring mvc 四的 spring配置文件进行调整吧,以得到更优美的请求地址,如下:
[html]
< xml version="1.0" encoding="UTF-8" >
queryList
queryById
sampleController
lapController
lapController
这个时候您就可以打开两个窗口对比 Spring mvc 四 里面的配置文件了,他们的差异是:
[html]
变成这样了,也就是说,我们用到了Spring mvc 四里面提到的 PropertiesMethodNameResolver配置,这个类是配置请求地址和方法对应的。
[html]
queryList
queryById
好了,这个时候您要细心的看下配置文件,相信您有一定的收获的哦。
2、接下来,我们看看Java类怎么实现获取页面对象表单吧,如下代码:
[java]
/*
* Copyright 2013 The JA-SIG Collaborative. All rights reserved.
* distributed with this file and available online at
* http://www.etong.com/
*/
package com.lap.taobaouse.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
/**
*

* 表单提交对象,并实现了一类多方法功能
*

*
* @author 劳水生 Exp
* @version $FileName: LapFormController.java $Date: 2013-3-21 上午9:49:17 -0400
* 2013
* @since 1.0
*
*/
public class LapFormController extends MultiActionController {
/**
*

* 进入表单提交页面
*

*
* @param request
* @param response
* @return
*/
public ModelAndView toAdd(HttpServletRequest request, HttpServletResponse response) {
return new ModelAndView("addTest");
}
/**
*

* 表单提交
*

*
*
* @param request
* @param response
* @param testVO
* @return
*/
public ModelAndView saveTest(HttpServletRequest request, HttpServletResponse response, TestVO testVO) {
System.out.println(testVO);
return new ModelAndView();
}
}
大家看了代码,重点是看第二个方法的方法头里面的参数,呵呵,最后一个就是我们要的对象了,不错吧,我们再去看看MultiActionController