准备重新开始写一遍此项目,发现有时候光看会有很多细节没有注意到,或者转眼就忘了,所以以后每天都把今天学的东西都写下来,记录每一天的成长!
1.淘淘商城的技术选型
数据库:mysql
Dao层:mybatis,数据库连接池:druid
Service层:spring
表现层:springmvc,jstl(jsp标签库),easyUI(后台框架),jsp(前端),freemarker(还不知道干嘛用的)
缓存:redis
搜索:solr
图片服务器:FastDFS(分布式文件系统)
反向代理服务器:nginx
web服务器:tomcat
定时任务管理:Quartz
工程管理:maven
技术选型基本上告诉了我们要做哪些功能,可以用来提示自己.
2.后台管理系统的搭建
网站一般分前台和后台,前台给用户看,后台管理人员使用;两者之间的关系并不是很紧密,所以我们可以分成两个web工程来做.
我们使用maven来管理工程,mavn主要做两件事:1.管理依赖jar包 2.构建项目
maven创建工程的注意事项:
1.创建一个聚合工程:每个模块都是一个jar包,这些jar包可以被其他系统依赖(很有必要,这样前后台可以共用这些模块)
2.工程结构:
taotao-parent(管理jar包版本,为公司级别的父工程,保证所有项目的jar包版本一致) 打包方式:pom(父工程为聚合工程,必须采用此方式)
------taotao-common(把通用工具类打包,这样所有工程都能用) 打包方式:jar,继承父工程
------taotao-manager(聚合工程,下面的模块都会在其pom下添加依赖) 打包方式:pom(聚合工程),继承父工程,依赖common
------taotao-manager-pojo 模块类型:maven module 打包方式:jar 不用依赖
------taotao-manager-dao(放逆向工程生成的mapper和接口) 模块类型同上 打包方式:jar 依赖pojo
------taotao-manager-service 模块类型同上 打包方式:jar 依赖dao
------taotao-manager-web 模~同上 打包方式:war(一个聚合工程里至少有一个war包,把其他的jar包都整合进去),依赖service(还有别的,它依赖的最多)
3.配置各个项目的pom.xml
4.在taotao-manager-web的src-main-webapp下新建WEB-INF文件夹,在里面新建web.xml(必须由,否则报错)
5.在taotao-manager的pom.xml添加tomcat插件(运行的是聚合工程,所以在聚合工程下配置)
6.运行tomcat需使用tomcat7.run命令
7.测试一下上述配置是否成功,在webapp下新建index.jsp文件,内容随意(注意不是放在WEB-INF下,WEB-INF下的文件客户端无法读取)
浏览器输入http://localhost:8080/ ,显示index.jsp内容,到这里后台管理系统就基本搭建起来啦!
3.使用SVN管理项目
因为真实项目开发中,都是团队作战,大家各自分工负责部分代码,所以需要用到项目管理软件,来将大家每天写的代码汇总和更新
具体流程:
1.由项目经理建立好仓库,可以用visualSVNServer来管理(这里由我们自己来建)
2.我们作为项目组新人,第一件事就是从仓库将项目代码下载到本地,这个过程叫checkout
maven的选项-->enable dependency managerment转成maven工程
4.聚合文件(taotao-manager)下载下来发现不是想要的结构,右键taotao-manager-import-maven-existing maven project
-next,勾选add projects to working set,然后finish就好了
5.我们每天的工作就是在本地更新代码,等到下班前需要将今天代码commit,不过在提交前需要先与资源库同步,以免与他人提交的代码起冲突
4.搭建SSM框架环境
jar包之前都用maven导好了,所以只需要配置好配置文件,这些配置文件应该放哪呢?不管哪层的配置文件,都应该放在taotao-manager-web下,因为聚合工程下的模块都会被打成jar包扔进war包中
1.整合dao层(即整合mybatis和spring)
需要的jar包
1.mybatis的jar包
2.Mysql的数据库驱动
3.数据库连接池
4.mybatis和spring的整合包
5.spring的jar包
配置文件
1.mybatis的sqlMapConfig
2.Spring的applicationContext-dao.xml
----数据源
----数据源配置文件扫描器(context:property-placeholder)
----数据库连接池
----配置sqlsessionfactorybean(mybatis和spring整合包中的) (property需要数据源,sqlmapconfig配置文件)
----配置mapperScannerConfigurer
2.整合Service层
需要的jar包
1.spring的jar包
配置文件
1.applicationContext-service.xml
----配置包扫描器(context:component-scan),扫描所有带@service注解的类
2.application-trans.xml
----配置一个datasourcetransactionmanager(property需要数据源)
----配置tx
----配置切面
3.整合表现层
需要的jar包
1.springmvc的jar包
2.spring的jar包
配置文件
1.springmvc.xml
----配置HandlerMapping
----配置HandlerAdapter(这两个合并用mvc:annotation-driven来代替)
----配置viewResolver(property需要prefix,suffix)
----包扫描器,扫描@controller注解
2.web.xml
----spring容器初始化(context-param)
----配置contextLoaderListener
----配置CharacterEncodingFilter
4.通过逆向工程生成pojo和mapper
导入项目,修改配置文件就好了.
5.测试搭建好的项目
假设有一个需求:通过商品id,查到商品信息
1.dao层
查询tb_item表,根据商品id查询,可以使用逆向工程生成的代码
2.service层
接收商品id,调用mapper查询商品信息,返回商品的pojo.
参数:Long itemId
返回值:TbItem
3.controller层
接收一个商品id,调用service,返回一个商品的pojo,直接把pojo响应给客户,需要返回一个json数据,需要用到@ResponseBody注解
url:/item/{itemId},响应一个tbItem
4.解决mapper映射文件不拷贝的问题
默认只复制resource下的映射文件,所以需要修改taotao-manager-dao工程的pom文件,将我们实际放mapper的地址加进来
正常这里就应该能运行起来了,浏览器访问时带上商品id就能展示商品信息,可是碰到以下错误
org.springframework.beans.factory.BeanCreationException
按网上说的看是不是配置文件错了,或者没加注解,找了一圈都是对的,这时候看到这个帖子,里面提到了mapper.xml文件的命名空间问题,才想起来,我是在其他项目中用逆向工程生成的mapper,所以命名空间可能是不对的,而且这个还不会报错;点开看果然,命名空间不对,重新改正了过来,可是发现还是有错
又继续上网查,看到一个帖子写web.xml里的配置文件路径需要重新设置,于是回过头看视频,发现视频里的applicationContext-dao.xml是放在spring中的,我是放在mybatis下的,所以按他的配置web.xml就会扫不到applicationContext-dao.xml;于是把这个文件移到web.xml,终于成功了,要哭了~_~''
到这里,今天的搭建工作就完成了,复习一下吧~!