# springmvc学习笔记(22)-springmvc开发小结

标签: springmvc


Contents


本文对springmvc系列博文进行小结

springmvc框架

springmvc_核心架构图

注解开发

使用注解方式的处理器映射器和适配器

<!--注解映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!--注解适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

在实际开发,使用<mvc:annotation-driven>代替上边处理器映射器和适配器配置。

映射成功后,springmvc框架生成一个Handler对象,对象中只包括 一个映射成功的method。

注解开发中参数绑定

将request请求过来的key/value的数据(理解一个串),通过转换(参数绑定的一部分),将key/value串转成形参,将转换后的结果传给形参(整个参数绑定过程)。

springmvc所支持参数绑定:

注意:形参中即有pojo类型又有简单类型,参数绑定互不影响。

自定义参数绑定

定义的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和struts2区别

springmvc面向方法开发的(更接近service接口的开发方式),struts2面向类开发。

springmvc可以单例开发,struts2只能是多例开发。

校验

服务端校验:

一般使用hibernate的校验框架,依赖hibernate-validator.jar,jboss-logging.jar,validation-api.jar这几个jar包

开发步骤

分组校验

数据回显

数据回显有三种方法

异常处理

系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理。

springmvc提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。

全局异常处理器处理思路:

解析出异常类型

抛出异常的位置

上传图片

开发步骤

json数据交互

两种json数据交互的形式:

需要的依赖:

在注解适配器中加入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格式数据

RESTful支持

@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接口。接口中提供三个方法。可以从名称和参数看出各个接口的顺序和作用

拦截器的配置

拦截器测试及其应用

链式执行测试

应用