程序员修炼营
免费分享最新的编程资源、实用工具等。
这是高并发秒杀项目的第三部分啦,前两篇没看的话可以看看这里:
这一部分主要介绍秒杀业务Web层的设计和实现,使用SpringMVC整合spring,实现秒杀restful接⼝。
一、设计Restful接口
1)前端交互流程设计
①前端页面流程如下:
②详情页流程逻辑如下:
2)Restful接口设计
①Restful接口是一种优雅的url表述方式,它表示着一种资源的状态或者状态的转移。
②几个Restful规范:
1) GET -> 查询操作
2) POST -> 添加/修改操作
3) PUT -> 修改操作
4) DELETE -> 删除操作
③简单的URL设计规范:
/模块/资源//集合1/…
例如:
/user//friends -> 好友列表
/user//followers -> 关注者列表
④秒杀业务API的URL设计
GET /seckill/list -> 秒杀商品列表
GET /seckill//detail -> 秒杀详情页
GET /seckill/time/now -> 系统时间
POST /seckill//exposer -> 暴露秒杀
POST /seckill///execution -> 执行秒杀
二、SpringMVC整合Spring
1)SpringMVC的运行流程
我们使用的SpringMVC始终都是围绕的Handler进行开发
SpringMVC的运行流程如下:
具体过程为:
①用户发出请求,所有的请求都会映射到DispatcherServlet中,这相当于一个中央控制器,它会拦截用户的所有请求。
②DispatcherServlet拦截到请求后,首先会用到DefaultAnnotationHandlerMapping,它的主要作用是用来映射URL。
③映射完成后会用到默认的DefaultAnnotationHandlerAdapter,用来作Handler的适配,如果其中用到了拦截器的话,也会将拦截器绑定到流程当中。
④然后会衔接到我们要开发的Controller部分。
⑤上一步的结果产出到了ModelAndView中,用一个字符串表示,相当于一个jsp页面,同时会交付到Servlet中,即中央控制器DispatcherServlet。
⑥DispatcherServlet会发现你应用的是一个InternalResourceViewResolver,这其实就是一个jsp的view。
⑦接下来DispatcherServlet就会把Model和jsp相结合。
⑧最终将结果返回给用户。
2)HTTP请求地址映射原理
发送的HTTP请求首先会到Servlet容器当中,然后通过SpringMVCHandlerMapping来映射URL,分为注解、xml配置、编程等方式,然后会对应到后端我们自己实现的Handler处理方法。
3)整合配置SpringMVC框架
①配置WEB-INF下的web.xml文件,配置springMVC所需要的配置文件spring-*.xml到DispatcherServlet。
②配置spring-web.xml。resources/spring目录下新建spring-web.xml文件。
SSM框架整合流程为:DAO层(Mybatis)、Service层、Web层 -> Spring ->Spring MVC。Web层、Serivce层的bean、Mybatis中的接口注入(整合)到Spring IOC容器中(通过XML文件注入),再通过Spring MVC的web.xml文件加载Spring的xml文件,把所有bean都注入到Spring IOC容器中,Spring MVC框架中的Controller类等就能使用了。
三、实现秒杀相关的Restful接口
①新建Controller包,下面新建SeckillController类
②同时在dto中加入json数据的封装泛型类,注意这种包装json数据的泛型类的使用方法
四、基于Bootstrap开发页面结构
使用 Jsp + Bootstrap 开发前端页面,具体的页面可以在源代码中查看,这里不做记录了。 之后配置tomcat服务器启动项目测试。
访问http://localhost:8080/seckill/list
成功
五、交互逻辑实现
1)cookie登录交互
这里使用到了jQuery cookie的操作插件。
新建webapp/resources/script/seckill.js文件,用于实现cookie登录交互逻辑
这里只是简单的验证手机号进行登录,再次启动项目验证登录效果
成功
2)计时交互
这里使用到了jQuery countDown的倒计时插件。
在seckill.js中增加计时交互逻辑
启动项目进行验证
成功
3)秒杀交互
在seckill.js中继续增加最后有关秒杀的交互逻辑
启动项目进行秒杀测试
成功
到此整个秒杀系统的Web部分已经全部完成,下一节将简单介绍一下关于项目的高并发优化部分。
领取专属 10元无门槛券
私享最新 技术干货