文档章节

盘点springmvc的常用接口

_Core
 _Core
发布于 2016/07/02 16:10
字数 760
阅读 2108
收藏 11

盘点springmvc的常用接口###

springmvc是如今非常流行的web开发框架之一。我个人非常喜欢它约定优于配置的理念。它暴露出非常多的接口,可以让用户自定义自己的实现,从而可以满足大家的各种各样的需求。

而springmvc也不仅仅是一个“插板”。它也提供了非常多常用的接口实现,一般地,使用它自带的实现类也即可满足大部分的需求了。

看了周边好多开发者使用springmvc,真的让我非常哭笑不得。大家都把springmvc这么神奇的框架,当做servlet来使用,依然是

public void demo(HttpServletRequest request, HttpServletResponse response) {
		String name = request.getParameter("name");
  		if (StringUtils.hasText(name)) {
			try {
				InputStream is = request.getInputStream();
				// do something

				response.getWriter().write("content");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

有些人会说,这样写也没什么不对啊,业务照样可以正常跑啊。

这就涉及到代码侵入性的问题了,request、response这些对象都来自于web容器,使用这些对象紧紧和容器耦合在了一起,不便于单元测试。还有mvc的controller层,本来应该处理业务的逻辑转发工作,而不是这些数据获取、验证、数据输出等等繁琐的工作。而且重点是使用request、response对象来处理数据非常之麻烦,代码也不容易重复使用,造成代码冗余,使用这种代码的,往往controller方法冗长笨重,不易于阅读和维护。

说到底,我是一个追求高雅代码的人,绝对不能容忍这样烂大街的代码。springmvc已经提供给我们非常多好用的接口,我们可以利用接口,避免直接操作request、response。

本系列文章就来盘点一下springmvc中常用的一些接口:

每个接口都给出了几个使用示例,为了简单易懂,功能都不是很完整。

示例使用spring-boot 和 lombok

spring-boot配置:

package com.demo;

import org.springframework.boot.SpringApplication;

public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(WebMvcConfiguration.class, args);
	}

}

springmvc配置类:

package com.demo;

import java.util.List;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import com.demo.mvc.component.PersonReturnValueHandler;

@SpringBootApplication
public class WebMvcConfiguration extends WebMvcConfigurationSupport {

}

实体类:

package com.demo.domain;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Person {

	private String firstName;

	private String lastName;

	@Override
	public String toString() {
		return firstName + " " + lastName;
	}
}

(其它文章不再赘述环境配置)

关于lombok

示例源码:

https://github.com/developframework/springmvc-demo

本人才疏学浅,难免会有错误,请springmvc的大神不要见笑。写此系列盘点文章,也是对自己多年学习java和spring框架的总结。

java技术交流QQ群:247276498

© 著作权归作者所有

_Core
粉丝 22
博文 12
码字总数 14027
作品 0
嘉兴
程序员
私信 提问
加载中

评论(2)

安小乐
安小乐
ddd👍
110hxl
110hxl
:bowtie:支持
7.盘点springmvc的常用接口之Converter(下篇)

前两章介绍了、以及衍生出来的、,最后附录罗列了Spring自带的各种转换器。这么多的转换器,我们开发者可不想在要使用转换器时还自己来查找转换器使用。所以为了统一调用进行类型转换,Sprin...

_Core
2016/07/05
579
0
4.盘点springmvc的常用接口之PropertyEditor

严格上来说,其实并不能算spring框架的接口,很明显看包名就明白此类是JDK自带的。是Sun所制定的一套JavaBean规范,是为IDE图形化界面准备设置属性值的接口。看接口源码上的说明: 这接口原本...

_Core
2016/07/04
1K
0
Spring Boot "Redis" 缓存使用姿势盘点

1. Redis 简介 Redis 是目前业界使用最广泛的内存数据存储。相比 Memcached,Redis 支持更丰富的数据结构,例如 hashes, lists, sets 等,同时支持数据持久化。除此之外,Redis 还提供一些类...

游客bzrhwp4g2xeam
09/28
0
0
3.盘点springmvc的常用接口之HttpMessageConverter

前言 举例: POST http://localhost:8080/demo3 传入富文本数据流:Bill Gates 在controller中获得Person对象并响应Person内容:Bill Gates 原始写法: 可以看到原始写法把实体的序列化反序列...

_Core
2016/07/02
788
0
6.盘点springmvc的常用接口之Converter(中篇)

上一章简单介绍了接口的使用,接口是用于明确原类型和目标类型之间的转换。 那么怎么才能从原类型转换到某一类的目标类型呢?比如字符串转枚举类型,我有PersonType和PersonStatus两个枚举类...

_Core
2016/07/05
739
0

没有更多内容

加载失败,请刷新页面

加载更多

MongoDB系列-解决面试中可能遇到的MongoDB复制集(replica set)问题

关注我,可以获取最新知识、经典面试题以及微服务技术分享   MongoDB复制集(replica set):MongoDB复制集维护相同数据集的一组mongod进程,复制集是生产部署的基础,具有数据冗余以及高可用...

ccww_
21分钟前
2
0
SpringBoot系列:Spring Boot集成Spring Cache,使用RedisCache

前面的章节,讲解了Spring Boot集成Spring Cache,Spring Cache已经完成了多种Cache的实现,包括EhCache、RedisCache、ConcurrentMapCache等。 这一节我们来看看Spring Cache使用RedisCache。...

杨小格子
29分钟前
2
0
OpenJDK之CountDownLatch

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CountDownLatch是Doug Lea在JDK1.5中引入的,作用就不详细描述了, await()方法,如果还有线程在执行,那么当前线程...

克虏伯
36分钟前
2
0
简单编程

1.编写一个程序,提示用户输入名和姓,然后以“名,姓”的格式打印出来。 #include<stdio.h>int main(){char name[3];char family[3];printf("Please input your name and family:\n...

电子工程197沈志初
40分钟前
4
0
详解Mysql分布式事务XA(跨数据库事务)

在开发中,为了降低单点压力,通常会根据业务情况进行分表分库,将表分布在不同的库中(库可能分布在不同的机器上)。在这种场景下,事务的提交会变得相对复杂,因为多个节点(库)的存在,可...

slagga
45分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部