随笔分类 - SpringMVC
摘要:上述代码设置了支持最大的上传大小为100M,如果文件超出大小,则会报错,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException,而这个时候,代码还没有执行到我们的Controller中,所以最好再配置一个异常处理解析器。如下:
阅读全文
摘要:校验规则是定义在实体中的,而同一个实体可以被多个Controller使用,此时就会有问题,即:不同的Controller方法对同一个实体进行校验,此时这些校验信息是共享在这不同的Controller方法中的,但是实际上每个Controller方法可能需要不同的校验,在这种情况下,就需要使用分组校验来解决这种问题。
或者说,一个实体中有很多属性,Controller中的方法一可能只需要校验实体中的属性1和属性2,而Controller中的方法二可能只需要校验实体中的属性3和属性4。这样的需求就需要用到分组校验了。
阅读全文
摘要:数据校验,顾名思义,就是对数据进行校验,比如在进行登录操作时,我们就需要对用户名和密码进行验证,最起码需要保证用户名和密码不能为空,其次还需要保证密码的长度在多少位之内,这就叫作数据校验。
数据校验分为客户端和服务端两种:
1、客户端校验:JS校验。
2、服务端校验:SpringMVC的validation、Struts的validation,都有自己的校验机制。
阅读全文
摘要:之前的教程,我们都已经学会了如何使用Spring MVC来进行开发,掌握了基本的开发方法,返回不同类型的结果也有了一定的了解,包括返回ModelAndView、返回List、Map等等,这里就包含了传统的开发方式,和写接口的开发方式。
传参我们也学了简单参数和复杂参数的传递和接收,但是在参数传递过程中,常常需要把表单中的参数映射到我们对象的属性中,比如前台传的是2018-01-01字符串,可是我们的实体类中定义的是Date类型的变量,这时就需要用到SpringMVC的自定义类型转换器了。
阅读全文
摘要:上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值。
一、返回ModelAndView
若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回ModelAndView较好。在使用时,若该处理器方法只是进行跳转而不传递数据,或只是传递数据而不跳转资源(比如对页面的Ajax异步响应),此时若返回ModelAndView,总有一部分多余,要么Model多余,要么View多余,此时返回ModelAndView不合适。
阅读全文
摘要:上一篇我们学习了简单的参数接收方式,以及对编码的统一处理。今天我们来接收对象参数。
一、接收对象参数
jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
阅读全文
摘要:上一篇我们学习了注解式开发的配置方式并写了一个小Demo跑起来。今天我们来学习注解开发的参数接收。处理器方法中的常用参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用。具体如下:
1:HttpServletRequest
2:HttpServletResponse
3:HttpSession
4:用户承载数据的Model
5:请求中所携带的请求参数
在进行参数接收之前我们先在/WebRoot/index.jsp下添加如下内容
阅读全文
摘要:上一篇我们结束了配置式开发,配置式开发目前在企业中用的并不是很多,大部分企业都在使用注解式开发,所以今天我们就来学习注解式开发。所谓SpringMVC注解式开发是指,处理器是基于注解的类的开发方式。对于每一个定义的处理器,无需在配置文件中逐个注册,只需在代码中通过对类与方法的注解,便可完成注册。
阅读全文
摘要:上一篇我们了解了开发一个Controller的4种方法,如果不记得的朋友可以看看上一篇博文,今天我们来继续了解SpringMVC的模型与视图ModelAndView。
一、什么是Model?
ModelAndView即模型与视图,通过addObject()方法向模型中添加数据,通过setViewName()方法来指定视图名称。查看源码,可以看到ModelAndView类中的模型model其实是个ModelMap,继续跟踪ModelMap,可以发现其实是继承自LinkedHashMap类的。而LinkedHashMap类正是一个双向的链表。如下:
阅读全文
摘要:在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器(Adapter)模式的:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题,而这正像是本模式所做的事情。当然,在这里并不对该模式进行深入研究。有兴趣的同学可以参考网上很好的一篇文章:https://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html
阅读全文
摘要:上一篇我们讲解了DispatcherServlet的url-pattern配置详解,今天我们来真正对SpringMVC进行配置式开发。
所谓配置式开发是指“处理器类是程序员自己定义的、实现了特定接口的类,然后在SpringMVC配置文件中对该类进行显式的,明确的注册”的开发方式。今天我们的开发还是将中央调度器的url-pattern配置成*.do。然后将springmvc.xml的静态资源访问先取消。handlerMapping接口负责根据request请求找到对应的Handler处理器及Interceptor拦截器,并将它们封装在HandlerExecutionChain对象中,返回给中央调度器。其常用的实现类有两种:
1、BeanNameUrlHandlerMapping
2、SimpleUrlHandlerMapping
阅读全文
摘要:在没有特别要求的情况下,SpringMVC的中央调度器DispatcherServlet的url-pattern常使用后缀匹配方式进行配置,如*.do、*.action
注意:这里的url-pattern不能写/*,因为DispatcherServlet会将向JSP的动态页面跳转请求也当作为普通的Controller来处理。中央调度器在调用处理器映射器来为其查找相应的处理器时,肯定找不到。所以在这种情况下,所有的JSP页面跳转都会变为404。
最好也不要写成/,因为DispatcherServlet会将向静态资源的请求当作为普通的Controller来处理。如.css、.jpg、.js等。所以静态资源也会变成404。
所以建议写成*.do、*.action之类的配置。当然也有一些时候不得不配置成/,当开发一些移动端接口采用restful请求时,需要配置成/。
阅读全文
摘要:当用户在浏览器中提交请求后首先进入我们的中央调度器,由中央调度器依次调用上图中的2、3、6、7步然后再返回到客户端。
2步骤:由中央调度器将请求交给处理器映射器,从而在处理器映射器中得到requestMapping和类的对应关系。
3步骤:中央调度器得到requestMapping和类的对应关系后,将该关系Map交给处理器适配器,由处理器适配器来调用具体的requestMapping对应的类的handleRequest方法。并在handleRequest方法执行后,返回给处理器适配器一个ModelAndView对象。
6步骤:中央调度器得到ModelAndView对象后,将ModelAndView对象交给ViewResolver视图解析器来进行视图的解析,将ModelAndView中的Model放到requestScope中。
7步骤:中央调度器进行视图渲染,渲染后并返回给用户。
阅读全文
摘要:一、SpringMVC概述
View Service Dao DB
Spring MVC interface interface Mysql
impls impls
SpringMVC也叫Spring web mvc,属于表现层框架。SpringMVC是Spring框架的一部分,是在Spring3.0后发布的。
二、第一个SpringMVC程序
阅读全文