SpringMVC

MVC是三层架构的基础,使用了核心控制器统一处理请求,参数,转发,响应结果

可以减少servlet的数量

可以减少servlet的负担

SpringMVC在spring的基础上提出了基于MVC的web结构

SpringMVC输入参数

基本类型

对象类型

web对象类型

        HttpServletRequst

        HttpServletResponse

        HttpSession

支持数组类型

自定义转换类型

日期类型可以直接使用注解实现

SpringMVC的返回结果的处理

主要是通过ModelAndView对返回结果统一处理

ModelAndView的返回方式有两种

        转发,受到视图解析器的影响

        重定向

对数据的处理

        主要是通过mv.addobject(key,value)将数据保存

        默认情况下是保存在request的setAttribute中

         也可以通过注解@SessionAttributes放入到session中

SpringMVC对JSON的处理       

        可以使用默认自带的jackson进行处理

        也可以使用Fastjson进行处理

                方式一:在头部加上ResponseBody

                方式二:直接使用RestController

        对请求的json格式的处理

                请求的参数如果是json,那么则使用了@RequstBody修饰参数对象             

    @RequestMapping("/t2")
    public String t2(@RequestBody UserEntity userEntity){
        System.out.println(userEntity.toString());
        return "获取结果";
    }

        json的日期格式处理

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

SpringMVC的json的常用的注解操作

        日期格式的操作

                在jackson的直接使用@jsonFormat进行交换

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

                属性名修改操作

                        在jackson可以通过注解@jsonPropertry设置json输出参数的值

 @JsonProperty("password")   
 String pwd;

        忽略相关属性

                在jackson中可以通过注解@jsonlgnore设置忽略属性

  @JsonIgnore
    String pwd;

        null和empty属性排除

                属性如果未null的时候,那么不转换成json格式

                如果属性是空字符串,例如"",或者是List长度为0,那么不转换json格式

        自定义序列

                创建一个序列化执行的类

public class MySerializer extends JsonSerializer<Double> {
    @Override
    public void serialize(Double value, //原始值
                          JsonGenerator jsonGenerator,//json输出对象
                          SerializerProvider serializerProvider) throws IOException {
        //进行四舍五入
        String number = BigDecimal.valueOf(value).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
        //输出结果
        jsonGenerator.writeNumber(number);
    }
}

     在类的属性上,通过注解使用                 

    @JsonSerialize(using = MySerializer.class)
    Double money = 100.126; //输出的时候,想要100.13

SpringMVC的Fastjson的使用

        导入fastJSON的依赖包

<!-- FastJson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.54</version>
</dependency>

需要在springmvc.xml中配置

<mvc:annotation-driven>
    <!-- 安装FastJson,转换器 -->
    <mvc:message-converters>
        <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
            <!-- 声明转换类型:json -->
            <property name="supportedMediaTypes">
                <list>
                    <value>application/json</value>
                </list>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

常用的注解

        日期格式化:@JSONField(fromat="yyyy/MM/dd")

        属性名修改:@JSONField(name="birth")

        忽略属性:@JSONField(seriailze=false)

  • 包含null值@JSONField(serialzeFeatures = SerializerFeature.WriteMapNullValue) 默认会忽略所有null值,有此注解会输出null

    • @JSONField(serialzeFeatures = SerializerFeature.WriteNullStringAsEmpty) null的String输出为""

  • 自定义序列化:@JSONField(serializeUsing = MySerializer2.class)

拦截器和过滤器的区别

        实现机制不同

                过滤器是tomcat自带的组件,和tomcat容器相关

                拦截器是spring通过AOP机制实现的,和tomcat容器无关

        执行顺序不同

                过滤器先执行,拦截器后执行

        拦截器会被springMVC,可以通过@Autowired获取容器中的bean

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值