首先回顾了spring mvc中的表单验证和业务逻辑校验失败后,回到表单页面中显示错误信息的整个内部运行流程。
表单校验出错后回到表单注册页面是由默认的SimpleFormController的processFormSubmission方法自动完成的,王涛忘记这一点,他们覆盖了processFormSubmission方法,直接在processFormSubmission方法中执行业务逻辑校验,结果导致表单校验失败后不能回到表单注册页面。
查看帮助文档,可以了解到SimpleFormController的详细工作流程,特别是看onSubmit(Object command,BindException errors)这个方法的帮助,就知道怎样写业务逻辑校验失败的代码了。
protected ModelAndView onSubmit(Object command,
BindException errors)
{
errors.addError(new FieldError("name","用户名重复"));
return new ModelAndView(this.getFormView(),errors.getModel());
}
接着分析了onSubmit方法与doSubmitAction方法的应用区别。
讲解了如何将Validator框架集成到spring中的设计思想:
class MyValidator implements Validator
{
boolean supports(Class clazz)
{
为什么不能使用:UserCommand.class.equals(clazz);?
这主要是因为Class没有覆盖equals方法。
}
void validate(Object obj,Errors errors)
{
}
}
编写的校验方法的定义应该如下:
public static boolean validateFloatRange(java.lang.Object bean,
ValidatorAction va,
Field field,
Errors errors)
{
......
}
所以,MyValidator类的validate(Object obj,Errors errors)方法应编写成如下形式“
void validate(Object obj,Errors errors)
{
ValidateResources resources = new ValidateResources(Inputstream []);
Validator validator = new Validator(resources,"/logon");
valdiator.setParameter(Validator.PARAM_BEAN,obj);
validator.setParameter("org.springframework.validation.Errors",errors);
validator.validate();
}
我问魏奕东,相比他以前不用validator框架而编写的对表单信息进行校验的代码和这次使用validator框架编写的代码,哪个更复杂,他愿意采用哪个?显然,使用validator框架编写的代码更复杂、他更愿意用以前的方式进行表单校验,那我们为什么要使用validator框架呢?这是为了实现代码重用和校验逻辑的封装和配置使用。如果他想在公司做到更高的开发职位,他想拿到更多的工资,他就应该使用validator框架,这样,其他级别低的程序员可以不写校验代码了,而直接在validator框架中插入魏奕东写的校验方法,老板就会将从其他人身上省下的一部分工钱装入到魏奕东的口袋,呵呵!
魏奕东,别高兴得太早!你想干的这份工作,早就有人干了,这就是spring module,它模仿struts实现的validator框架,实现了调用validator框架的sring mvc的Validator,现在,我们就来看看如何使用spring module提供的validtor吧!
接着我为大家讲解了如何使用spring module提供的validtor来执行表单校验,不过,由于spring不支持动态command对象,所以,我们还无法象struts那样不写一行代码也玩个完整的view层。
杨松发现appfuse中带的spring module 1.0没有validateWhen这个校验规则,不过,我们现在用的是spring module 6.0,不用担心这个问题。
接着为大家讲了struts中的文件上传和spring mvc中的文件上传,strtus的文件上传很简单,而spring mvc中的文件上传稍微复杂一些,首先要在配置文件中配置CommonsMultipartResolver,spring mvc才会处理multipart的数据请求,接着就可以使用CommonsMultipartFile处理很大的上传文件了,不用担心数组越界的问题。王涛能够接着我讲解的思路说出ByteArrayMultipartFileEditor内部其实就是调用了CommonsMultipartFile的getByte方法来实现将上传的文件转换成字节数组的,真是不错,看来他已经有了自己的编程感觉了,呵呵。
分享到:
相关推荐
Spring MVC 是一款强大的Java Web开发框架,用于构建高效、可维护和模块化的Web应用程序。它作为Spring框架的一部分,提供了一种优雅的方式来处理HTTP请求和响应,使得开发者可以专注于业务逻辑而不是底层实现。在这...
在Spring MVC中,它允许开发者通过配置文件或注解来管理对象和它们之间的依赖关系。 3. **spring-beans.jar**:包含了Spring对bean的管理和配置支持,如bean的实例化、装配、生命周期管理等。它与spring-context...
在使用Spring MVC时,依赖包的正确配置至关重要,因为它们包含了框架运行所需的类库和组件。 Spring MVC的依赖主要分为以下几个方面: 1. **Spring Framework核心**:这是Spring MVC的基础,包括Spring Context、...
在实际开发中,Spring MVC常常与Spring Data JPA或MyBatis等持久层框架结合使用,以方便数据库操作。此外,Spring MVC还能够与其他Spring模块(如Spring Security、Spring WebSocket等)无缝集成,提供完整的解决...
在这个"Mastering Spring MVC 4(2015.09)源码"中,我们可以深入理解这个框架的核心概念和实际应用。 首先,Spring MVC 4基于Servlet 3.0规范,这意味着它可以利用异步处理能力,提高了Web应用的性能。通过Async...
以及`jstl.jar`和`javax.servlet.jsp.jstl.jar`,如果在JSP页面中使用JSTL标签。 在实际开发中,通常会通过Maven或Gradle等构建工具来管理这些依赖,避免版本冲突和手动添加jar包的繁琐工作。通过在项目中引入对应...
3. **配置Spring MVC**:在`pom.xml`或`build.gradle`文件中添加Spring MVC和Hibernate Validation的依赖。同时,在web.xml中配置Spring MVC的DispatcherServlet和ContextLoaderListener。 4. **编写业务逻辑**:...
9. **Maven或者Gradle构建**:项目可能使用Maven或Gradle进行依赖管理和构建,了解如何在pom.xml或build.gradle中添加和管理Spring MVC和Hibernate的依赖。 10. **单元测试和集成测试**:学习如何使用JUnit和...
要使用Spring MVC,首先需要在项目中引入Spring MVC的依赖,并配置Spring的DispatcherServlet,它是Spring MVC的前端控制器,负责调度请求到相应的处理器。 3. **Controller** Controller是处理请求的组件,通常...
在"SpringMVC_01"这个压缩包中,你可能会找到相关的配置文件(如`spring-mvc.xml`或Java配置类)、Controller类、Model类以及视图文件(如JSP)。通过分析这些源码,你可以更好地理解Spring MVC的工作流程和各个组件...
在本示例中,我们将深入探讨如何使用Spring MVC框架与Hibernate ORM工具来实现一个基本的添加功能。Spring MVC是Spring框架的一个模块,专门用于构建Web应用程序,而Hibernate则是一个流行的Java对象关系映射(ORM)...
**Spring MVC 框架学习总结** Spring MVC 是 Spring 框架的一部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)架构。Spring MVC 提供了一个灵活、可扩展的环境,使开发者可以专注于业务逻辑,而无需...
Spring Validator验证是Spring MVC框架中的一个关键特性,用于在服务器端对用户输入数据进行校验。在Spring MVC 3.0版本中,引入了注解驱动的验证方式,极大地简化了验证逻辑,使得开发者能够更加方便地处理表单数据...
在本项目中,可能使用了Spring MVC的MultiPartResolver来处理文件上传请求。上传的文件会被暂时存储在服务器上,然后根据业务需求进行处理,如保存到数据库、移动到特定目录等。 综上所述,"Maven+Spring MVC +...
Servlet、JSP和Spring MVC是Java Web开发中的三个重要技术,它们在构建动态网页和企业级应用程序中扮演着核心角色。下面将详细解释这三个技术及其相互关系。 **Servlet** 是Java编程语言中的一种接口,由Java ...
在实际开发中,Spring MVC还可以与Spring Boot结合,简化项目初始化和配置,同时可以集成其他Spring生态中的组件,如MyBatis或JPA进行数据访问,Acegi或Spring Security进行权限管理,Spring Data JPA进行ORM操作等...
15. **上传文件**:Spring MVC 使用 `MultipartFile` 类处理文件上传,可以通过 `@RequestParam("file") MultipartFile file` 获取上传的文件。 16. **模板引擎**:除了传统的 JSP,Spring MVC 还支持 Thymeleaf 等...
Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、高性能和灵活的Web应用程序。它作为Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构,简化了处理HTTP请求和响应的复杂性。这个压缩包包含了...