基于SSM实现高并发秒杀Web项目(三)

程序员修炼营

免费分享最新的编程资源、实用工具等。

这是高并发秒杀项目的第三部分啦,前两篇没看的话可以看看这里:

这一部分主要介绍秒杀业务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部分已经全部完成,下一节将简单介绍一下关于项目的高并发优化部分。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180601G1OIGO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券