在上文中,我们演示了SpringMVCMaven单模块SSM整合,一些中大型项目,我希望采用Maven多模块构建方式来搭建SSM整合项目。下面在IDEA中演示如何使用Maven的多模块方式构建SSM项目。Maven多模块构建SSH项目架构图:1建立parent工程1.1建立父工程模块1.2配置父工程的pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="ht
本文讲解使用Maven单模块方式进行SpringMVC+Spring+MyBatis整合。为了把整合步骤体现地更加清晰,我们可以把步骤分为以下六个部分:准备数据库环境单独搭建Spring环境单独搭建SpringMVC环境Spring整合SpringMVC单独搭建MyBatis环境MyBatis整合Spring1准备数据库环境1.1创建ssm数据库1.2建立测试表CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`username`varchar(32)NOTNULLCOMMENT'用户名称',`birthday`datetimeDEFAULT
SpringMVC提供了表单数据验证功能,下面看看如何实现?1导入数据验证依赖包SpringMVC表单数据验证需要先依赖相关包:<!--验证器所需的包--><dependency><groupId>com.fasterxml</groupId><artifactId>classmate</artifactId><version>1.4.0</version></dependency><dependency><groupId>org.jboss.logging<
在控制器的方法发生异常后,默认情况会显示Tomcat的500页面,这种用户体验并不好。如果我们在每个控制器方法自行捕获异常,显然又太繁琐。有没有好的异常处理办法呢?有的,就是SpringMVC的全局异常处理机制。SpringMVC提供了两种全局异常处理机制:定义异常类,实现HandlerExceptionResolver接口定义异常类,使用@ControllerAdvice+@ExceptionHandler注解下面看看实现步骤。1编写控制器,模拟异常packagecom.yiidian.controller;importorg.springframework.stereotype.Contr
SpringMVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。要使用SpringMVC中的拦截器,就需要对拦截器类进行定义和配置。通常拦截器类可以通过两种方式来定义。通过实现HandlerInterceptor接口继承HandlerInterceptor接口的实现类(如:HandlerInterceptorAdapter)来定义。1编写目标控制器首先,为了演示SpringMVC拦截器的效果,我们先定义一个目标控制器HelloController目
刚才讲解了SpringMVC实现文件上传,接着,我们看看SpringMVC如何实现文件下载。1准备下载的文件2设计下载页面<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>一点教程网-文件下载</title></head><body><h3>SpringMVC文件下载</h3><ahref="/down">下
文件上传是表现层常见的需求,在SpringMVC中底层使用Apache的CommonsFileUpload工具来完成文件上传,对其进行封装,让开发者使用起来更加方便。接下来看看如何开发?1导入common-fileupload包<!--commons-fileUpload--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version&
1什么是RESTful风格?RESTful,也叫REST(英文:RepresentationalStateTransfer,简称REST)描述了一个架构样式的网络系统,比如web应用程序。它首次出现在2000年RoyFielding的博士论文中,他是HTTP规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(SimpleObjectAccessprotocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计
我们在开发中后端经常需要接受来自于前端传递的Json字符串数据,怎么把Json字符串转换为Java对象呢?后端也经常需要给前端返回Json字符串,怎么把Java对象数据转换为Json字符串返回呢?接下来我们看看如何使用@RequestBody和@ResponseBody注解。1导入jackson支持包SpringMVC默认是无法实现Json数据转换功能的,需要额外导入Jackson包来支持Json数据转换。pom.xml配置:<!--jackson支持包--><dependency><groupId>com.fasterxml.jackson.core<
SpringMVC的控制器方法返回值可以支持多种写法,每种写法的场景和效果都不一样。下面分别来看看每种返回值的使用。普通字符串转发字符串重定字符串voidModelAndViewJava对象1普通字符串返回普通字符串这种情况比较常见,主要用在我们处理完业务逻辑后,需要跳转到应用的其他页面。代码示例:/***1)字符串-普通字符串(代表页面名称,不是完整路径,最后经过视图解析器的解析)*优势:写法简单*劣势:只能转发到视图解析器指定的特定目录*/@RequestMapping("/string")publicStringstring(){System.out.println(
1@SessionAttributes作用默认情况下SpringMVC将模型中的数据存储到request域中。当一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中。2没有使用@SessionAttributes2.1编写Controllerpackagecom.yiidian.controller;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importo
1@ModelAttribute作用@ModelAttribute注解的作用,将请求参数绑定到Model对象。被@ModelAttribute注释的方法会在Controller每个方法执行前被执行(如果在一个Controller映射到多个URL时,要谨慎使用)。2@ModelAttribute使用位置在SpringMVC的Controller中使用@ModelAttribute时,其位置包括下面三种:应用在方法上应用在方法的参数上应用在方法上,并且方法同时使用@RequestMapping3应用在方法上3.1用在无返回值的方法1)编写ModelAttributeControllerpackag
SpringMVC应用中,我们经常需要在Controller将数据传递到JSP页面,除了可以通过HttpServletRequest域传递外,SpringMVC还提供了两个Api,分别为Model接口和ModelMap类。接下来看看如何使用?1编写控制器数据存入域packagecom.yiidian.controller;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.ui.ModelMap;importorg.springf
1无法访问静态资源的原因当SpringMVC配置的拦截路径为/或/*的时候,我们项目会无法访问静态资源文件,如:springmvc.xml配置:<servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>静态文件的位置:访问静态资源的效果:这种情况怎么解决呢?下面介绍三种SpringMVC访问静态资源的方案。2解决静态资源访问方案一2.1原理首先,我们要明白在Spri
SpringMVC提供@CookieValue方便我们获取指定Cookie数据。1设计表单<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>一点教程网-www.yiidian.com</title></head><body><h2>使用@CookieValue获取Cookie数据</h2><ahref="/param.do&
SpringMVC提供@RequestHeader注解方便我们获取请求头信息。1设计表单<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>一点教程网-www.yiidian.com</title></head><body><h2>使用@RequestHeader获取请求头数据</h2><ahref="/param.do&qu
在SpringMVC应用中,我们也经常需要使用到原生的ServletAPI来满足功能的开发需求。接下来介绍如何在SpringMVC中使用Servlet相关API。@RequestMapping("/param.do")publicvoidupdate(HttpServletRequestrequest,HttpServletResponseresponse,HttpSessionsession)throwsIOException{request.setAttribute("request","一点教程网");session.setAt
SpringMVC默认情况下可以对基本类型进行类型转换,例如可以将String转换为Integer,Double,Float等。但是SpringMVC并不能转换日期类型(java.util.Date),如果希望把字符串参数转换为日期类型,必须自定义类型转换器。接下来讲解如何自定义类型转换器。1设计表单<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>一点教程网-www.yiidian.com<
上节我们利用List集合来封装多个地址信息,其实把List集合换成Map集合也是可以的。下面,看看SpringMVC如何使用Map集合类型封装表单参数?1设计表单<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>一点教程网-www.yiidian.com</title></head><body><h2>Map集合类型参数封装</h2><
在之前SpringMVC使用包装Pojo类型一文中,我们是一个Address对象来接收一个地址信息,如果有多个地址信息怎么呢?这时我们可以使用List集合来封装。1设计表单<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>一点教程网-www.yiidian.com</title></head><body><h2>List集合类型参数封装</h2&
在SpringMVC的应用过程中,我们在后端经过需要将表单数据封装在一个包装Pojo类型中,所谓包装Pojo类型,就是Pojo对象中包含另一个Pojo对象,如下所示:/***用于封装表单数据*一点教程网-www.yiidian.com*/publicclassUser{privateStringusername;privateIntegerage;privateAddressaddress;//封装地址信息1设计表单<%@pagecontentType="text/html;charset=UTF-8"language="java"%><
之前我们接收参数的时候都是定义一个个的基本类型来接收,这样比较繁琐,SpringMVC提供了使用Pojo(或者称为JavaBean)类型来封装请求参数。1设计表单<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>一点教程网-www.yiidian.com</title></head><body><h2>Pojo类型参数封装</h2><
在使用SpringMVC接收基本参数类型的时候,我们发现如果控制器中形参的名称与表单的name名称不一致时,无法接收参数。这是可以使用@RequestParam注解解决这个问题。一、设计表单页面<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>一点教程网-www.yiidian.com</title></head><body><h2>参数封装-@Req
在SpringMVC表单如果是Post方法提交中文内容时,会出现乱码,效果如下:控制台输出:这是我们可以配置SpringMVC提供字符编码过滤器来解决问题。1配置字符编码过滤器<!--字符编码过滤器--><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><
SpringMVC支持对多种类型的请求参数进行封装基本类型Pojo对象类型包装Pojo对象类型List集合类型Map集合类型下面我们来先看看对基本参数类型的封装。1设计表单页面<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>一点教程网-www.yiidian.com</title></head><body><h2>基本类型参数封装</h2>
@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。1@RequestMapping常用属性1.1value属性指定控制器的方法URI/***控制器*一点教程网-www.yiidian.com*/@Controller@RequestMapping("/yiidian")publicclassHelloController{@RequestMapping("/hello.do")publicvoidhello(HttpServletRequestrequest,H
前面我们分析了SpringMVC的执行流程,以及SpringMVC的核心三大组件的作用,接下来我们对整个SpringMVC执行过程的核心源码进行解读。1DispathcerServlet属性配置我们看到在SpringMVC核心包里面有一个配置文件:DispathcerServlet.properties该配置提供许多的默认组件,这些组件为SpringMVC的执行提供了支持,其中划线部分就是我们之前说到的SpringMVC三大组件。2doDispatch方法源码追踪接着,我们可以看一下DispatcherServlet类的层次结构:从SpringMVC的执行流程我们知道,用户的请求最先到达就是D
本文介绍SpringMVC的三大组件,它们分别是处理器映射器(HandlerMapper),处理器适配器(HandlerAdapter),视图解析器(ViewResolver)。1处理器映射器1.1处理器映射器作用通过处理器映射,你可以将Web请求映射到正确的处理器Controller上。当接收到请求时,DispactherServlet将请求交给HandlerMapping处理器映射,让他检查请求并找到一个合适的HandlerExecutionChain,这个HandlerExecutionChain包含一个能处理该请求的处理器Controller。然后,DispactherServlet执
从刚才的SpringMVC入门程序中,我们大致明白了代码的书写过程,但是对SpringMVC每个元素的执行过程不太清楚,接下来我们分析SpringMVC的执行流程。1SpringMVC执行流程图用户发送出请求到前端控制器DispatcherServlet。DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。DispatcherServlet调用HandlerAdapter(处理器适配器)。Ha
本文讲解如何搭建SpringMVC的入门程序,使用IDEA2017开发工具,使用Maven作为构建工具。1创建Web项目填写项目名称建立好项目后,使用IDEA的插件把Java项目改为Web项目。注意:如果没有插件,可以在IDEA的插件市场搜索"JBLJavaToWeb"插件并安装最终项目结构如下:2导入SpringMVC依赖在项目的pom.xml导入SpringMVC的Maven依赖<dependencies><!--SpringMVC依赖--><dependency><groupId>org.springframework&