Spring MVC源码探究

作为一名合格的java程序员,要多深入学习一些框架,理解框架的设计的方法,背后的原理,spring mvc框架中使用了很多设计模式,比如策略模式,Spring MVC中大量使用了策略模式,像HandlerMapping接口,HandlerAdapter接口,ViewResolver接口都使用了策略模式,在执行handler和Interceptor拦截器的时候使用了责任链模式,在执行handler的时候会用到适配器模式等等,可以说沉淀了很多前辈的精华,想成为架构师的话,学习源码必不可少,下面就围绕着Spring MVC 的前端控制器DispatcherServlet一步一步的来学习Spring MVC的源码。 1 web.xml中DispatcherServlet的配置web.xml中的Spring MVC的前端控制器DispatcherServlet的配置,所有后端Controller的请求都由这个DispatcherServlet分发。 123456789101112<servlet> <servlet-name>MySpringServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-mvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>MySpringServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>

spring框架

使用Spring boot 创建RestFul服务

准备工作1.JDK82.Maven 3.0+ 程序要实现的简单功能当用户访问 http://localhost:8080/greeting 返回一个默认的Json字符串 {"id":1,"content":"Hello, World!"} 当用户访问 http://localhost:8080/greeting?name=User 返回 name后面的参数在后台组成的字符串 {"id":1,"content":"Hello, User!"} 创建Maven项目创建一个普通的maven项目,添加maven依赖如下:

spring框架

Redis 整合Spring

Redis是一种性能非常高效的Key-Value数据库,在企业项目开发中应用广泛,因为一直用Spring,所以决定使用Spring支持的spring-data-redis,java中Redis有多种客户端,Spring推荐的是Jedis,这篇文章就是基于Jedis的。 SDR(Spring Data Redis)简介**SDR(Spring Data Redis)**支持低层次的通过连接器connector连接到Redis,支持高层次的友好的模板类RedisTemplate,RedisTemplate是建立在低级别的connection基础之上。RedisConnection接收或返回字节数组需要自身处理连接,比如关闭连接,而RedisTemplate负责处理串行化和反串行化,并且管理对连接进行管理。RedisTemplate提供操作视图,比如(Bound)ValueOperations,(Bound)ListOperations,(Bound)SetOperations,(Bound)ZSetOperations,(Bound)HashOperations。RedisTemplate是线程安全的,能够用于多个实例中。RedisTemplate默认选择java-based串行化,也可以切换为其它的串行化方式,或者设置enabledDefaultSerializer为false或者设置串行化器为null,则RedisTemplate用raw byte arrays表示数据。SDR连接到redis通过RedisConnectionFactory来获得有效的RedisConnection。RedisConnection负责建立和处理和redis后端通信。RedisConnection提供getNativeconnection返回用来通信的底层connection。 Maven的pom.xml文件配置在dependencies中添加两个依赖,分别是spring-data-redis和jedis 12345678910111213<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.4.2.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.6.2</version> <type>jar</type> <scope>compile</scope> </dependency>

spring框架

Spring MVC 数据类型绑定

今天遇到一个问题,使用Spring MVC 从页面传递一个用户List到Controller,然后再后台解析List得到多个用户对象,在网上搜了很多答案感觉都不行,后来调试代码发现,最关键在于:List需要绑定在对象(ActionForm),直接写在request-mapping函数的参数是不行的,更重要的一点是要创建对象(ArrayList)。 之前的Jsp代码是这么写的 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162<form action="insertInsureUser.do" method="post"> <div class="form_left">开始时间:</div> <div class="form_right"> <input name="insureObject.startTime"/> </div> <div class="form_left">产品代码:</div> <div class="form_right"> <input name="insureObject.productCode"/> <h2>投保人信息</h2> </div> <div class="form_left">姓名:</div> <div class="form_right"> <input name="insureObject.insureUser[0].startTime"/> </div> <div class="form_left">身份证号:</div> <div class="form_right"> <input name="insureObject.insureUser[0].idCard"/> </div> <div class="form_left">性别:</div> <div class="form_right"> <input name="insureObject.insureUser[0].sex"/> </div> <div class="form_left">地址:</div> <div class="form_right"> <input name="insureObject.insureUser[0].address"/> </div> <div class="form_left">邮箱:</div> <div class="form_right"> <input name="insureObject.insureUser[0].email"/> </div> <div class="form_left">电话号码:</div> <div class="form_right"> <input name="insureObject.insureUser[0].phone"/> </div> <h2>被保人信息</h2> </div> <div class="form_left">姓名:</div> <div class="form_right"> <input name="insureObject.insureUser[1].startTime"/> </div> <div class="form_left">身份证号:</div> <div class="form_right"> <input name="insureObject.insureUser[1].idCard"/> </div> <div class="form_left">性别:</div> <div class="form_right"> <input name="insureObject.insureUser[1].sex"/> </div> <div class="form_left">地址:</div> <div class="form_right"> <input name="insureObject.insureUser[1].address"/> </div> <div class="form_left">邮箱:</div> <div class="form_right"> <input name="insureObject.insureUser[1].email"/> </div> <div class="form_left">电话号码:</div> <div class="form_right"> <input name="insureObject.insureUser[1].phone"/> </div></form>

spring框架

本站由 Hank Zhao 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
本站总访问量