标签: springmvc前端
[TOC]java
本文对springmvc系列博文进行小结程序员
DispatcherServlet
前端控制器:接收request,进行responseHandlerMapping
处理器映射器:根据url查找Handler。(能够经过xml配置方式,注解方式)HandlerAdapter
处理器适配器:根据特定规则去执行Handler,编写Handler时须要按照HandlerAdapter的要求去编写。Handler
处理器(后端控制器):须要程序员去编写,经常使用注解开发方式。
ModelAndView
,具体开发时Handler
返回方法值类型包括:ModelAndView
、String
(逻辑视图名)、void
(经过在Handler形参中添加request和response,相似原始 servlet开发方式,注意:能够经过指定response响应的结果类型实现json数据输出)View Resolver
视图解析器:根据逻辑视图名生成真正的视图(在springmvc中使用View对象表示)View
视图:jsp页面,仅是数据展现,没有业务逻辑。<!--注解映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!--注解适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
在实际开发,使用<mvc:annotation-driven>
代替上边处理器映射器和适配器配置。web
@controller
注解必需要加,做用标识类是一个Handler处理器。@requestMapping
注解必需要加,做用:
映射成功后,springmvc框架生成一个Handler对象,对象中只包括 一个映射成功的method。spring
将request请求过来的key/value的数据(理解一个串),经过转换(参数绑定的一部分),将key/value串转成形参,将转换后的结果传给形参(整个参数绑定过程)。json
springmvc所支持参数绑定:后端
HttpServletRequest
、response
、session
、model/modelMap
(将模型数据填充到request域)@RequestParam
(指定request请求的参数名),@RequestParam
加在形参的前边。HttpServletRequest request
参数,经过request接收查询条件参数。get/set
方法,action使用包装对象接收注意:形参中即有pojo类型又有简单类型,参数绑定互不影响。api
自定义参数绑定数组
定义的Converter<源类型,目标类型>
接口实现类,好比:Converter<String,Date>
,表示:将请求的日期数据串转成java中的日期类型。浏览器
注意:要转换的目标类型必定和接收的pojo中的属性类型一致。
将定义的Converter实现类注入处处理器适配器中。
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> <!-- conversionService --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <!-- 转换器 --> <property name="converters"> <list> <bean class="cn.itcast.ssm.controller.converter.CustomDateConverter"/> </list> </property> </bean>
springmvc面向方法开发的(更接近service接口的开发方式),struts2面向类开发。
springmvc能够单例开发,struts2只能是多例开发。
服务端校验:
通常使用hibernate的校验框架,依赖hibernate-validator.jar
,jboss-logging.jar
,validation-api.jar
这几个jar包
开发步骤
@Validated
来捕获和显示校验错误信息分组校验
数据回显有三种方法
@ModelAttribute
指定pojo回显到页面在request中的key@ModelAttribute
还能够将方法的返回值传到页面@ModelAttribute
系统的dao、service、controller出现都经过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理。
springmvc提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。
全局异常处理器处理思路:
解析出异常类型
抛出异常的位置
开发步骤
commons-fileupload
两种json数据交互的形式:
须要的依赖:
jackson-databind
jackson-mapper-asl
在注解适配器中加入messageConverters
<!--注解适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> </list> </property> </bean>
注意:若是使用<mvc:annotation-driven />
则不用定义上边的内容。
在controller的返回值上加注解@ResponseBody
来将java对象输出json,返回json格式数据
@RequestMapping(value="/ itemsView/{id}")
:{×××}
占位符,请求的URL能够是/viewItems/1
或/viewItems/2
,经过在方法中使用@PathVariable
获取{×××}中的×××变量。@PathVariable
用于将请求URL中的模板变量映射到功能处理方法的参数上。
若是@RequestMapping
中表示为/itemsView/{id}
,id和形参名称一致,@PathVariable
不用指定名称。
同时须要配置前端控制器。若要访问静态资源,还需在springmvc.xml中添加静态资源解析方法,如<mvc:resources location="/js/" mapping="/js/**"/>
定义拦截器,实现HandlerInterceptor
接口。接口中提供三个方法。能够从名称和参数看出各个接口的顺序和做用
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception
链式执行测试
应用