




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号 郑州成功财经学院毕业论文 设计 基于 JAVA 的网上商城设计与实现 系 部 名 称 信息工程系 专 业 名 称 计算机科学与技术 学 生 姓 名 陈峰 指 导 教 师 李晓东 讲师 二 一七年四月 II 摘要 随着互联网技术的发展 全世界几乎所有的行业都在互联网的影响下得到了 好的变化 互联网技术的逐渐成熟和发展 使生产力得到了巨大的发展 可以说 互联网是第四次工业革命也毫不为过 互联网的发展催生了电子商务 电子商务 的到来预示着网络营销潮流的到来 企业与客户之间的营销关系也正在逐渐由实 体店面销售转变为网络电子商务营销 越来越多的企业开设自己的网上购物平台 来吸引更多互联网客户 同时也大大降低了实体地点面营销的成本 在保证质量 的前提下 增加了企业的收益 本课题就是在这种环境下应运而生的 课题主要是利用 SSM 技术实现网上购 物商城的前台与后台系统 采用分布式与集群相配合的模式来开发和部署该系统 采用这种方法开发的商城系统不仅开发速度快 开发效率高 开发层次明确而且 还能能够承载大数据量的访问 而且这套系统对当下想要进军商城网站的商家来 说具有非常重要的参考价值 关键词 购物商城 SSM 技术 设计与实现 III Abstract With the development of Internet technology almost all industries all over the world in the Internet has been a good change Internet technology is gradually mature and development so that productivity has got enormous development can be said that the Internet is the fourth industrial revolution is also not too much The development of the Internet gave birth to e commerce The arrival of e commerce indicates the arrival of network marketing Between the enterprise and the customer relationship marketing is also gradually by the entity store sales into e commerce network marketing more and more enterprises set up their own online shopping platform to attract more customers to the Internet but also greatly reduces the cost of marketing entity location under the premise of guaranteeing quality increase the income of the enterprise This topic is in this environment came into being the main task is to use SSM technology to achieve online shopping mall front and back office system Using distributed and cluster matching model to develop and deploy the system using this method not only the development of shopping mall development speed high development efficiency but also a clear development level capable of carrying a large amount of data access and this system has very important reference value for the current Army wanted to enter the mall site businesses Key word Shopping mall SSM technology Design and Implementation IV IV 目录 1 绪论 1 1 1 研究的背景和意义 1 1 1 1 研究的背景 1 1 1 2 研究的意义 1 1 2 研究内容 1 1 3 论文组织结构 2 2 商城系统开发技术及工具介绍 3 2 1 商城开发的核心技术 3 2 1 1 Jsonp 简介 3 2 1 2 HttpClient 简介 4 2 1 3 Cookie 简介 5 2 1 4 Session 简介 6 2 1 5 Solr 简介 7 2 2 SSM 框架技术 8 2 2 1 框架技术概述 8 2 2 2 SpringMVC 框架 9 2 2 3 Mybatis 框架 10 2 2 4 Spring 框架 11 2 3 商城开发工具 11 2 3 1 Ecplipse 及其插件 11 2 3 2 Tomcat 服务器 12 V 2 3 3 MySQL 数据库 12 2 3 4 Redis 数据库 12 3 商城系统项目需求分析 14 3 1 目标 14 3 2 商城业务流程图 14 3 2 1 商城后台业务流程图 14 3 2 2 商城前台务流程图 15 4 商城系统设计及实现 17 4 1 商城总体开发架构 17 4 2 商城框架实现 18 4 2 1 Spring 整合 SpringMVC 18 4 2 2 Spring 整合 Mybatis 19 4 2 3 Spring 整合 Jedis 20 4 3 商城主要功能模块实现 21 4 3 1 商城后台商品管理实现 21 4 3 2 商城后台内容管理实现 24 4 3 3 商城前台单点登录的实现 26 4 3 4 商城前台 solr 全文搜索的实现 29 5 商城系统运行结果 32 5 1 商城后台运行结果 32 5 1 1 商城前台新增产品 32 5 1 2 商城前台商品内容管理 33 5 2 商城前台运行结果 34 VI 5 2 1 商城前台用户搜索 34 5 2 2 商城前台用户注册 35 5 2 3 商城用户购物车 36 6 总结以及展望 38 参考文献 39 致谢 40 1 1 绪论 1 1 研究的背景和意义 1 1 1 1 1 1 研究的背景研究的背景 在衣食等购买方面 传统的方式是我们需要花费时间到固定的地方挑选 假设购买的东西多还需要额外的花费去运输 但是随着中国经济的快速发展 人 们对物质生活要求的提升 工作时间的不充足 购买量偏大这些问题往往会使我 们感到厌烦 如何改善人们的购物体验 如何使商家与顾客实现共赢 人们一直 在尝试各种办法解决这个问题 随着互联网技术的发展 网络与人们的日常生活也产生了千丝万缕的关系 信息技术也改变了人们的思维方式 现在越来越多的人通过互联网来完成自己想 做的事情 随着数据库 计算机硬件 存储技术的发展 信息技术已经覆盖到日 常生活的各个方面 现在人们已经离不开互联网了 网上购物商城就是在这种大 趋势的推动下产生的 1 1 2 1 1 2 研究的意义研究的意义 在衣食等方面网上购物商城充当着一个重要的角色 在以往我们需要花费时 间去挑选去到固定的地方去买 而现在我们只需要动动我们的手指很多东西就可 以送货上门 可以证明商城很火爆的一个列子是天猫双十一 可以说是开辟了网 上购物的一个春天 成交量超过千亿 可以说明现在互联网购物商城方面的一个 发展趋势 1 2 研究内容 本系统采用 SSM 搭建的分布式项目 使用 Maven 管理 Jar 使用 Git 作为版本 的管理工具 由此将项目分为如下几个模块 1 后台管理 包括管理员对商品的增删改查 对商品规格参数的增删改查 2 主页展示 类似京东的主页面 让商品分类目展示 2 3 用户注册 用户登录成功之后才能让商品添加到购物车 用户才能购买商 品 4 用户登录 登录使用的Redis Session 技术实现的单点登录 即在一个项 目登录后其他项目无需登录 5 Solr 全文搜索引擎 用基于Lucene 开发的 Solr 作为搜索引擎 6 购物车 基于Cookie Jsession 模拟的 Cookie Redis 进行用户购物信息的 操作 1 3 论文组织结构 第 1 章 阐述了商城项目研究的背景与意义以及论文的组织结构 第 2 章 介绍了在商城项目中用到的 JavaWEB 技术以及开发工具以及 Eclipse 中比较好的插件的用法 第 3 章 介绍了该系统的基本功能需求以及业务流程 第 4 章 实现对 ssm 框架的整合 对商城主要功能模块的时间 第 5 章 对网上商城的前台后台进行一些数据测试保证其健壮性 稳定性 第 6 章 总结商城开发过程中用到的问题 分析优势与不足 明确下一步的工 作内容 3 2 商城系统开发技术及工具介绍 2 1 商城开发的核心技术 2 1 1 2 1 1 JsonpJsonp 简介简介 跨域的基本概念 不同服务器或者同一个服务器不同的端口号他们之间进行 通信这就叫做跨域 在商城项目中单点登录要实现在一个地方登录其他地方不用再重新登录 在 这个地方需要用到跨域 在 JSP 页面使用跨域要用到 Jsonp Jsonp Jsonp 就是 JSON 的特殊使用法 因为 Ajax 无法接收到跨域的 Json 类 型数据 Jsonp 让跨域时返回的是一个脚本文件 脚本文件中包含了 回调函数及 JSON 数据 JSONP 的使用步骤 客户端需要重点设置以下三个属性 1 dataType jsonp 响应结果类型 2 jsonp callback 请求时传递回调方法名的参数名 3 jsonpCallback abc 传递过去的回调方法名 代码示例如下 ajax url http localhost 8081 demo 4 dataType jsonp jsonp callback jsonpCallback abc type POST success function data alert data a 匿名方式 data b 服务器端使用的是由 Spring 封装的 MappingJacksonValue 它返回 jsonp 需 要的数据格式 他要注意的是几个属性 produces string 设置响应头中 Content Type 响应内容类型 代码示例如下 RequestMapping value demo produces MediaType APPLICATIO N JSON UTF8 VALUE ResponseBody public MappingJacksonValue show String callback Map map new HashMap map put a a1 map put b b1 MappingJacksonValue mjv new MappingJacksonValue map mjv setJsonpFunction callback return mjv 2 1 2 2 1 2 HttpClientHttpClient 简介简介 分布式项目中不同子项目之间进行信息传输需要跨域 而 HttpClient 是用 5 Java 代码的方式进行的跨域信息交流 下面介绍一下 HttpClient HTTP 协议应该是互联网中最重要的协议 持续增长的 WEB 服务 互联网的家 用电器等都在继承并拓展着 Http 协议 向着浏览器之外的方向发展 虽然 JDK 中的 J 包中提供了一些基本的方法 通过 Http 协议来访问网络资源 但是大多数场景下 它都不够灵活和强大 HttpCilent 致力于填补这个空白 它 可以提供有效的 最新的 功能丰富的包来实现 Http 客户端 为了拓展 Httpclient 即支持基本的 Http 协议 还支持 Http aware 客户端程序 如 WEB 浏览器 WebServer 客户端 以及利用 OR 拓展 Http 协议的分布式系统 1 HttpClient 的范围 特性 是一个基于 Httpcore 的客户端 Http 传输类库基于传统的 阻塞 IO 内容 无关 2 HttpClient 不能做的事情 HttpClient 不是浏览器 它是一个客户端 HTTP 协议传输类库 HttpClient 被用来发送和接受 HTTP 消息 HttpClient 不会处理 HTTP 消息的 内容 不会进行 JavaScript 解析 不会关心 content type 如果没有明确设置 HttpClient T 也不会对请求进行格式化 重定向 URL 或者其他任何和 Http 消息传输相关的功能 代码示例如下 POST 请求 CloseableHttpClient httpClient HttpClients createDefault HttpPost post new HttpPost http localhost 8081 demo1 List params new ArrayList params add new BasicNameValuePair name 李四 params add new BasicNameValuePair age 15 6 post setEntity new UrlEncodedFormEntity params utf 8 CloseableHttpResponse response httpClient execute post String result EntityUtils toString response getEntity response close httpClient close GET 请求 public void doGetWithParam throws Exception CloseableHttpClient httpClient HttpClients createDefault URIBuilder uriBuilder new URIBuilder uriBuilder addParameter query 花千骨 HttpGet get new HttpGet uriBuilder build CloseableHttpResponse response httpClient execute get int statusCode response getStatusLine getStatusCode HttpEntity entity response getEntity String string EntityUtils toString entity utf 8 response close httpClient close 2 1 3 2 1 3 CookieCookie 简介简介 Cookie 概念 由服务器端产生 存放于客户端浏览器的文本文件 7 Cookie 原理 1 在服务器端实例化 Cookie 对象 里面只能存放字符串内容 Cookie 尽量不 要存放中文 2 设置 Cookie 的有效时间和作用域和有效路径 3 伴随重定向 随着响应对象响应给客户端浏览器 4 浏览器接收到 Cookie 内容进行 I O 操作 把 Cookie 存放与本地某个 Cookie 特定文件夹中 5 当用户在次发送请求时 只要能获取到某个或某些 Cookie 会由浏览器帮 助自动携带 Cookie 发送给服务端 服务器端示例代码如下 Cookie c new Cookie test 123 c setMaxAge 10 c setDomain c setPath cookie page res addCookie c res sendRedirect page index jsp 客户端代码示例如下 Cookie cs request getCookies if cs null for Cookie c cs out println c getName c getValue 8 2 1 4 2 1 4 SessionSession 简介简介 Session 是什么 由服务器端产生 存放于客户端浏览器的文本文件 Session 原理 1 在服务器端实例化 Cookie 对象 里面只能存放字符串内容 Cookie 尽量不 要存放中文 2 设置 Cookie 的有效时间和作用域和有效路径 3 伴随重定向 随着响应对象响应给客户端浏览器 4 浏览器接收到 Cookie 内容进行 I O 操作 把 Cookie 存放与本地某个 Cookie 特定文件夹中 5 当用户在次发送请求时 只要能获取到某个或某些 Cookie 会由浏览器帮 助自动携带 Cookie 发送给服务端 2 1 5 2 1 5 SolrSolr 简介简介 Solr 介绍 1 作用 一个搜索引擎 2 SOLR 实际是一个 WEB 项目 3 优点 搜索内容高亮 对搜索关键字的突出显示 搜索引擎方案 目前在国内希望实现全文搜索常用解决方案 9 1 使用 Baidu Google 提供的 API 2 使用基于 Apache 提供的 Lucene 搜索引擎实现 Solr 运行原理 Solr 实际上是基于 lucceen 开发的 需要通过 Solr 对外提供的接口 访 问 Solr 项目 Solr 接收请求 交由 SolrRequestHandler 处理请求 拆分请求内容 为 n 多个词条 一句话拆分成多段 根据词条内容 索引整个 Solr 中内容 最终相 应给用户一个 XML 格式的结果 也可以是备用结果 索引介绍 1 查询时 从头查询到结果一行一行的查询过程叫做顺序查询 2 索引 建立内容和索引内容之间关系 通过找到索引内容快速定位到具体内 容的过程就是索引查询 新华字典目录 3 solr 基于反向索引进行查询的 建立索引和内容之间关系 通过索引查找内 容的过程称为反向索引 2 2 SSM 框架技术 2 2 1 2 2 1 框架技术概述框架技术概述 框架是一种通用的半成品的软件 SSM 用了 MVC 的设计模式可以使程序易维 护扩展 使程序员之间的分工比较明确 使业务逻辑与视图进行分离 简化了程 序员的开发提高了工作效率 如图 2 1 就是框架技术在 MVC 三层模型所代表的角 色 10 图 2 1 框架在 MVC 中的角色 11 2 2 2 2 2 2 SpringMVCSpringMVC 框架框架 Springmvc 运行流程图如图 2 2 图 2 2SpringMVC 执行时序图 Springmvc 运行原理 在编程中都是以 spring webmvc jar 形式存在 SpringMVC 是基于 front 设计 模式研发出来的必须有入口地址 地址是 DispatcherServlet DispatcherServlet 也是一个 Servlet 在 SpringMVC 中 ServletAPI 被完整的支持 由于是一个 MVC 框架 所以核心是控制器 大部分执行 流程都是在控制器前后完成的 具体执行流程为 12 当用户发送请求后被 DispatcherSevlet 进行分发 然后转交给 HandlerMapping 进行验证格式是否合法 如果不合法报异常 如果合法向下传递交 给 HandlerAdapter 准备调用某个 Controller Controller 在进入之前一般都需 要执行 HandlerInterceptor 拦截器的 preHandle 方法 判断是否可以调用 Controller 如果可以调用才能进入 Controller 当 Controller 执行完成后再次 进入拦截的 postHandle 验证传递内容是否合法 如果合法交给 ViewResovler 视 图解析器调用具体的 View 视图资源 调用成功后再次进入拦截器的 afterCompletion 做最后验证 如果一切正确 响应给客户端 到此 SpirngMVC 执行结束 2 2 3 2 2 3 MybatisMybatis 框架框架 Mybatis 运行流程图如图 2 3 图 2 3MYBATIS 的执行流程 13 图 2 3Mybatis 的执行流程 Mybatis 是持久层框架 内部封装的 JDBC 不依赖于 SERVLET 容器在测试阶 段使用比较方便 它的运行原理如下 运行原理就是程序执行过程 平时编写代码时只需要把配置文件转换为流后 给交 SqlSessionFactoryBuilder 就会产生 SqlSessionFactory 但实际上底层是 这样实现的 实际上把配置文件流交由 XMLConfigBuilder 进行解析 解析后把所 有配置信息封装到 Configuration 中 再把 Configuration 传递给 DefaultSqlSession Factory 并实例化这个类在源码可以看出 DefaultSqlSessionFactory 是 SqlSessionFactory 的实现类 所以这个时候就产生了 SqlSessionFactory 接口的 实例 需要 openSession 产生 SqlSession 示例 根据 SqlSession 实例执行事务 最后要提交事务和关闭 SqlSession 通常都不关闭 SqlSessionFactory 在大点的 项目中 都需要用到二级缓存 所以不关闭 2 2 4 2 2 4 SpringSpring 框架框架 Spring 在实际项目是以 ApplicationContext xml 配置文件文件形式存在 当 加载 ApplicationContext xml 后会产生 ApplicationContext 容器 在该容器中 放置所有管理的对象 这些对象默认都是单例的 通过 Scope 属性可以设置对象是 否单例 对象中如果还有对象就继续进行依赖注入 其实 Spring 主要核心包括 IoC 和 AOP 14 IOC 叫做控制反转 所有对象实例化的过程转交给 Spring IoC 组件 不用程 序员手动 new 对象 目前主流编程语言都是面向对象语言 经常处理对象和对象之 间的关系 引入 Spring IoC 我们也可以叫 DI 可以把我们的关注点从对象之间关 系释放出来 我们只关注业务逻辑 IoC 实际就解析 XML 或注解后通过反射机制加 载对应的类 然后进行实例化或注入里面常用的设计模式包含 单例 工厂等 AOP 是面向切面编程 把传统程序执行过程看成纵向执行过程 每个方法当作 一个点 基于这些点可以进行增强处理 形成了横向的切面 包含了原有方法和增 强方法 不改变原有代码结构 添加额外功能 常用 AOP 功能有事务管理 权限处 理 日志打印等 其实 Spring 的 AOP 就是对代理设计模式的一个实现 2 3 商城开发工具 2 3 1 2 3 1 EcplipseEcplipse 及其插件及其插件 Ecplipse 介绍 Ecplipse 是著名的跨平台自由集成开发环境 IDE 它本 身是一个框架平台 支持众多功能 有很强的灵活性 许多软件开发商以 Ecplipse 开发自己的 IDE 如 MyEcplipse Eclipse 最早由 IBM 公司开发 2011 年贡献给开源社区 现在它由非盈利软体供应商联盟 Eclipse 基金会 Eclipse Foundation 管理 Eclipse 常用插件介绍 Simple Properties editor 一个简单实用的文本编辑器插件 可以直接将 ANSII 汉字或者我们比较熟悉 的语种 如在 eclipse 里面我们通常会实用 properties 属性文件 但是如果我 们写的是汉字它会转化成 ANsII 编码的格式 使用此插件可以直接将里面的编码 转换成我们想要的汉字 Eclipse Class Decompiler 整合了目前最好的 2 个反编译工具 Jad 和 JD Core 并且和 Eclipse Class Viewer 无缝集成 能够方便的使用插件查看类库源码 以及采用本插件进行 Debug 调试 15 Eclipse Tomcat Plugin 当我们在进行多个 web 项目开发或者进行学习的时候 jar 包是一个麻烦的 事情 我们需要频繁的去复制粘贴 jar 这不仅浪费了大量的时间 而且也占用 了较大的存储空间 而 tomcat 自定义类加载器就会起到很大的作用 这是 tomcat 的一个扩展点 而且 tomcat plugin 也使用这个扩展点自定义了一个 loder 我们以后就只需要导 jar 就行了不需要额外的再复制粘贴 jar 2 3 2 2 3 2 TomcatTomcat 服务器服务器 Tomcat 服务器是一个免费的开放源代码的 WEB 应用服务器 Tomcat 是 Apache 软件基金会 Apache Software Foundation 的 Jakarta 项目中的核心项 目 由 Apache Sun 和其他一些公司及个人共同开发而成 因为 Tomcat 技术先 进 性能稳定 而且免费 因而深受 Java 爱好者的喜爱并得到了很多软件开发 商的认可 是目前比较流行的 WEB 应用服务器 2 3 3 2 3 3 MySQLMySQL 数据库数据库 MySQL 是一个小型关系型数据库管理系统 开发者为瑞典的 MysqlLab 公司 在 2008 年被 Sun 收购 MySQL 被广泛地应用在 Internet 上的中小型网站 由于 体积小 速度快 总体拥有成本低 尤其是开放源代码这一特点 许多小型公司 为了减低成本而选择 MySQL 作为网站数据库 但是后来他又被 Oracl 收购 它以 后的发展或者收费与否还要看 Oracl 公司如何决断了 2 3 4 2 3 4 RedisRedis 数据库数据库 Redis 是一个开源的 先进的 key value 存储 并用于构建高性能 可扩展 的 WEB 应用程序的完美解决方案 Redis 从它的许多竞争者中脱颖而出主要有以 下三个主要特点 1 数据库完全在内存中 使用磁盘仅用于持久性 2 有丰富的数据类型 3 使用简单方便处理速度快 16 3 商城系统项目需求分析 3 1 目标 基于 JavaEE 平台的网上商城是依托于目前主流的 SSM 框架搭建而成 主要 包括两个方面 一是后台管理 为管理员提供一些增删改的权限 改变手工记账 效率慢 成本高的现状 而前台方面 给用户看的主要包括用户的登陆 购物车 的实现等 减少用户外出购买商品所需时间 商城需要实现的具体目标包括 1 购物商城台中实现管理员对商品的增加 上架 下架图片的插入 对商品 内容的管理包括对商品类目的增加 对商品规格参数的修改增加 对大广告位的 插入 对首页常用图片的插入 2 购物商城中前台部分包括实现对商品整个目录结构的展示 用户单点登录 商品展示 商品详情以及规格参数的展示 商品购买 购物车中商品的增加删除 修改 3 2 商城业务流程图 3 2 1 3 2 1 商城后台业务流程图商城后台业务流程图 网站后台系统是商城的一个核心 通过后台系统管理员可以对仓库的商品进 行上架 下架 新增的操作 以前这些都是人工操坐 人工记录 现在则改为由 数据库进行一个记录大大提高了安全性 提高了工作效率 降低了运作成本 如 图 3 1 是商城的后台业务流程图 17 图 3 1 商城前台流程图概况 3 2 2 3 2 2 商城前台务流程图商城前台务流程图 商城前台是为客户准备的页面 包括会员管理 商品购买 购物车 商品结 算 现在使用这个购买平台可以留住购买者 利用会员等级制度激发用户的购买 力 使用数据库来保存用户的购买记录 由此来分析用户喜欢那些商品 那些商 品高买的比较少 可以最为业务分析的依据 单点登录 登录一次其他地方就不 用再登录 由此改善用户体验 商城前台流程图如图 3 2 18 图 3 2 商城后台流程图概 19 4 商城系统详细设计及实现 4 1 商城总体开发架构 本商城采用 Ecplipse 搭建商城项目 EasyUI 搭建后台框架 Git 作为版本 管理 使用 Maven 搭建分布式项目并管理架包 使用 Linux 部署项目 使用 Mysql 作为持久化存储介质 使用 Reidis 作为缓存数据库提高查询速度 使用 Solr 作为全文搜索引擎 商城总体开发结构图如图 4 1 20 图 4 1 商城项目架构图 4 2 商城框架实现 4 2 1 4 2 1 SpringSpring 整合整合 SpringMVCSpringMVC SPRINGMVC 作为视图层的一个框架与 SPRING 配合使用主要有以下步骤 1 配 置包扫描器使 SPRING 可以自动扫描类 不用写额外的代码进行识别 2 驱动注解 给 springmvc 提供了数据绑定的功能 21 3 视图解析器 在控制器处理结束并返回模型和视图名之后 Spring 会依 次调用 Spring 容器中所注册的视图解析器 来查找符合条件的视图 4 springmvc 自动加载静态资源 这样做的好处是 不必每次请求的时候都 需要来加载 而且在某种情况下 这个静态资源不适用这个会出错 22 4 2 2 4 2 2 SpringSpring 整合整合 MybatisMybatis Mybatis 作为持久层与 SPRING 整合主要有以下步骤 1 扫描类可以使注解正常使用 2 创建数据源 连接数据库 3 创建 SqlSessionFactory 实例 使我们可以正常使用这个实例对数据库进行操 作 4 配置事务管理器 5 配置声明式事物 以那些方法会被拦截 6 配置 aop 切面 使声明式事物开始生效 7 配置 mapper 扫描器 这样就可以只需要写接口不用写实现类使 dao 层简化 提高开发效率 24 4 2 3 4 2 3 SpringSpring 整合整合 JedisJedis Spring 与 jedis 结合使用主要有两方面的配置 1 连接池的配置 Redis 集群的配置 25 以下还有四个配置服务器地址需要配置 配置方法如上一样 4 3 商城主要功能模块实现 由于使用的是框架技术所以我们使用的依然是 mvc 三层模型设计 所以每个 功能实现也是分层次的 POJO 层 Service 层 Sontroller 层 Dao 层 以下介绍 的时候主要介绍 service Control 层代码设计 4 3 1 4 3 1 商城后台商品管理实现商城后台商品管理实现 1 商城商品管理主要就是商品的增删该查以及其商品的展示 商品展示 26 图 4 1 商城后台页面操作展示 Service 层代码如下其中使用到了 pagehelp 这个分页插件 private TbItemParamMapper itemParamMapper public EasyUIDataGrid showTbItem int page int rows EasyUIDataGrid dataGrid new EasyUIDataGrid PageHelper startPage page rows List list tbItemMapper selectByExample new TbItemExample PageInfo info new PageInfo list dataGrid setRows info getList dataGrid setTotal info getTotal return dataGrid Controller 层代码如下 RequestMapping item list ResponseBody public EasyUIDataGrid show int page int rows return this tbItemService showTbItem page rows 商品的上架 下架 编辑 删除 27 图 4 2 商城后台商品的增删 下 上架展示 Service 层代码如下 Override public void upStatus String ids byte status throws Exception TbItem record new TbItem List list ItemSpiltUtil idSplit ids for Long long1 list record setStatus status record setId long1 tbItemMapper updateByPrimaryKeySelective record Controller 层代码其中使用到了封装的思想 将同样的代码封装起来 因为 Service 层的代码都一样所以使用了一个来判断简化了代码的开发 是程序看起 来更加健壮 RequestMapping rest item type ResponseBody public EgoResult updataStatus PathVariable String type String ids 28 EgoResult egoResult new EgoResult Byte status null if delete equalsIgnoreCase type status byte 3 else if instock equalsIgnoreCase type status byte 2 else if reshelf equalsIgnoreCase type status byte 1 try tbItemService upStatus ids status egoResult setStatus 200 catch Exception e e printStackTrace egoResult setStatus 400 return egoResult 4 3 2 4 3 2 商城后台内容管理实现商城后台内容管理实现 商城内容管理对内容的增加 重命名如图 4 3 所示 29 图 4 3 商城后台内容管理 Service 层代码 Resource TbContentCategoryMapper tbContentCategoryMapper Override public List selById long id TbContentCategoryExample example new TbContentCategoryExample example createCriteria andParentIdEqualTo id andStatusEqualTo 1 List list tbContentCategoryMapper selectByExample example List easyUiTreeList new ArrayList for TbContentCategory tbContentCategory list EasyUiTree ea new EasyUiTree ea setId tbContentCategory getId ea setText tbContentCategory getName ea setState tbContentCategory getIsParent closed open 30 easyUiTreeList add ea return easyUiTreeList Override public EgoResult insertByid long parentId String name EgoResult egoResult new EgoResult TbContentCategory tbContentCategory new TbContentCategory tbContentCategory setCreated new Date tbContentCategory setId IDUtils genItemId tbContentCategory setIsParent false tbContentCategory setName name tbContentCategory setParentId parentId tbContentCategory setSortOrder 1 tbContentCategory setStatus 1 tbContentCategory setUpdated new Date TbContentCategoryExampleexample new TbContentCategoryExample example createCriteria andNameEqualTo name int count this tbContentCategoryMapper countByExample example 31 if count 0 TbContentCategory parent new TbContentCategory parent setId parentId parent setIsParent true int re this tbContentCategoryMapper updateByPrimaryKeySelective parent if re 0 egoResult setStatus 200 else egoResult setStatus 400 else egoResult setStatus 400 else egoResult setStatus 400 return egoResult 32 4 3 3 4 3 3 商城前台单点登录的实现商城前台单点登录的实现 单点登录原理简述 要想实现 Cookie Redis 总得有个 Cookie 吧 所以第一步要先创建一个 Cookie 然后 Cookie 起个名字 因为我们要判断浏览器端是否存在这个 cookie 所以说需要专门写一个 js 这个 js 是前台写的 跟后续其他的需要登录 的网页相关联 其他的网页要引入这个 js 当判断 Cookie 有了之后就会将这个 js 就会获取第一个 js 里面的 Cookie 值 之后就可以从 Redis 查询数据了 Cookie 的值为 UUid 然后将这个 UUid 作为 key 存储到 Redis 中他的值为用户信 息 同时设置 Redis 的失效时间 每一个需要用户信息的页面都要有两个 js 上面提到的 第一个 js 要判断是 否存在这个 Cookie 第二个 js 是先获取 Cookie 里面的值然后发送一个 Jsonp 请 求 从 Redis 里面获取 然后进行相应的展现 Rdis Cookie 就是对 Cookie Jsessin 的模拟 单点登录 service 层代码如下 Resource private TbUserMapper usermapper Resource private JedisDao dao Override 当用户登录的时候要创建 Cookie 存值为 UUid UUid 将最为 Redis 的 key 内存 User 对象 Usr 对象经过工具类转换 Public EgoResultlogin TbUsert b HttpServletRequest req HttpServletResponse res 33 tb setPassword DigestUtils md5DigestAsHex tb getPassword getBytes EgoResult ego new EgoResult TbUserExample example new TbUserExample example createCriteria andUsernameEqualTo tb getUsername andPa sswordEqualTo tb getPassword List list usermapper selectByExample example if list null dao set user uuid JsonUtils objectToJson list get 0 System out println list get 0 dao expire user uuid 30 60 CookieUtils setCookie req res TT TOKEN uuid 30 60 ego setStatus 200 ego setData uuid else ego setStatus 400 return ego public EgoResult getTokenResult String token HttpServletRequest 34 req HttpServletResponse res EgoResult ego new EgoResult String string dao get user token ego setStatus 200 ego setData JsonUtils jsonToPojo string TbUser class dao expire user token 30 60 CookieUtils setCookie req res TT TOKEN token 30 60 return ego 注册页面注册成功之后会跳转到登录页面而登录页面 登录地址的参数 将带 有此次相应结果的 rfferer 参数就可以成功跳回到登录之前的页面 RequestMapping user showRegister public String resigin RequestHeader name Referer String referer Model model model addAttribute url referer return register RequestMapping user check countent type ResponseBody public EgoResult check PathVariable String countent PathVariable int type 35 return userService check countent type RequestMapping user register ResponseBody public EgoResult register TbUser u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论