分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

秒杀系统-web

发布时间:2023-09-06 01:52责任编辑:沈小雨关键词:暂无标签

 秒杀系统Web层主要涉及前端交互设计、Restful:url满足Restful设计规范、Spring MVC、bootstrap+jquery这四个方面的开发。秒杀系统的前端交互流程设计如下图6-3所示。

整合配置Spring MVC框架:在web.xml中进行我们前端控制器DispatcherServlet的配置,配置springMVC需要加载的配置文件spring-dao.xml,spring-service.xml和spring-web.xml,详细配置如下。web.xml:<servlet> ???<servlet-name>seckill-dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> ????????<init-param> ????????<param-name>contextConfigLocation</param-name> ????????<param-value>classpath:spring/spring-*.xml</param-value> ????</init-param></servlet><servlet-mapping> ????<servlet-name>seckill-dispatcher</servlet-name> ????<url-pattern>/</url-pattern></servlet-mapping>spring-web.xml:<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:mvc="http://www.springframework.org/schema/mvc" ??????xmlns:context="http://www.springframework.org/schema/context" ??????xsi:schemaLocation="http://www.springframework.org/schema/beans ???????http://www.springframework.org/schema/beans/spring-beans.xsd ???????http://www.springframework.org/schema/mvc ???????http://www.springframework.org/schema/mvc/spring-mvc.xsd ???????http://www.springframework.org/schema/context ???????http://www.springframework.org/schema/context/spring-context.xsd"> ???<mvc:annotation-driven/> ???<mvc:default-servlet-handler/> ???<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> ???????<property name="prefix" value="/WEB-INF/jsp/"/> ???????<property name="suffix" value=".jsp"/> ???</bean> ???<context:component-scan base-package="org.seckill.web"/></beans>完成Spring MVC的相关配置后,接下来就要基于Restful接口实现项目中的Controller开发。Controller中的每一个方法都对应我们系统中的一个资源URL,其设计应该遵循Restful接口的设计风格。在web包下创建一个SeckillController.java,内容如表6-11所示。
SeckillController.java:@Controller@RequestMapping("/seckill")public class SeckillController { ???private final Logger logger = LoggerFactory.getLogger(this.getClass()); ???@Autowired ???private SeckillService seckillService; ???@RequestMapping(value = "/list", method = RequestMethod.GET) ???public String list(Model model) { ???????List<Seckill> list = seckillService.getSeckillList(); ???????model.addAttribute("list", list); ???????//list.jsp + model = ModelAndView ???????return "list"; ???} ???@RequestMapping(value = "/{seckillId}/detail", method = RequestMethod.GET) ???public String detail(@PathVariable("seckillId") Long seckillId, Model model) { ???????if (seckillId == null) { ???????????return "redirect:/seckill/list"; ???????} ???????Seckill seckill = seckillService.getById(seckillId); ???????if (seckill == null) { ???????????return "forward:/seckill/list"; ???????} ???????model.addAttribute("seckill", seckill); ???????return "detail"; ???} ???@RequestMapping(value = "/{seckillId}/exposer", ???????????method = RequestMethod.POST, ???????????produces = {"application/json;charset=UTF-8"}) ???@ResponseBody ???public SeckillResult<Exposer> exposer(@PathVariable Long seckillId) { ???????SeckillResult<Exposer> result; ???????try { ???????????Exposer exposer = seckillService.exportSeckillUrl(seckillId); ???????????result = new SeckillResult<Exposer>(true, exposer); ???????} catch (Exception e) { ???????????logger.error(e.getMessage(), e); ???????????result = new SeckillResult<Exposer>(false, e.getMessage()); ???????} ???????return result; ???} ???@RequestMapping(value = "/{seckillId}/{md5}/execution", ???????????method = RequestMethod.POST, ???????????produces = {"application/json;charset=UTF-8"}) ???@ResponseBody ???public SeckillResult<SeckillExecution> execute(@PathVariable("seckillId") Long seckillId, ???@PathVariable("md5") String md5, ???@CookieValue(value = "killPhone", required = false) Long phone) { ???????//springmvc valid ???????if (phone == null) { ???????????return new SeckillResult<SeckillExecution>(false, "未注册"); ???????} ???????SeckillResult<SeckillExecution> result; ???????try { ???????????SeckillExecution execution = seckillService.executeSeckillProcedure(seckillId, phone, md5); ???????????return new SeckillResult<SeckillExecution>(true,execution); ???????} catch (RepeatKillException e) { ???????????SeckillExecution execution = new SeckillExecution(seckillId, SeckillStatEnum.REPEAT_KILL); ???????????return new SeckillResult<SeckillExecution>(true,execution); ???????} catch (SeckillCloseException e) { ??????????SeckillExecution execution = new SeckillExecution(seckillId, SeckillStatEnum.END); ???????????return new SeckillResult<SeckillExecution>(true,execution); ???????} catch (Exception e) { ???????????logger.error(e.getMessage(), e); ???????????SeckillExecution execution = new SeckillExecution(seckillId, SeckillStatEnum.INNER_ERROR); ???????????return new SeckillResult<SeckillExecution>(true,execution); ???????} ???} ???@RequestMapping(value = "/time/now",method = RequestMethod.GET) ???@ResponseBody ???public SeckillResult<Long> time(){ ???????Date now = new Date(); ???????return new SeckillResult(true,now.getTime()); ???}}json数据的一个Vo类,即SeckillResult.java,在dto包中创建它,内容如下。SeckillResult.java:public class SeckillResult<T> { ???private boolean success; ???private T data; ???private String error; ???public SeckillResult(boolean success, T data) { ???????this.success = success; ???????this.data = data; ???} ???public SeckillResult(boolean success, String error) { ???????this.success = success; ???????this.error = error; ???} ???public boolean isSuccess() { ???????return success; ???} ???public void setSuccess(boolean success) { ???????this.success = success; ???} ???public T getData() { ???????return data; ???} ???public void setData(T data) { ???????this.data = data; ???} ???public String getError() { ???????return error; ???} ???public void setError(String error) { ???????this.error = error; ???}}

秒杀系统-web

原文地址:https://www.cnblogs.com/smuxiaolei/p/8979768.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved