springmvc是現在很是流行的web開發框架之一。我我的很是喜歡它約定優於配置的理念。它暴露出很是多的接口,可讓用戶自定義本身的實現,從而能夠知足你們的各類各樣的需求。java
而springmvc也不單單是一個「插板」。它也提供了很是多經常使用的接口實現,通常地,使用它自帶的實現類也便可知足大部分的需求了。git
看了周邊好多開發者使用springmvc,真的讓我很是啼笑皆非。你們都把springmvc這麼神奇的框架,當作servlet來使用,依然是github
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(); } } }
有些人會說,這樣寫也沒什麼不對啊,業務照樣能夠正常跑啊。web
這就涉及到代碼侵入性的問題了,request、response這些對象都來自於web容器,使用這些對象牢牢和容器耦合在了一塊兒,不便於單元測試。還有mvc的controller層,原本應該處理業務的邏輯轉發工做,而不是這些數據獲取、驗證、數據輸出等等繁瑣的工做。並且重點是使用request、response對象來處理數據很是之麻煩,代碼也不容易重複使用,形成代碼冗餘,使用這種代碼的,每每controller方法冗長笨重,不易於閱讀和維護。spring
說到底,我是一個追求高雅代碼的人,絕對不能容忍這樣爛大街的代碼。springmvc已經提供給咱們很是多好用的接口,咱們能夠利用接口,避免直接操做request、response。mvc
本系列文章就來盤點一下springmvc中經常使用的一些接口:框架
每一個接口都給出了幾個使用示例,爲了簡單易懂,功能都不是很完整。dom
示例使用spring-boot 和 lombokide
spring-boot配置: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; } }
(其它文章再也不贅述環境配置)
示例源碼:
https://github.com/developframework/springmvc-demo
本人才疏學淺,不免會有錯誤,請springmvc的大神不要見笑。寫此係列盤點文章,也是對本身多年學習java和spring框架的總結。
java技術交流QQ羣:247276498